diff options
author | Kevin P. Fleming <kevin@km6g.us> | 2021-02-06 10:58:43 -0500 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-02-09 19:56:56 +0900 |
commit | 12f7469bbe0142d7f360a29ca2b407ce7f5ff096 (patch) | |
tree | fe590e3615c36196234e2af5fa8da821237e2e87 | |
parent | 5f33b2300b1ce7749a686dd1699ea0818b45857c (diff) | |
download | systemd-12f7469bbe0142d7f360a29ca2b407ce7f5ff096.tar.gz |
network: Delay addition of IPv6 Proxy NDP addresses
Setting of IPv6 Proxy NDP addresses must be done at the same
time as static addresses, static routes, and other link attributes
that must be configured when the link is up. Doing this ensures
that they are reconfigured on the link if the link goes down
and returns to service.
-rw-r--r-- | src/network/networkd-address.c | 11 | ||||
-rw-r--r-- | src/network/networkd-link.c | 5 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 549f5f1f82..c188320872 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -9,6 +9,7 @@ #include "netlink-util.h" #include "networkd-address-pool.h" #include "networkd-address.h" +#include "networkd-ipv6-proxy-ndp.h" #include "networkd-manager.h" #include "networkd-network.h" #include "parse-util.h" @@ -911,6 +912,7 @@ int address_configure( static int static_address_ready_callback(Address *address) { Address *a; Link *link; + int r; assert(address); assert(address->link); @@ -935,6 +937,10 @@ static int static_address_ready_callback(Address *address) { link->addresses_ready = true; + r = link_set_ipv6_proxy_ndp_addresses(link); + if (r < 0) + return r; + return link_set_routes(link); } @@ -1059,6 +1065,11 @@ int link_set_addresses(Link *link) { if (link->address_messages == 0) { link->addresses_configured = true; link->addresses_ready = true; + + r = link_set_ipv6_proxy_ndp_addresses(link); + if (r < 0) + return r; + r = link_set_routes(link); if (r < 0) return r; diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index ccefb46cbc..aacfc31c52 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -29,7 +29,6 @@ #include "networkd-dhcp6.h" #include "networkd-fdb.h" #include "networkd-ipv4ll.h" -#include "networkd-ipv6-proxy-ndp.h" #include "networkd-link-bus.h" #include "networkd-link.h" #include "networkd-lldp-tx.h" @@ -2036,10 +2035,6 @@ int link_configure(Link *link) { if (r < 0) return r; - r = link_set_ipv6_proxy_ndp_addresses(link); - if (r < 0) - return r; - r = link_set_mac(link); if (r < 0) return r; |