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);
}
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);
}
existing = TAKE_PTR(a);
}
- r = address_remove(existing);
+ r = address_remove(existing, link);
if (r < 0)
return r;
}
if (!address_is_marked(address))
continue;
- RET_GATHER(r, address_remove(address));
+ RET_GATHER(r, address_remove(address, link));
}
return r;
if (!address_exists(address))
continue;
- RET_GATHER(r, address_remove(address));
+ RET_GATHER(r, address_remove(address, link));
}
return r;
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);
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));
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) {