blob: c6836697fced90f46f0d11318714e54be0a0db16 [file] [log] [blame]
From a24d0d95df1929912c0f767f5ab1353552464c84 Mon Sep 17 00:00:00 2001
From: "William A. Kennington III" <william@wkennington.com>
Date: Fri, 30 Nov 2018 15:54:45 -0800
Subject: [PATCH 1/3] 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.
(cherry picked from commit c42ff3a1a7bfea66dc4655096c79bd481159091b)
Upstream-Status: Backport
---
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 4afcf843bd..0faf337069 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -728,6 +728,9 @@ void link_check_ready(Link *link) {
if (!link->network)
return;
+ if (!link->addresses_configured)
+ return;
+
if (!link->static_routes_configured)
return;
@@ -835,6 +838,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);
@@ -904,6 +909,7 @@ static int address_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userda
if (link->address_messages == 0) {
log_link_debug(link, "Addresses set");
+ link->addresses_configured = true;
link_enter_set_routes(link);
}
@@ -1204,9 +1210,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 7e22dfd504..2f37cc1598 100644
--- a/src/network/networkd-link.h
+++ b/src/network/networkd-link.h
@@ -80,6 +80,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.20.1.97.g81188d93c3-goog