]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/address: make address_remove() take Link object that the address assigned to
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 2 Jan 2024 19:40:08 +0000 (04:40 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 2 Jan 2024 19:43:34 +0000 (04:43 +0900)
No functional change. Preparation for later commits.

src/network/networkd-address.c
src/network/networkd-address.h
src/network/networkd-ipv4acd.c
src/network/networkd-ipv4ll.c

index 4f27e3845fb353934256d9eed6ce1648b858917b..cfa57aaa71f1392a74d0ef6ff703f4c6b2bd1039 100644 (file)
@@ -1087,20 +1087,17 @@ static int address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, Link
         return 1;
 }
 
-int address_remove(Address *address) {
+int address_remove(Address *address, Link *link) {
         _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
         Request *req;
-        Link *link;
         int r;
 
         assert(address);
         assert(IN_SET(address->family, AF_INET, AF_INET6));
-        assert(address->link);
-        assert(address->link->ifindex > 0);
-        assert(address->link->manager);
-        assert(address->link->manager->rtnl);
-
-        link = address->link;
+        assert(link);
+        assert(link->ifindex > 0);
+        assert(link->manager);
+        assert(link->manager->rtnl);
 
         log_address_debug(address, "Removing", link);
 
@@ -1132,13 +1129,13 @@ int address_remove(Address *address) {
 }
 
 int address_remove_and_drop(Address *address) {
-        if (!address)
+        if (!address || !address->link)
                 return 0;
 
         address_cancel_request(address);
 
         if (address_exists(address))
-                return address_remove(address);
+                return address_remove(address, address->link);
 
         return address_drop(address);
 }
@@ -1260,7 +1257,7 @@ int link_drop_ipv6ll_addresses(Link *link) {
                         existing = TAKE_PTR(a);
                 }
 
-                r = address_remove(existing);
+                r = address_remove(existing, link);
                 if (r < 0)
                         return r;
         }
@@ -1320,7 +1317,7 @@ int link_drop_foreign_addresses(Link *link) {
                 if (!address_is_marked(address))
                         continue;
 
-                RET_GATHER(r, address_remove(address));
+                RET_GATHER(r, address_remove(address, link));
         }
 
         return r;
@@ -1341,7 +1338,7 @@ int link_drop_managed_addresses(Link *link) {
                 if (!address_exists(address))
                         continue;
 
-                RET_GATHER(r, address_remove(address));
+                RET_GATHER(r, address_remove(address, link));
         }
 
         return r;
index 8273184d868f14654a0a908a90d975d381014199..786005c1e4bac441ca8ca41afbf694dae4d462f8 100644 (file)
@@ -89,7 +89,7 @@ Address* address_free(Address *address);
 int address_get(Link *link, const Address *in, Address **ret);
 int address_get_harder(Link *link, const Address *in, Address **ret);
 int address_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *error_msg);
-int address_remove(Address *address);
+int address_remove(Address *address, Link *link);
 int address_remove_and_drop(Address *address);
 int address_dup(const Address *src, Address **ret);
 bool address_is_ready(const Address *a);
index 3d5e2036aa764b66325e6ffd31ddaaf3ed831761..ee1f31ef0c6fcd27921f4a9efc8e50471c85e08b 100644 (file)
@@ -92,7 +92,7 @@ static int static_ipv4acd_address_remove(Link *link, Address *address, bool on_c
         else
                 log_link_debug(link, "Removing address %s, as the ACD client is stopped.", IN4_ADDR_TO_STRING(&address->in_addr.in));
 
-        r = address_remove(address);
+        r = address_remove(address, link);
         if (r < 0)
                 return log_link_warning_errno(link, r, "Failed to remove address %s: %m", IN4_ADDR_TO_STRING(&address->in_addr.in));
 
index c35738252bb15fdb8529b7204d1bcc2183314290..3fccb6d13c9ade11d86fae8451c96ba709669f0b 100644 (file)
@@ -82,7 +82,7 @@ static int ipv4ll_address_lost(Link *link) {
         log_link_debug(link, "IPv4 link-local release "IPV4_ADDRESS_FMT_STR,
                        IPV4_ADDRESS_FMT_VAL(address->in_addr.in));
 
-        return address_remove(existing);
+        return address_remove(existing, link);
 }
 
 static int ipv4ll_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Request *req, Link *link, Address *address) {