]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: free DHCP client and friends in link_free() 35004/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 2 Nov 2024 20:07:55 +0000 (05:07 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 3 Nov 2024 00:14:36 +0000 (09:14 +0900)
No functional change, at least now. Preparation for later commits.

But we are planning to extend KeepConfiguration= and also keep
addresses and so on assigned by other dynamic configuration protocol
like DHCPv6 or NDisc.
However, when link_free_engines() is called here, acquired addresses so
on by NDisc will be removed, even if link_stop_engines() handles
restarting networkd or KeepConfiguration= gracefully.
So, let's not free engines here, but free them later in link_free().
It is not necessary to be called here anyway.

src/network/networkd-link.c
src/network/networkd-link.h
src/network/networkd-manager.c

index be8826b49c5b8656e36d5696ccdfec62f1071d4e..432084038ffa277e7fb27744ebbb32e1921e4f6e 100644 (file)
@@ -222,7 +222,7 @@ void link_dns_settings_clear(Link *link) {
         link->dnssec_negative_trust_anchors = set_free_free(link->dnssec_negative_trust_anchors);
 }
 
-void link_free_engines(Link *link) {
+static void link_free_engines(Link *link) {
         if (!link)
                 return;
 
index 86aba9556bdc44f9376be2936971b6d04da61298..5efe226084536f08b8776ed6567a3d5f494003fc 100644 (file)
@@ -253,7 +253,6 @@ int link_ipv6ll_gained(Link *link);
 bool link_has_ipv6_connectivity(Link *link);
 
 int link_stop_engines(Link *link, bool may_keep_dhcp);
-void link_free_engines(Link *link);
 
 const char* link_state_to_string(LinkState s) _const_;
 LinkState link_state_from_string(const char *s) _pure_;
index 6639d59b32179b8d48aa3ca5750b9dadb6d1460f..15a309c82f10e7f55dc7ee6f126a1e36cbd1a685 100644 (file)
@@ -475,10 +475,8 @@ static int manager_stop(Manager *manager, ManagerState state) {
         manager->state = state;
 
         Link *link;
-        HASHMAP_FOREACH(link, manager->links_by_index) {
+        HASHMAP_FOREACH(link, manager->links_by_index)
                 (void) link_stop_engines(link, /* may_keep_dhcp = */ true);
-                link_free_engines(link);
-        }
 
         return 0;
 }