From: Yu Watanabe Date: Sun, 12 Dec 2021 03:35:21 +0000 (+0900) Subject: test-network: add testcase for automatic tunnel local address selection X-Git-Tag: v251-rc1~653^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=da7d684825d778b2a34f6e312eecc3a532cb2ab6;p=thirdparty%2Fsystemd.git test-network: add testcase for automatic tunnel local address selection --- diff --git a/test/test-network/conf/25-ip6tnl-tunnel-local-slaac.netdev b/test/test-network/conf/25-ip6tnl-tunnel-local-slaac.netdev new file mode 100644 index 00000000000..b07dc4a1301 --- /dev/null +++ b/test/test-network/conf/25-ip6tnl-tunnel-local-slaac.netdev @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +[NetDev] +Name=ip6tnl-slaac +Kind=ip6tnl + +[Tunnel] +Mode=ip6ip6 +Local=slaac +Remote=2001:473:fece:cafe::5179 diff --git a/test/test-network/conf/25-ip6tnl-tunnel-local-slaac.network b/test/test-network/conf/25-ip6tnl-tunnel-local-slaac.network new file mode 100644 index 00000000000..34fa0ca1de2 --- /dev/null +++ b/test/test-network/conf/25-ip6tnl-tunnel-local-slaac.network @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +[Match] +Name=ip6tnl-slaac + +[Network] +IPv6AcceptRA=no +LinkLocalAddressing=yes + +[Route] +Destination=0.0.0.0/0 diff --git a/test/test-network/conf/ip6tnl-slaac.network b/test/test-network/conf/ip6tnl-slaac.network new file mode 100644 index 00000000000..80de59d4d95 --- /dev/null +++ b/test/test-network/conf/ip6tnl-slaac.network @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +[Match] +Name=veth99 + +[Network] +IPv6AcceptRA=yes +Tunnel=ip6tnl-slaac + +[IPv6AcceptRA] +PrefixAllowList=2002:da8:1::/64 diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 68cdad30ac5..b4e9f352c8c 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -895,6 +895,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): 'ip6gretun97', 'ip6gretun98', 'ip6gretun99', + 'ip6tnl-slaac', 'ip6tnl97', 'ip6tnl98', 'ip6tnl99', @@ -981,6 +982,8 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): '25-ip6gre-tunnel.netdev', '25-ip6tnl-tunnel-any-any.netdev', '25-ip6tnl-tunnel-local-any.netdev', + '25-ip6tnl-tunnel-local-slaac.netdev', + '25-ip6tnl-tunnel-local-slaac.network', '25-ip6tnl-tunnel-remote-any.netdev', '25-ip6tnl-tunnel.netdev', '25-ipip-tunnel-any-any.netdev', @@ -1039,8 +1042,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): 'gretun.network', 'ip6gretap.network', 'ip6gretun.network', + 'ip6tnl-slaac.network', 'ip6tnl.network', 'ipip.network', + 'ipv6-prefix.network', 'ipvlan.network', 'ipvtap.network', 'isatap.network', @@ -1659,19 +1664,33 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): copy_unit_to_networkd_unit_path('12-dummy.netdev', 'ip6tnl.network', '25-ip6tnl-tunnel.netdev', '25-tunnel.network', '25-ip6tnl-tunnel-local-any.netdev', '25-tunnel-local-any.network', - '25-ip6tnl-tunnel-remote-any.netdev', '25-tunnel-remote-any.network') + '25-ip6tnl-tunnel-remote-any.netdev', '25-tunnel-remote-any.network', + '25-veth.netdev', 'ip6tnl-slaac.network', 'ipv6-prefix.network', + '25-ip6tnl-tunnel-local-slaac.netdev', '25-ip6tnl-tunnel-local-slaac.network') start_networkd() - self.wait_online(['ip6tnl99:routable', 'ip6tnl98:routable', 'ip6tnl97:routable', 'dummy98:degraded']) + self.wait_online(['ip6tnl99:routable', 'ip6tnl98:routable', 'ip6tnl97:routable', 'ip6tnl-slaac:degraded', + 'dummy98:degraded', 'veth99:routable', 'veth-peer:degraded']) output = check_output('ip -d link show ip6tnl99') print(output) - self.assertRegex(output, 'ip6tnl ip6ip6 remote 2001:473:fece:cafe::5179 local 2a00:ffde:4567:edde::4987 dev dummy98') + self.assertIn('ip6tnl ip6ip6 remote 2001:473:fece:cafe::5179 local 2a00:ffde:4567:edde::4987 dev dummy98', output) output = check_output('ip -d link show ip6tnl98') print(output) self.assertRegex(output, 'ip6tnl ip6ip6 remote 2001:473:fece:cafe::5179 local (any|::) dev dummy98') output = check_output('ip -d link show ip6tnl97') print(output) self.assertRegex(output, 'ip6tnl ip6ip6 remote (any|::) local 2a00:ffde:4567:edde::4987 dev dummy98') + output = check_output('ip -d link show ip6tnl-slaac') + print(output) + self.assertIn('ip6tnl ip6ip6 remote 2001:473:fece:cafe::5179 local 2002:da8:1:0:1034:56ff:fe78:9abc dev veth99', output) + + output = check_output('ip -6 address show veth99') + print(output) + self.assertIn('inet6 2002:da8:1:0:1034:56ff:fe78:9abc/64 scope global dynamic', output) + + output = check_output('ip -4 route show default') + print(output) + self.assertIn('default dev ip6tnl-slaac proto static', output) def test_sit_tunnel(self): copy_unit_to_networkd_unit_path('12-dummy.netdev', 'sit.network',