network/address: free Address object by caller that passed to link_request_address()
Follow-up for 9684a8ded0.
Now, the input Address object is always copied, hence it is not
necessary to free it in link_request_address().
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user