]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/address: free Address object by caller that passed to link_request_address()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 8 Jul 2023 22:15:21 +0000 (07:15 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 29 Jul 2023 13:48:49 +0000 (22:48 +0900)
Follow-up for 9684a8ded083dd427f843b0c40aa0292e6c7ae06.

Now, the input Address object is always copied, hence it is not
necessary to free it in link_request_address().

src/network/networkd-address.c
src/network/networkd-address.h
src/network/networkd-dhcp-prefix-delegation.c
src/network/networkd-dhcp-server.c
src/network/networkd-dhcp4.c
src/network/networkd-dhcp6.c
src/network/networkd-ipv4ll.c
src/network/networkd-ndisc.c
src/network/networkd-radv.c

index c33ffa95766c1297a76c642bbcfac3ff0acb4b97..276aad0989b28832f54411bb58a419ccaca4711c 100644 (file)
@@ -1246,13 +1246,11 @@ static int address_process_request(Request *req, Link *link, Address *address) {
 
 int link_request_address(
                 Link *link,
-                Address *address,
-                bool consume_object,
+                const Address *address,
                 unsigned *message_counter,
                 address_netlink_handler_t netlink_handler,
                 Request **ret) {
 
-        _unused_ _cleanup_(address_freep) Address *address_will_be_freed = NULL;
         Address *existing;
         int r;
 
@@ -1260,9 +1258,6 @@ int link_request_address(
         assert(address);
         assert(address->source != NETWORK_CONFIG_SOURCE_FOREIGN);
 
-        if (consume_object)
-                address_will_be_freed = address;
-
         if (address_get(link, address, &existing) < 0) {
                 _cleanup_(address_freep) Address *tmp = NULL;
 
@@ -1341,12 +1336,12 @@ static int static_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Reque
         return 1;
 }
 
-int link_request_static_address(Link *link, Address *address, bool consume) {
+int link_request_static_address(Link *link, const Address *address) {
         assert(link);
         assert(address);
         assert(address->source == NETWORK_CONFIG_SOURCE_STATIC);
 
-        return link_request_address(link, address, consume, &link->static_address_messages,
+        return link_request_address(link, address, &link->static_address_messages,
                                     static_address_handler, NULL);
 }
 
@@ -1360,7 +1355,7 @@ int link_request_static_addresses(Link *link) {
         link->static_addresses_configured = false;
 
         ORDERED_HASHMAP_FOREACH(a, link->network->addresses_by_section) {
-                r = link_request_static_address(link, a, false);
+                r = link_request_static_address(link, a);
                 if (r < 0)
                         return r;
         }
index 766da8ee7545098e60c77063a4ddcfbf7a641d56..5cb1cc388e7b3e9f82ae64a287fbab3c6e678088 100644 (file)
@@ -107,12 +107,11 @@ bool manager_has_address(Manager *manager, int family, const union in_addr_union
 void address_cancel_request(Address *address);
 int link_request_address(
                 Link *link,
-                Address *address,
-                bool consume_object,
+                const Address *address,
                 unsigned *message_counter,
                 address_netlink_handler_t netlink_handler,
                 Request **ret);
-int link_request_static_address(Link *link, Address *address, bool consume);
+int link_request_static_address(Link *link, const Address *address);
 int link_request_static_addresses(Link *link);
 
 int manager_rtnl_process_address(sd_netlink *nl, sd_netlink_message *message, Manager *m);
index 66c5e979d9fcd58d1e91153d5bf741d3f7be881a..9e39fa649ecc6cb1eaed61c4c734e6d7b545314b 100644 (file)
@@ -421,7 +421,7 @@ static int dhcp_pd_request_address(
                 else
                         address_unmark(existing);
 
-                r = link_request_address(link, TAKE_PTR(address), true, &link->dhcp_pd_messages,
+                r = link_request_address(link, address, &link->dhcp_pd_messages,
                                          dhcp_pd_address_handler, NULL);
                 if (r < 0)
                         return log_link_error_errno(link, r, "Failed to request DHCP delegated prefix address: %m");
index 620fbbddc72c90db293b0b8f25b56ff36090c212..50d84893c63de275b3f51eaf70adf180efe011fb 100644 (file)
@@ -115,7 +115,7 @@ int link_request_dhcp_server_address(Link *link) {
                  * Configure the DHCP server address only when it is not. */
                 return 0;
 
-        return link_request_static_address(link, TAKE_PTR(address), true);
+        return link_request_static_address(link, address);
 }
 
 static int link_find_dhcp_server_address(Link *link, Address **ret) {
index fd8ef402bdf13ce9024dd4237491c6fef268e6dc..fd72f734139cd6be3003453a615d820582a009e8 100644 (file)
@@ -984,7 +984,7 @@ static int dhcp4_request_address(Link *link, bool announce) {
         else
                 address_unmark(existing);
 
-        r = link_request_address(link, TAKE_PTR(addr), true, &link->dhcp4_messages,
+        r = link_request_address(link, addr, &link->dhcp4_messages,
                                  dhcp4_address_handler, NULL);
         if (r < 0)
                 return log_link_error_errno(link, r, "Failed to request DHCPv4 address: %m");
index 57272e7bf609dfe8de6d20b313793c3e42454246..44c9a95f8d1c2021f8c68904dfe2b3010231e551 100644 (file)
@@ -232,7 +232,7 @@ static int dhcp6_request_address(
         else
                 address_unmark(existing);
 
-        r = link_request_address(link, TAKE_PTR(addr), true, &link->dhcp6_messages,
+        r = link_request_address(link, addr, &link->dhcp6_messages,
                                  dhcp6_address_handler, NULL);
         if (r < 0)
                 return log_link_error_errno(link, r, "Failed to request DHCPv6 address %s/128: %m",
index 8450b346b1979ad9777080d4d7f4aa6b1c98da44..ee78fffdfb383320430c3ad36ae6b25a3f3c504b 100644 (file)
@@ -120,7 +120,7 @@ static int ipv4ll_address_claimed(sd_ipv4ll *ll, Link *link) {
         log_link_debug(link, "IPv4 link-local claim "IPV4_ADDRESS_FMT_STR,
                        IPV4_ADDRESS_FMT_VAL(address->in_addr.in));
 
-        return link_request_address(link, TAKE_PTR(address), true, NULL, ipv4ll_address_handler, NULL);
+        return link_request_address(link, address, NULL, ipv4ll_address_handler, NULL);
 }
 
 static void ipv4ll_handler(sd_ipv4ll *ll, int event, void *userdata) {
index 8e6389d2026446a64280e0307098f528bd758dcd..972ba52b9ea709561b7ae9d5bb050c0ead9a7733 100644 (file)
@@ -250,7 +250,7 @@ static int ndisc_request_address(Address *in, Link *link, sd_ndisc_router *rt) {
 
         is_new = address_get(link, address, NULL) < 0;
 
-        r = link_request_address(link, TAKE_PTR(address), true, &link->ndisc_messages,
+        r = link_request_address(link, address, &link->ndisc_messages,
                                  ndisc_address_handler, NULL);
         if (r < 0)
                 return r;
index db1ecb4c97aa1a18e55b116c1ff2db6ea53b7c61..0f67ff09732e12717937fb8fdf5db3233a95c159 100644 (file)
@@ -214,7 +214,7 @@ int link_request_radv_addresses(Link *link) {
                         address->prefixlen = p->prefixlen;
                         address->route_metric = p->route_metric;
 
-                        r = link_request_static_address(link, TAKE_PTR(address), true);
+                        r = link_request_static_address(link, address);
                         if (r < 0)
                                 return r;
                 }