mirror of
https://github.com/systemd/systemd.git
synced 2025-02-01 09:47:35 +03:00
test-network: check if static routes not overridden by NDisc routes
(cherry picked from commit 62fb079a3b4a6553d87d06a3004d21b4e322a4e5)
This commit is contained in:
parent
4fda6e8f34
commit
54910267ba
@ -0,0 +1,14 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||||
|
[Match]
|
||||||
|
Name=veth99
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
IPv6AcceptRA=true
|
||||||
|
|
||||||
|
[Route]
|
||||||
|
Gateway=fe80::1034:56ff:fe78:9abd
|
||||||
|
GatewayOnLink=no
|
||||||
|
Metric=256
|
||||||
|
|
||||||
|
[IPv6AcceptRA]
|
||||||
|
RouteMetric=256
|
@ -5824,6 +5824,30 @@ class NetworkdRATests(unittest.TestCase, Utilities):
|
|||||||
self.assertIn('pref high', output)
|
self.assertIn('pref high', output)
|
||||||
self.assertNotIn('pref low', output)
|
self.assertNotIn('pref low', output)
|
||||||
|
|
||||||
|
def test_ndisc_vs_static_route(self):
|
||||||
|
copy_network_unit('25-veth.netdev', '25-ipv6-prefix.network', '25-ipv6-prefix-veth-static-route.network')
|
||||||
|
start_networkd()
|
||||||
|
self.wait_online('veth99:routable', 'veth-peer:degraded')
|
||||||
|
|
||||||
|
output = check_output('ip -6 route show dev veth99 table all')
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
# If a conflicting static route is already configured, do not override the static route.
|
||||||
|
output = check_output('ip -6 route show dev veth99 default via fe80::1034:56ff:fe78:9abd')
|
||||||
|
print(output)
|
||||||
|
self.assertIn('default proto static metric 256 pref medium', output)
|
||||||
|
self.assertNotIn('proto ra', output)
|
||||||
|
|
||||||
|
if not os.path.exists(test_ndisc_send):
|
||||||
|
self.skipTest(f"{test_ndisc_send} does not exist.")
|
||||||
|
|
||||||
|
# Also check if the static route is protected from RA with zero lifetime
|
||||||
|
check_output(f'{test_ndisc_send} --interface veth-peer --type router-advertisement --lifetime 0')
|
||||||
|
time.sleep(2)
|
||||||
|
output = check_output('ip -6 route show dev veth99 default via fe80::1034:56ff:fe78:9abd')
|
||||||
|
print(output)
|
||||||
|
self.assertIn('default proto static metric 256 pref medium', output)
|
||||||
|
|
||||||
# radvd supports captive portal since v2.20.
|
# radvd supports captive portal since v2.20.
|
||||||
# https://github.com/radvd-project/radvd/commit/791179a7f730decbddb2290ef0e34aa85d71b1bc
|
# https://github.com/radvd-project/radvd/commit/791179a7f730decbddb2290ef0e34aa85d71b1bc
|
||||||
@unittest.skipUnless(radvd_check_config('captive-portal.conf'), "Installed radvd doesn't support captive portals")
|
@unittest.skipUnless(radvd_check_config('captive-portal.conf'), "Installed radvd doesn't support captive portals")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user