summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/network/networkd-link.c2
-rw-r--r--src/network/networkd-link.h2
-rw-r--r--src/network/networkd-manager.c3
3 files changed, 6 insertions, 1 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 532f2d7f96..533193ac93 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -736,7 +736,7 @@ static void link_enter_unmanaged(Link *link) {
link_dirty(link);
}
-static int link_stop_clients(Link *link) {
+int link_stop_clients(Link *link) {
int r = 0, k;
assert(link);
diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h
index b43401afc6..1366a29924 100644
--- a/src/network/networkd-link.h
+++ b/src/network/networkd-link.h
@@ -171,6 +171,8 @@ int dhcp6_configure(Link *link);
int dhcp6_request_address(Link *link, int ir);
int dhcp6_lease_pd_prefix_lost(sd_dhcp6_client *client, Link* link);
+int link_stop_clients(Link *link);
+
const char* link_state_to_string(LinkState s) _const_;
LinkState link_state_from_string(const char *s) _pure_;
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index c9579370cb..8c461a89e0 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -1446,6 +1446,9 @@ void manager_free(Manager *m) {
while ((link = hashmap_steal_first(m->links))) {
if (link->dhcp6_client)
(void) dhcp6_lease_pd_prefix_lost(link->dhcp6_client, link);
+
+ link_stop_clients(link);
+
link_unref(link);
}