1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-03 01:17:45 +03:00

network/route: fix reachability check when peer address is specified

When an address with peer address is specified, the kernel by default
adds the prefix route for the peer address. When ManageForeignRoute=no
is set, then we also needs to check the prefix for the peer address.

Fixes #30403.

(cherry picked from commit e091ed4053)
(cherry picked from commit b641ced147)
(cherry picked from commit 752b9b0f6c)
(cherry picked from commit be2c9edc53)
This commit is contained in:
Yu Watanabe 2023-12-10 13:56:46 +09:00 committed by Luca Boccassi
parent fbf524bd42
commit 83abec719e

View File

@ -152,9 +152,9 @@ bool gateway_is_ready(Link *link, bool onlink, int family, const union in_addr_u
continue; continue;
if (FLAGS_SET(a->flags, IFA_F_NOPREFIXROUTE)) if (FLAGS_SET(a->flags, IFA_F_NOPREFIXROUTE))
continue; continue;
if (in_addr_is_set(a->family, &a->in_addr_peer)) if (in_addr_prefix_covers(a->family,
continue; in_addr_is_set(a->family, &a->in_addr_peer) ? &a->in_addr_peer : &a->in_addr,
if (in_addr_prefix_covers(family, &a->in_addr, a->prefixlen, gw) > 0) a->prefixlen, gw) > 0)
return true; return true;
} }