]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: introduce link_request_static_address()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 22 Jun 2021 05:52:47 +0000 (14:52 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 30 Jun 2021 15:49:02 +0000 (00:49 +0900)
src/network/networkd-address.c
src/network/networkd-address.h

index 3a701b7dc9d5166a51672b11d8269d0cb2a0f340..2756ce74f84f789f52534bdde63a99665cd052ec 100644 (file)
@@ -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;
                 }
         }
 
index 9de2fae2df4b85d0e94562264680891b88a3a59d..a24320fca22cefbfebe8f57133a234cb0d4b0691 100644 (file)
@@ -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);