From: Yu Watanabe Date: Fri, 8 Sep 2023 01:17:32 +0000 (+0900) Subject: test-network: add test for multiple IPv6 null addresses X-Git-Tag: v255-rc1~495^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F29122%2Fhead;p=thirdparty%2Fsystemd.git test-network: add test for multiple IPv6 null addresses This also merges test_address_null() into test_address_static(). --- diff --git a/test/test-network/conf/25-address-null.network b/test/test-network/conf/25-address-null.network deleted file mode 100644 index d192900468d..00000000000 --- a/test/test-network/conf/25-address-null.network +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: LGPL-2.1-or-later -[Match] -Name=dummy98 - -[Network] -IPv6AcceptRA=no -Address=0.0.0.0/16 -Address=0.0.0.0/30 -Address=::/64 - -[Address] -Address=0.0.0.0/24 -# The broadcast address will be ignored. -Broadcast=192.168.0.255 diff --git a/test/test-network/conf/25-address-static.network b/test/test-network/conf/25-address-static.network index 67ea6aa088b..21430b0d81f 100644 --- a/test/test-network/conf/25-address-static.network +++ b/test/test-network/conf/25-address-static.network @@ -173,6 +173,9 @@ Label=subnet24 [Address] Address=::/73 +[Address] +Address=::/74 + [Address] Address=10.10.1.1/24 # just a random label which should exist diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 9d1b273f95a..90a5d95d794 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -2383,6 +2383,10 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): flag2: str, flag3: str, flag4: str, + ip4_null_16: str, + ip4_null_24: str, + ip6_null_73: str, + ip6_null_74: str, ): output = check_output('ip address show dev dummy98') print(output) @@ -2442,9 +2446,14 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): self.assertIn(f'inet6 2001:db8:0:f106::2/64 scope global{flag4}', output) # null address - self.assertRegex(output, r'inet [0-9]*.[0-9]*.0.1/16 brd [0-9]*.[0-9]*.255.255 scope global subnet16') - self.assertRegex(output, r'inet [0-9]*.[0-9]*.[0-9]*.1/24 brd [0-9]*.[0-9]*.[0-9]*.255 scope global subnet24') - self.assertRegex(output, r'inet6 [0-9a-f:]*:1/73 scope global') + self.assertTrue(ip4_null_16.endswith('.0.1')) + prefix16 = ip4_null_16[:-len('.0.1')] + self.assertTrue(ip4_null_24.endswith('.1')) + prefix24 = ip4_null_24[:-len('.1')] + self.assertIn(f'inet {ip4_null_16}/16 brd {prefix16}.255.255 scope global subnet16', output) + self.assertIn(f'inet {ip4_null_24}/24 brd {prefix24}.255 scope global subnet24', output) + self.assertIn(f'inet6 {ip6_null_73}/73 scope global', output) + self.assertIn(f'inet6 {ip6_null_74}/74 scope global', output) # invalid sections self.assertNotIn('10.4.4.1', output) @@ -2469,6 +2478,29 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): self.setup_nftset('ifindex', 'iface_index') self.wait_online(['dummy98:routable']) + + ip4_null_16 = None + ip4_null_24 = None + output = check_output('ip -4 --json address show dev dummy98') + for i in json.loads(output)[0]['addr_info']: + if i['label'] == 'subnet16': + ip4_null_16 = i['local'] + elif i['label'] == 'subnet24': + ip4_null_24 = i['local'] + self.assertTrue(ip4_null_16.endswith('.0.1')) + self.assertTrue(ip4_null_24.endswith('.1')) + + ip6_null_73 = None + ip6_null_74 = None + output = check_output('ip -6 --json address show dev dummy98') + for i in json.loads(output)[0]['addr_info']: + if i['prefixlen'] == 73: + ip6_null_73 = i['local'] + elif i['prefixlen'] == 74: + ip6_null_74 = i['local'] + self.assertTrue(ip6_null_73.endswith(':1')) + self.assertTrue(ip6_null_74.endswith(':1')) + self.verify_address_static( label1='label1', label2='label2', @@ -2493,6 +2525,10 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): flag2='', flag3=' noprefixroute', flag4=' home mngtmpaddr', + ip4_null_16=ip4_null_16, + ip4_null_24=ip4_null_24, + ip6_null_73=ip6_null_73, + ip6_null_74=ip6_null_74, ) # nft set self.check_nftset('addr4', r'10\.10\.1\.1') @@ -2528,6 +2564,10 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): flag2=' noprefixroute', flag3=' home mngtmpaddr', flag4=' noprefixroute', + ip4_null_16=ip4_null_16, + ip4_null_24=ip4_null_24, + ip6_null_73=ip6_null_73, + ip6_null_74=ip6_null_74, ) networkctl_reconfigure('dummy98') @@ -2556,6 +2596,10 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): flag2=' noprefixroute', flag3=' home mngtmpaddr', flag4=' noprefixroute', + ip4_null_16=ip4_null_16, + ip4_null_24=ip4_null_24, + ip6_null_73=ip6_null_73, + ip6_null_74=ip6_null_74, ) # Tests for #20891. @@ -2594,6 +2638,10 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): flag2=' noprefixroute', flag3=' home mngtmpaddr', flag4=' noprefixroute', + ip4_null_16=ip4_null_16, + ip4_null_24=ip4_null_24, + ip6_null_73=ip6_null_73, + ip6_null_74=ip6_null_74, ) # test for ENOBUFS issue #17012 (with reload) @@ -2611,34 +2659,6 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): for i in range(1, 254): self.assertIn(f'inet 10.3.3.{i}/16 brd 10.3.255.255', output) - def test_address_null(self): - copy_network_unit('25-address-null.network', '12-dummy.netdev') - start_networkd() - - self.wait_online(['dummy98:routable']) - - output = check_output('ip address show dev dummy98 scope global') - print(output) - - ipv4_address_16 = re.findall(r'inet 172.[0-9]*.0.1/16 brd 172.[0-9]*.255.255', output) - self.assertEqual(len(ipv4_address_16), 1) - ipv4_address_24 = re.findall(r'inet 192.168.[0-9]*.1/24 brd 192.168.[0-9]*.255', output) - self.assertEqual(len(ipv4_address_24), 1) - ipv4_address_30 = re.findall(r'inet 192.168.[0-9]*.[0-9]*/30 brd 192.168.[0-9]*.[0-9]*', output) - self.assertEqual(len(ipv4_address_30), 1) - ipv6_address = re.findall(r'inet6 fd[0-9a-f:]*/64', output) - self.assertEqual(len(ipv6_address), 1) - - networkctl_reconfigure('dummy98') - self.wait_online(['dummy98:routable']) - - output = check_output('ip address show dev dummy98 scope global') - print(output) - self.assertIn(ipv4_address_16[0], output) - self.assertIn(ipv4_address_24[0], output) - self.assertIn(ipv4_address_30[0], output) - self.assertIn(ipv6_address[0], output) - def test_address_ipv4acd(self): check_output('ip netns add ns99') check_output('ip link add veth99 type veth peer veth-peer')