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.
This commit is contained in:
Patrik Flykt 2014-06-25 12:36:55 +03:00
parent 836cf0905c
commit 1873a3d344

View file

@ -236,11 +236,19 @@ static int link_stop_clients(Link *link) {
}
if (link->network->dhcp6) {
assert(link->dhcp6_client);
assert(link->icmp6_router_discovery);
k = sd_dhcp6_client_stop(link->dhcp6_client);
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_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;
}
}