summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin P. Fleming <kevin@km6g.us>2021-02-06 10:58:43 -0500
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-02-09 19:56:56 +0900
commit12f7469bbe0142d7f360a29ca2b407ce7f5ff096 (patch)
treefe590e3615c36196234e2af5fa8da821237e2e87
parent5f33b2300b1ce7749a686dd1699ea0818b45857c (diff)
downloadsystemd-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.c11
-rw-r--r--src/network/networkd-link.c5
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;