From e1083519bc9bab114e78c09c454e72a5b70da987 Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Sat, 6 Feb 2021 10:58:43 -0500 Subject: [PATCH] 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 --- src/network/networkd-address.c | 11 +++++++++++ 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 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; -- 2.30.2