]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/address: unconditionally check if address is ready
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 26 Dec 2023 02:04:20 +0000 (11:04 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 27 Dec 2023 22:08:37 +0000 (07:08 +0900)
Previously, we checked if the address is ready only when it is an IPv6
address. But, IPv4 address never enter tentative state, hence the check
for an IPv4 address is effectively equivalent to the one for IPv6.
So, let's unify the check. This does not change any effective behavior.

src/network/networkd-address.c
src/network/networkd-address.h
src/network/networkd-route.c

index f95a138a2e3e3ba2be2498e2dd11cfdb016f3120..4f27e3845fb353934256d9eed6ce1648b858917b 100644 (file)
@@ -978,7 +978,7 @@ int manager_get_address(Manager *manager, int family, const union in_addr_union
         return -ENOENT;
 }
 
-bool manager_has_address(Manager *manager, int family, const union in_addr_union *address, bool check_ready) {
+bool manager_has_address(Manager *manager, int family, const union in_addr_union *address) {
         Address *a;
 
         assert(manager);
@@ -988,7 +988,7 @@ bool manager_has_address(Manager *manager, int family, const union in_addr_union
         if (manager_get_address(manager, family, address, 0, &a) < 0)
                 return false;
 
-        return check_ready ? address_is_ready(a) : (address_exists(a) && address_lifetime_is_valid(a));
+        return address_is_ready(a);
 }
 
 const char* format_lifetime(char *buf, size_t l, usec_t lifetime_usec) {
index 5be2f77652740ecedfba14b3e5e3368af2884e57..8273184d868f14654a0a908a90d975d381014199 100644 (file)
@@ -112,7 +112,7 @@ static inline int link_get_ipv4_address(Link *link, const struct in_addr *addres
         return link_get_address(link, AF_INET, &(union in_addr_union) { .in = *address }, prefixlen, ret);
 }
 int manager_get_address(Manager *manager, int family, const union in_addr_union *address, unsigned char prefixlen, Address **ret);
-bool manager_has_address(Manager *manager, int family, const union in_addr_union *address, bool check_ready);
+bool manager_has_address(Manager *manager, int family, const union in_addr_union *address);
 
 void address_cancel_request(Address *address);
 int link_request_address(
index 0743a3427e7f08005569af57eaa06702873d8e3a..9f93e0f04bbb3e0958682ab66e5759a5746da4da 100644 (file)
@@ -1302,7 +1302,7 @@ static int route_is_ready_to_configure(const Route *route, Link *link) {
         }
 
         if (in_addr_is_set(route->family, &route->prefsrc) > 0) {
-                r = manager_has_address(link->manager, route->family, &route->prefsrc, route->family == AF_INET6);
+                r = manager_has_address(link->manager, route->family, &route->prefsrc);
                 if (r <= 0)
                         return r;
         }