From: Yu Watanabe Date: Tue, 22 Jun 2021 05:52:47 +0000 (+0900) Subject: network: introduce link_request_static_address() X-Git-Tag: v249-rc3~17^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8c29f484d5ec017e7be49339170b9b256e9d1ee5;p=thirdparty%2Fsystemd.git network: introduce link_request_static_address() --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 3a701b7dc9d..2756ce74f84 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -1153,6 +1153,22 @@ int link_request_address( message_counter, netlink_handler, ret); } +int link_request_static_address(Link *link, Address *address, bool consume) { + Request *req; + int r; + + assert(link); + assert(address); + + r = link_request_address(link, address, consume, &link->static_address_messages, + static_address_handler, &req); + if (r <= 0) + return r; + + req->after_configure = static_address_after_configure; + return 0; +} + int link_request_static_addresses(Link *link) { Address *a; Prefix *p; @@ -1164,21 +1180,13 @@ int link_request_static_addresses(Link *link) { link->static_addresses_configured = false; ORDERED_HASHMAP_FOREACH(a, link->network->addresses_by_section) { - Request *req; - - r = link_request_address(link, a, false, &link->static_address_messages, - static_address_handler, &req); + r = link_request_static_address(link, a, false); if (r < 0) return r; - if (r == 0) - continue; - - req->after_configure = static_address_after_configure; } HASHMAP_FOREACH(p, link->network->prefixes_by_section) { _cleanup_(address_freep) Address *address = NULL; - Request *req; if (!p->assign) continue; @@ -1198,14 +1206,9 @@ int link_request_static_addresses(Link *link) { address->family = AF_INET6; address->route_metric = p->route_metric; - r = link_request_address(link, TAKE_PTR(address), true, &link->static_address_messages, - static_address_handler, &req); + r = link_request_static_address(link, TAKE_PTR(address), true); if (r < 0) return r; - if (r == 0) - continue; - - req->after_configure = static_address_after_configure; } if (in4_addr_is_set(&link->network->dhcp_server_address)) { @@ -1223,14 +1226,9 @@ int link_request_static_addresses(Link *link) { /* The same address may be explicitly configured in [Address] or [Network] section. * Configure the DHCP server address only when it is not. */ if (!link_is_static_address_configured(link, address)) { - Request *req; - - r = link_request_address(link, TAKE_PTR(address), true, &link->static_address_messages, - static_address_handler, &req); + r = link_request_static_address(link, TAKE_PTR(address), true); if (r < 0) return r; - if (r > 0) - req->after_configure = static_address_after_configure; } } diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h index 9de2fae2df4..a24320fca22 100644 --- a/src/network/networkd-address.h +++ b/src/network/networkd-address.h @@ -82,6 +82,7 @@ int link_request_address( unsigned *message_counter, link_netlink_message_handler_t netlink_handler, Request **ret); +int link_request_static_address(Link *link, Address *address, bool consume); int link_request_static_addresses(Link *link); int request_process_address(Request *req);