From c42ff3a1a7bfea66dc4655096c79bd481159091b Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Fri, 30 Nov 2018 15:54:45 -0800 Subject: [PATCH] networkd: Track address configuration 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 | 11 +++++++++-- src/network/networkd-link.h | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 86f2e6d..240ab7f 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -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; diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index 3fdfa55..92ce7a2 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -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; -- 2.7.4