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;
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;
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);
}
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;
}
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);
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");
* 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) {
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");
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",
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) {
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;
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;
}