From 1a4b0459f644ecaeb3fa15ed0ef7c10c4e059530 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 26 Dec 2023 11:04:20 +0900 Subject: [PATCH] network/address: unconditionally check if address is ready 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 | 4 ++-- src/network/networkd-address.h | 2 +- src/network/networkd-route.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index f95a138a2e3..4f27e3845fb 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -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) { diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h index 5be2f776527..8273184d868 100644 --- a/src/network/networkd-address.h +++ b/src/network/networkd-address.h @@ -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( diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index 0743a3427e7..9f93e0f04bb 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -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; }