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: archive/raspbian/247.3-7+rpi1+deb11u7^2~71 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c9562fcd3ddcdf4878fcca49a5e1695f22418ce9;p=systemd.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. (cherry picked from commit 12f7469bbe0142d7f360a29ca2b407ce7f5ff096) Fixes https://github.com/systemd/systemd-stable/issues/89 (cherry picked from commit d5ea028e46673ef627843e90c3d01ebac8fe0e62) Gbp-Pq: Name network-Delay-addition-of-IPv6-Proxy-NDP-addresses.patch --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 961b2483..ef47af46 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" @@ -903,6 +904,7 @@ int address_configure( static int static_address_ready_callback(Address *address) { Address *a; Link *link; + int r; assert(address); assert(address->link); @@ -927,6 +929,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); } @@ -1046,6 +1052,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 81203436..e8a72233 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -28,7 +28,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" @@ -2056,10 +2055,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;