]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: do not configure static configs more than once simultaneously 17921/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 11 Dec 2020 05:39:46 +0000 (14:39 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 11 Dec 2020 05:39:46 +0000 (14:39 +0900)
src/network/networkd-address.c
src/network/networkd-mdb.c
src/network/networkd-neighbor.c
src/network/networkd-nexthop.c
src/network/networkd-route.c
src/network/networkd-routing-policy-rule.c
src/network/networkd-sriov.c
src/network/tc/tc.c

index 82daa1135ea82eb4ba7fe8e323d5637e4d99c57d..9e98b77720aa01945634acfb59946f5ada0f5a74 100644 (file)
@@ -1004,6 +1004,11 @@ int link_set_addresses(Link *link) {
                 return 0;
         }
 
+        if (link->address_messages != 0) {
+                log_link_debug(link, "Static addresses are configuring.");
+                return 0;
+        }
+
         ORDERED_HASHMAP_FOREACH(ad, link->network->addresses_by_section) {
                 bool update;
 
index 0300dced621b84b87f448f987f4523983a1c333d..7007a8202dc0af207963bb3f75c6b4762d780213 100644 (file)
@@ -199,6 +199,11 @@ int link_set_bridge_mdb(Link *link) {
         assert(link);
         assert(link->manager);
 
+        if (link->bridge_mdb_messages != 0) {
+                log_link_debug(link, "MDB entries are configuring.");
+                return 0;
+        }
+
         link->bridge_mdb_configured = false;
 
         if (!link->network)
index c805d52cf3e8256ee0f994a900e843ad33156c8b..847ecd27c38abd083566ee0e136775d22c85b916 100644 (file)
@@ -294,6 +294,11 @@ int link_set_neighbors(Link *link) {
         assert(link->network);
         assert(link->state != _LINK_STATE_INVALID);
 
+        if (link->neighbor_messages != 0) {
+                log_link_debug(link, "Neighbors are configuring.");
+                return 0;
+        }
+
         link->neighbors_configured = false;
 
         HASHMAP_FOREACH(neighbor, link->network->neighbors_by_section) {
index 4a09b4c91268739d87b26383ef0d0a3b1dae4399..13f532763d119ba664f57e942d79c86cd90b63be 100644 (file)
@@ -312,6 +312,11 @@ int link_set_nexthop(Link *link) {
         assert(link);
         assert(link->network);
 
+        if (link->nexthop_messages != 0) {
+                log_link_debug(link, "Nexthops are configuring.");
+                return 0;
+        }
+
         link->static_nexthops_configured = false;
 
         HASHMAP_FOREACH(nh, link->network->nexthops_by_section) {
index de7c232f1556d1acfa9efc877da37e9b8ac4df34..ccacfacf3dd577dc1b4f73be9af65a286c0c4e1d 100644 (file)
@@ -1237,6 +1237,11 @@ int link_set_routes(Link *link) {
                  * the addresses now, let's not configure the routes either. */
                 return 0;
 
+        if (link->route_messages != 0) {
+                log_link_debug(link, "Static routes are configuring.");
+                return 0;
+        }
+
         r = link_set_routing_policy_rules(link);
         if (r < 0)
                 return r;
index a31fb31fa4804b5c3333ce110c2480f6b32c08ca..06c597d14712a383c2ec283cc7c17ecaade68d18 100644 (file)
@@ -663,6 +663,11 @@ int link_set_routing_policy_rules(Link *link) {
         assert(link);
         assert(link->network);
 
+        if (link->routing_policy_rule_messages != 0) {
+                log_link_debug(link, "Routing policy rules are configuring.");
+                return 0;
+        }
+
         link->routing_policy_rules_configured = false;
 
         HASHMAP_FOREACH(rule, link->network->rules_by_section) {
index 68f43b5ce63228f895cc23e16b6e43b67e235766..92c00d79e039f93c3d86393d58c6ef63771461ce 100644 (file)
@@ -230,8 +230,15 @@ int link_configure_sr_iov(Link *link) {
         SRIOV *sr_iov;
         int r;
 
+        assert(link);
+        assert(link->network);
+
+        if (link->sr_iov_messages != 0) {
+                log_link_debug(link, "SR-IOV is configuring.");
+                return 0;
+        }
+
         link->sr_iov_configured = false;
-        link->sr_iov_messages = 0;
 
         ORDERED_HASHMAP_FOREACH(sr_iov, link->network->sr_iov_by_section) {
                 r = sr_iov_configure(link, sr_iov);
index c32b040919926395efc92b0b0c31e8dbdb518946..0cd46cf6339fffa01334d49ce230c221679409e7 100644 (file)
@@ -39,8 +39,15 @@ int link_configure_traffic_control(Link *link) {
         TrafficControl *tc;
         int r;
 
+        assert(link);
+        assert(link->network);
+
+        if (link->tc_messages != 0) {
+                log_link_debug(link, "Traffic control is configuring.");
+                return 0;
+        }
+
         link->tc_configured = false;
-        link->tc_messages = 0;
 
         ORDERED_HASHMAP_FOREACH(tc, link->network->tc_by_section) {
                 r = traffic_control_configure(link, tc);