]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: Track address configuration
authorWilliam A. Kennington III <william@wkennington.com>
Fri, 30 Nov 2018 23:54:45 +0000 (15:54 -0800)
committerWilliam A. Kennington III <william@wkennington.com>
Mon, 10 Dec 2018 00:54:37 +0000 (16:54 -0800)
This will be useful to assert that our static route configuration always
happens after address configuration once our individual configure state
goes away.

src/network/networkd-link.c
src/network/networkd-link.h

index 86f2e6dca9c1fc00c71394aaf1d2fbd85fff5739..240ab7f37158336a288d78d8b4221516d19f8c6a 100644 (file)
@@ -741,6 +741,9 @@ void link_check_ready(Link *link) {
         if (!link->network)
                 return;
 
+        if (!link->addresses_configured)
+                return;
+
         if (!link->static_routes_configured)
                 return;
 
@@ -854,6 +857,8 @@ static int link_enter_set_routes(Link *link) {
 
         assert(link);
         assert(link->network);
+        assert(link->addresses_configured);
+        assert(link->address_messages == 0);
         assert(link->state == LINK_STATE_SETTING_ADDRESSES);
 
         (void) link_set_routing_policy_rule(link);
@@ -910,6 +915,7 @@ static int address_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link)
 
         if (link->address_messages == 0) {
                 log_link_debug(link, "Addresses set");
+                link->addresses_configured = true;
                 link_enter_set_routes(link);
         }
 
@@ -1181,9 +1187,10 @@ static int link_enter_set_addresses(Link *link) {
                 log_link_debug(link, "Offering DHCPv4 leases");
         }
 
-        if (link->address_messages == 0)
+        if (link->address_messages == 0) {
+                link->addresses_configured = true;
                 link_enter_set_routes(link);
-        else
+        else
                 log_link_debug(link, "Setting addresses");
 
         return 0;
index 3fdfa55b25401052f83e4293cff8b665b8555b5d..92ce7a2ec99ce64b19c2dfecb860db58c1ff57aa 100644 (file)
@@ -82,6 +82,8 @@ typedef struct Link {
         Set *routes;
         Set *routes_foreign;
 
+        bool addresses_configured;
+
         sd_dhcp_client *dhcp_client;
         sd_dhcp_lease *dhcp_lease;
         char *lease_file;