network: move address_label_handler() to networkd-address-label.c
And use it as the default callback function of address_label_configure().
This commit is contained in:
parent
a9eea6065c
commit
cccf9517f1
|
@ -79,6 +79,33 @@ static int address_label_new_static(Network *network, const char *filename, unsi
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int address_label_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
|
||||||
|
Link *link = userdata;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert(rtnl);
|
||||||
|
assert(m);
|
||||||
|
assert(link);
|
||||||
|
assert(link->ifname);
|
||||||
|
assert(link->address_label_messages > 0);
|
||||||
|
|
||||||
|
link->address_label_messages--;
|
||||||
|
|
||||||
|
if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
r = sd_netlink_message_get_errno(m);
|
||||||
|
if (r < 0 && r != -EEXIST)
|
||||||
|
log_link_warning_errno(link, r, "could not set address label: %m");
|
||||||
|
else if (r >= 0)
|
||||||
|
manager_rtnl_process_address(rtnl, m, link->manager);
|
||||||
|
|
||||||
|
if (link->address_label_messages == 0)
|
||||||
|
log_link_debug(link, "Addresses label set");
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int address_label_configure(
|
int address_label_configure(
|
||||||
AddressLabel *label,
|
AddressLabel *label,
|
||||||
Link *link,
|
Link *link,
|
||||||
|
@ -111,7 +138,8 @@ int address_label_configure(
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Could not append IFA_ADDRESS attribute: %m");
|
return log_error_errno(r, "Could not append IFA_ADDRESS attribute: %m");
|
||||||
|
|
||||||
r = sd_netlink_call_async(link->manager->rtnl, NULL, req, callback,
|
r = sd_netlink_call_async(link->manager->rtnl, NULL, req,
|
||||||
|
callback ?: address_label_handler,
|
||||||
link_netlink_destroy_callback, link, 0, __func__);
|
link_netlink_destroy_callback, link, 0, __func__);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Could not send rtnetlink message: %m");
|
return log_error_errno(r, "Could not send rtnetlink message: %m");
|
||||||
|
|
|
@ -941,33 +941,6 @@ static int address_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userda
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int address_label_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
|
|
||||||
Link *link = userdata;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(rtnl);
|
|
||||||
assert(m);
|
|
||||||
assert(link);
|
|
||||||
assert(link->ifname);
|
|
||||||
assert(link->address_label_messages > 0);
|
|
||||||
|
|
||||||
link->address_label_messages--;
|
|
||||||
|
|
||||||
if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
r = sd_netlink_message_get_errno(m);
|
|
||||||
if (r < 0 && r != -EEXIST)
|
|
||||||
log_link_warning_errno(link, r, "could not set address label: %m");
|
|
||||||
else if (r >= 0)
|
|
||||||
manager_rtnl_process_address(rtnl, m, link->manager);
|
|
||||||
|
|
||||||
if (link->address_label_messages == 0)
|
|
||||||
log_link_debug(link, "Addresses label set");
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int link_push_uplink_dns_to_dhcp_server(Link *link, sd_dhcp_server *s) {
|
static int link_push_uplink_dns_to_dhcp_server(Link *link, sd_dhcp_server *s) {
|
||||||
_cleanup_free_ struct in_addr *addresses = NULL;
|
_cleanup_free_ struct in_addr *addresses = NULL;
|
||||||
size_t n_addresses = 0, n_allocated = 0;
|
size_t n_addresses = 0, n_allocated = 0;
|
||||||
|
@ -1106,7 +1079,7 @@ static int link_enter_set_addresses(Link *link) {
|
||||||
}
|
}
|
||||||
|
|
||||||
LIST_FOREACH(labels, label, link->network->address_labels) {
|
LIST_FOREACH(labels, label, link->network->address_labels) {
|
||||||
r = address_label_configure(label, link, address_label_handler, false);
|
r = address_label_configure(label, link, NULL, false);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_link_warning_errno(link, r, "Could not set address label: %m");
|
log_link_warning_errno(link, r, "Could not set address label: %m");
|
||||||
link_enter_failed(link);
|
link_enter_failed(link);
|
||||||
|
|
Loading…
Reference in a new issue