summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2014-06-25 12:36:55 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2014-06-26 16:09:50 +0300
commit1873a3d344042e818d2a5762c0ebfc3823c8f84d (patch)
tree2beb78ee65a446934c579c155b76df1ffa0c5d9d
parent836cf0905c4a8fe3358d6b0e005192d5ee51d3e2 (diff)
networkd: Properly stop router solicitation and DHCPv6 client
When a link fails or looses carrier, always stop ongoing router solicitation and any DHCPv6 client that may be running.
-rw-r--r--src/network/networkd-link.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 44147b2c0d..9296a594db 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;
}
}