From: Yu Watanabe Date: Wed, 1 Dec 2021 06:08:00 +0000 (+0900) Subject: test-network: add testcases for uplink interface detection for RADV with DHCPv6-PD X-Git-Tag: v250-rc1~95^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6c8d6bdd40d36d036521fc7a8b9c791551685e38;p=thirdparty%2Fsystemd.git test-network: add testcases for uplink interface detection for RADV with DHCPv6-PD --- diff --git a/test/test-network/conf/25-veth-downstream-veth97.netdev b/test/test-network/conf/25-veth-downstream-veth97.netdev new file mode 100644 index 00000000000..5ba18ce9ef1 --- /dev/null +++ b/test/test-network/conf/25-veth-downstream-veth97.netdev @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +[NetDev] +Name=veth97 +Kind=veth +MACAddress=12:34:56:78:9a:ce + +[Peer] +Name=veth97-peer +MACAddress=12:34:56:78:9a:cf diff --git a/test/test-network/conf/25-veth-downstream.netdev b/test/test-network/conf/25-veth-downstream-veth98.netdev similarity index 100% rename from test/test-network/conf/25-veth-downstream.netdev rename to test/test-network/conf/25-veth-downstream-veth98.netdev diff --git a/test/test-network/conf/dhcp6pd-downstream-veth97-peer.network b/test/test-network/conf/dhcp6pd-downstream-veth97-peer.network new file mode 100644 index 00000000000..555fefa497c --- /dev/null +++ b/test/test-network/conf/dhcp6pd-downstream-veth97-peer.network @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +[Match] +Name=veth97-peer + +[Network] +IPv6PrivacyExtensions=yes +IPv6AcceptRA=yes + +[IPv6AcceptRA] +Token=eui64 +Token=::1a:2b:3c:4e diff --git a/test/test-network/conf/dhcp6pd-downstream-veth97.network b/test/test-network/conf/dhcp6pd-downstream-veth97.network new file mode 100644 index 00000000000..5c41ea98375 --- /dev/null +++ b/test/test-network/conf/dhcp6pd-downstream-veth97.network @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +[Match] +Name=veth97 + +[Network] +IPv6PrivacyExtensions=yes +IPv6AcceptRA=no +DHCP=no +DHCPv6PrefixDelegation=yes +IPv6SendRA=yes + +[DHCPv6PrefixDelegation] +SubnetId=8 +Announce=yes +Token=eui64 +Token=::1a:2b:3c:4d + +[IPv6SendRA] +EmitDNS=no +EmitDomains=no diff --git a/test/test-network/conf/dhcp6pd-downstream-veth98.network b/test/test-network/conf/dhcp6pd-downstream-veth98.network index 14c543d1bcf..a977099389a 100644 --- a/test/test-network/conf/dhcp6pd-downstream-veth98.network +++ b/test/test-network/conf/dhcp6pd-downstream-veth98.network @@ -17,6 +17,5 @@ Token=eui64 Token=::1a:2b:3c:4d [IPv6SendRA] -UplinkInterface=:none EmitDNS=no EmitDomains=no diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 2c70a05719f..af1e02e52f0 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -5002,6 +5002,7 @@ class NetworkdDHCP6PDTests(unittest.TestCase, Utilities): 'dummy98', 'dummy99', 'test1', + 'veth97', 'veth98', 'veth99', ] @@ -5011,11 +5012,14 @@ class NetworkdDHCP6PDTests(unittest.TestCase, Utilities): '12-dummy.netdev', '13-dummy.netdev', '25-veth.netdev', - '25-veth-downstream.netdev', + '25-veth-downstream-veth97.netdev', + '25-veth-downstream-veth98.netdev', 'dhcp6pd-downstream-dummy97.network', 'dhcp6pd-downstream-dummy98.network', 'dhcp6pd-downstream-dummy99.network', 'dhcp6pd-downstream-test1.network', + 'dhcp6pd-downstream-veth97.network', + 'dhcp6pd-downstream-veth97-peer.network', 'dhcp6pd-downstream-veth98.network', 'dhcp6pd-downstream-veth98-peer.network', 'dhcp6pd-server.network', @@ -5035,7 +5039,8 @@ class NetworkdDHCP6PDTests(unittest.TestCase, Utilities): def test_dhcp6pd(self): copy_unit_to_networkd_unit_path('25-veth.netdev', 'dhcp6pd-server.network', 'dhcp6pd-upstream.network', - '25-veth-downstream.netdev', 'dhcp6pd-downstream-veth98.network', 'dhcp6pd-downstream-veth98-peer.network', + '25-veth-downstream-veth97.netdev', 'dhcp6pd-downstream-veth97.network', 'dhcp6pd-downstream-veth97-peer.network', + '25-veth-downstream-veth98.netdev', 'dhcp6pd-downstream-veth98.network', 'dhcp6pd-downstream-veth98-peer.network', '11-dummy.netdev', 'dhcp6pd-downstream-test1.network', 'dhcp6pd-downstream-dummy97.network', '12-dummy.netdev', 'dhcp6pd-downstream-dummy98.network', @@ -5045,7 +5050,7 @@ class NetworkdDHCP6PDTests(unittest.TestCase, Utilities): self.wait_online(['veth-peer:carrier']) start_isc_dhcpd('veth-peer', 'isc-dhcpd-dhcp6pd.conf') self.wait_online(['veth-peer:routable', 'veth99:routable', 'test1:routable', 'dummy98:routable', 'dummy99:degraded', - 'veth98:routable', 'veth98-peer:routable']) + 'veth97:routable', 'veth97-peer:routable', 'veth98:routable', 'veth98-peer:routable']) print('### ip -6 address show dev veth-peer scope global') output = check_output('ip -6 address show dev veth-peer scope global') @@ -5081,6 +5086,26 @@ class NetworkdDHCP6PDTests(unittest.TestCase, Utilities): # address in IA_PD (temporary) self.wait_address('dummy98', 'inet6 3ffe:501:ffff:[2-9a-f]03:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*/64 (metric 256 |)scope global temporary dynamic', ipv='-6') + print('### ip -6 address show dev veth97 scope global') + output = check_output('ip -6 address show dev veth97 scope global') + print(output) + # address in IA_PD (Token=static) + self.assertRegex(output, 'inet6 3ffe:501:ffff:[2-9a-f]08:1a:2b:3c:4d/64 (metric 256 |)scope global dynamic mngtmpaddr') + # address in IA_PD (Token=eui64) + self.assertRegex(output, 'inet6 3ffe:501:ffff:[2-9a-f]08:1034:56ff:fe78:9ace/64 (metric 256 |)scope global dynamic mngtmpaddr') + # address in IA_PD (temporary) + self.wait_address('veth97', 'inet6 3ffe:501:ffff:[2-9a-f]08:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*/64 (metric 256 |)scope global temporary dynamic', ipv='-6') + + print('### ip -6 address show dev veth97-peer scope global') + output = check_output('ip -6 address show dev veth97-peer scope global') + print(output) + # NDisc address (Token=static) + self.assertRegex(output, 'inet6 3ffe:501:ffff:[2-9a-f]08:1a:2b:3c:4e/64 (metric 256 |)scope global dynamic mngtmpaddr') + # NDisc address (Token=eui64) + self.assertRegex(output, 'inet6 3ffe:501:ffff:[2-9a-f]08:1034:56ff:fe78:9acf/64 (metric 256 |)scope global dynamic mngtmpaddr') + # NDisc address (temporary) + self.wait_address('veth97-peer', 'inet6 3ffe:501:ffff:[2-9a-f]08:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*/64 (metric 256 |)scope global temporary dynamic', ipv='-6') + print('### ip -6 address show dev veth98 scope global') output = check_output('ip -6 address show dev veth98 scope global') print(output)