]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: Delay addition of IPv6 Proxy NDP addresses
authorKevin P. Fleming <kevin@km6g.us>
Sat, 6 Feb 2021 15:58:43 +0000 (10:58 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 12 Mar 2021 16:39:13 +0000 (17:39 +0100)
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

src/network/networkd-address.c
src/network/networkd-link.c

index 961b24838553270adbb4934f8826bf0dd127a08b..ef47af4628e9416f8d0f83a41d8569e260285175 100644 (file)
@@ -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;
index e0b64500812848f08bc417e0229aa7fde59c4629..3bfe636691223e55477334d3fd55b8625ae7e33a 100644 (file)
@@ -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"
@@ -2070,10 +2069,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;