From: Yu Watanabe Date: Wed, 28 Nov 2018 20:22:08 +0000 (+0100) Subject: network: use address_remove_handler() as the default callback of address_remove() X-Git-Tag: v240~152^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=63ae056909d64e78a7f348673cb478830482940d;p=thirdparty%2Fsystemd.git network: use address_remove_handler() as the default callback of address_remove() --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 09f041602ce..19462d9a0ad 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -428,6 +428,24 @@ int address_get(Link *link, return -ENOENT; } +static int address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) { + Link *link = userdata; + int r; + + assert(m); + assert(link); + assert(link->ifname); + + if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER)) + return 1; + + r = sd_netlink_message_get_errno(m); + if (r < 0 && r != -EADDRNOTAVAIL) + log_link_warning_errno(link, r, "Could not drop address: %m"); + + return 1; +} + int address_remove( Address *address, Link *link, @@ -465,7 +483,8 @@ int address_remove( if (r < 0) return log_error_errno(r, "Could not append IFA_LOCAL 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_remove_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-dhcp4.c b/src/network/networkd-dhcp4.c index 597791e02b8..c8e07028f2f 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -261,7 +261,7 @@ static int dhcp_lease_lost(Link *link) { address->in_addr.in = addr; address->prefixlen = prefixlen; - address_remove(address, link, link_address_remove_handler); + address_remove(address, link, NULL); } } diff --git a/src/network/networkd-ipv4ll.c b/src/network/networkd-ipv4ll.c index 0f333175da6..e0d2ef01f88 100644 --- a/src/network/networkd-ipv4ll.c +++ b/src/network/networkd-ipv4ll.c @@ -34,7 +34,7 @@ static int ipv4ll_address_lost(Link *link) { address->prefixlen = 16; address->scope = RT_SCOPE_LINK; - address_remove(address, link, link_address_remove_handler); + address_remove(address, link, NULL); r = route_new(&route); if (r < 0) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 891f72b6ab9..c4287ff342d 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1214,24 +1214,6 @@ static int link_enter_set_addresses(Link *link) { return 0; } -int link_address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) { - Link *link = userdata; - int r; - - assert(m); - assert(link); - assert(link->ifname); - - if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER)) - return 1; - - r = sd_netlink_message_get_errno(m); - if (r < 0 && r != -EADDRNOTAVAIL) - log_link_warning_errno(link, r, "Could not drop address: %m"); - - return 1; -} - static int link_set_bridge_vlan(Link *link) { int r = 0; @@ -2664,7 +2646,7 @@ static int link_drop_foreign_config(Link *link) { if (r < 0) return log_link_error_errno(link, r, "Failed to add address: %m"); } else { - r = address_remove(address, link, link_address_remove_handler); + r = address_remove(address, link, NULL); if (r < 0) return r; } @@ -2700,7 +2682,7 @@ static int link_drop_config(Link *link) { if (address->family == AF_INET6 && in_addr_is_link_local(AF_INET6, &address->in_addr) == 1) continue; - r = address_remove(address, link, link_address_remove_handler); + r = address_remove(address, link, NULL); if (r < 0) return r; diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index 7261b3142af..a24d83c2624 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -140,7 +140,6 @@ void link_drop(Link *link); int link_up(Link *link); int link_down(Link *link); -int link_address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata); int link_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata); void link_enter_failed(Link *link);