]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/network/networkd-address.c
Merge pull request #17357 from yuwata/network-dhcp6-pd-announce-17353
[thirdparty/systemd.git] / src / network / networkd-address.c
index ebb9d43371eff748a5feb09ccdcc2d8ed8d22dc3..9130fae77830f32bc60a763cc6034d7d60b1c16c 100644 (file)
@@ -1338,7 +1338,7 @@ static void static_address_on_acd(sd_ipv4acd *acd, int event, void *userdata) {
                 assert_not_reached("Invalid IPv4ACD event.");
         }
 
-        sd_ipv4acd_stop(acd);
+        (void) sd_ipv4acd_stop(acd);
 
         return;
 }
@@ -1399,11 +1399,9 @@ static int ipv4_dad_update_mac_one(Address *address) {
 
         running = sd_ipv4acd_is_running(address->acd);
 
-        if (running) {
-                r = sd_ipv4acd_stop(address->acd);
-                if (r < 0)
-                        return r;
-        }
+        r = sd_ipv4acd_stop(address->acd);
+        if (r < 0)
+                return r;
 
         r = sd_ipv4acd_set_mac(address->acd, &address->link->mac);
         if (r < 0)
@@ -1440,9 +1438,6 @@ int ipv4_dad_stop(Link *link) {
         assert(link);
 
         SET_FOREACH(address, link->addresses) {
-                if (!address->acd)
-                        continue;
-
                 k = sd_ipv4acd_stop(address->acd);
                 if (k < 0 && r >= 0)
                         r = k;
@@ -1451,6 +1446,15 @@ int ipv4_dad_stop(Link *link) {
         return r;
 }
 
+void ipv4_dad_unref(Link *link) {
+        Address *address;
+
+        assert(link);
+
+        SET_FOREACH(address, link->addresses)
+                address->acd = sd_ipv4acd_unref(address->acd);
+}
+
 int config_parse_broadcast(
                 const char *unit,
                 const char *filename,