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.
This commit is contained in:
Yu Watanabe 2023-12-26 11:04:20 +09:00
parent 3a30d81238
commit 1a4b0459f6
3 changed files with 4 additions and 4 deletions

View 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) {

View 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(

View 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;
}