From: Yu Watanabe Date: Wed, 28 Nov 2018 20:14:53 +0000 (+0100) Subject: network: move address_label_handler() to networkd-address-label.c X-Git-Tag: v240~152^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cccf9517f19cf5731c9f8e107a3715844ff9f320;p=thirdparty%2Fsystemd.git network: move address_label_handler() to networkd-address-label.c And use it as the default callback function of address_label_configure(). --- diff --git a/src/network/networkd-address-label.c b/src/network/networkd-address-label.c index 691bbf47619..d0fd2a0969a 100644 --- a/src/network/networkd-address-label.c +++ b/src/network/networkd-address-label.c @@ -79,6 +79,33 @@ static int address_label_new_static(Network *network, const char *filename, unsi 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( AddressLabel *label, Link *link, @@ -111,7 +138,8 @@ int address_label_configure( if (r < 0) 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__); if (r < 0) return log_error_errno(r, "Could not send rtnetlink message: %m"); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index db2dbef52c7..604d9d0a5d4 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -941,33 +941,6 @@ static int address_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userda 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) { _cleanup_free_ struct in_addr *addresses = NULL; 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) { - r = address_label_configure(label, link, address_label_handler, false); + r = address_label_configure(label, link, NULL, false); if (r < 0) { log_link_warning_errno(link, r, "Could not set address label: %m"); link_enter_failed(link);