chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
networkd: Properly stop router solicitation and DHCPv6 client
[elogind.git]
/
src
/
network
/
networkd-link.c
diff --git
a/src/network/networkd-link.c
b/src/network/networkd-link.c
index 5ab7aa7d19f7000b2329d5cbba8497581d37694e..9296a594dbaa60e6cadbf64ee390c7129011b0b1 100644
(file)
--- a/
src/network/networkd-link.c
+++ b/
src/network/networkd-link.c
@@
-124,8
+124,8
@@
static void link_free(Link *link) {
free(link->lease_file);
sd_ipv4ll_unref(link->ipv4ll);
free(link->lease_file);
sd_ipv4ll_unref(link->ipv4ll);
-
sd_dhcp6_client_unref(link->dhcp6_client);
sd_dhcp6_client_unref(link->dhcp6_client);
+ sd_icmp6_nd_unref(link->icmp6_router_discovery);
hashmap_remove(link->manager->links, &link->ifindex);
hashmap_remove(link->manager->links, &link->ifindex);
@@
-236,11
+236,19
@@
static int link_stop_clients(Link *link) {
}
if (link->network->dhcp6) {
}
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) {
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;
}
}
r = k;
}
}
@@
-871,7
+879,7
@@
static int link_set_mtu(Link *link, uint32_t mtu) {
return r;
}
return r;
}
- link_
un
ref(link);
+ link_ref(link);
return 0;
}
return 0;
}