From: Kevin P. Fleming Date: Sat, 6 Feb 2021 15:58:43 +0000 (-0500) Subject: network: Delay addition of IPv6 Proxy NDP addresses X-Git-Tag: v248-rc1~184 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=12f7469bbe0142d7f360a29ca2b407ce7f5ff096;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 549f5f1f82e..c1883208720 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 ccefb46cbc6..aacfc31c529 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;