Merge pull request #30404 from yuwata/network-peer

network/route: fix reachability check when peer address is specified
This commit is contained in:
Luca Boccassi
2023-12-10 14:13:37 +00:00
committed by GitHub
3 changed files with 11 additions and 3 deletions
+3 -3
View File
@@ -162,9 +162,9 @@ bool gateway_is_ready(Link *link, bool onlink, int family, const union in_addr_u
continue;
if (FLAGS_SET(a->flags, IFA_F_NOPREFIXROUTE))
continue;
if (in_addr_is_set(a->family, &a->in_addr_peer))
continue;
if (in_addr_prefix_covers(family, &a->in_addr, a->prefixlen, gw) > 0)
if (in_addr_prefix_covers(a->family,
in_addr_is_set(a->family, &a->in_addr_peer) ? &a->in_addr_peer : &a->in_addr,
a->prefixlen, gw) > 0)
return true;
}
@@ -108,3 +108,10 @@ MultiPathRoute=2001:1234:5:6fff:ff:ff:ff:ff@test1 20
MultiPathRoute=2001:1234:5:7fff:ff:ff:ff:ff@test1 30
MultiPathRoute=2001:1234:5:8fff:ff:ff:ff:ff@dummy98 10
MultiPathRoute=2001:1234:5:9fff:ff:ff:ff:ff@dummy98 5
[Address]
Address=1.1.8.105/31
Peer=1.1.8.104/31
[Route]
Gateway=1.1.8.104
@@ -3097,6 +3097,7 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities):
self.assertIn('default via 149.10.125.65 proto static onlink', output)
self.assertIn('default via 149.10.124.64 proto static', output)
self.assertIn('default proto static', output)
self.assertIn('default via 1.1.8.104 proto static', output)
print('### ip -4 route show table local dev dummy98')
output = check_output('ip -4 route show table local dev dummy98')