When a link fails or looses carrier, always stop ongoing router
solicitation and any DHCPv6 client that may be running.
---
 src/network/networkd-link.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 44147b2..9296a59 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -236,11 +236,19 @@ static int link_stop_clients(Link *link) {
         }
 
         if (link->network->dhcp6) {
-                assert(link->dhcp6_client);
+                assert(link->icmp6_router_discovery);
+
+                if (link->dhcp6_client) {
+                        k = sd_dhcp6_client_stop(link->dhcp6_client);
+                        if (k < 0) {
+                                log_warning_link(link, "Could not stop DHCPv6 
client: %s", strerror(-r));
+                                r = k;
+                        }
+                }
 
-                k = sd_dhcp6_client_stop(link->dhcp6_client);
+                k = sd_icmp6_nd_stop(link->icmp6_router_discovery);
                 if (k < 0) {
-                        log_warning_link(link, "Could not stop DHCPv6 client: 
%s", strerror(-r));
+                        log_warning_link(link, "Could not stop ICMPv6 router 
discovery: %s", strerror(-r));
                         r = k;
                 }
         }
-- 
1.9.1

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to