summaryrefslogtreecommitdiffstats
path: root/debian/patches/network-Delay-addition-of-IPv6-Proxy-NDP-addresses.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/network-Delay-addition-of-IPv6-Proxy-NDP-addresses.patch')
-rw-r--r--debian/patches/network-Delay-addition-of-IPv6-Proxy-NDP-addresses.patch86
1 files changed, 86 insertions, 0 deletions
diff --git a/debian/patches/network-Delay-addition-of-IPv6-Proxy-NDP-addresses.patch b/debian/patches/network-Delay-addition-of-IPv6-Proxy-NDP-addresses.patch
new file mode 100644
index 0000000..055c598
--- /dev/null
+++ b/debian/patches/network-Delay-addition-of-IPv6-Proxy-NDP-addresses.patch
@@ -0,0 +1,86 @@
+From: "Kevin P. Fleming" <kevin@km6g.us>
+Date: Sat, 6 Feb 2021 10:58:43 -0500
+Subject: 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)
+---
+ 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 961b248..ef47af4 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 8120343..e8a7223 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;