From b08b056e190bf0f93bf723308c73b8cd0f3f3b78 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 23 May 2019 23:45:49 +0900 Subject: [PATCH 1/5] test-network: drop redundant check_link_exists() When wait_online() passes, then the link must exist. --- test/test-network/systemd-networkd-tests.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 0dcd9cd496..80c6b3a4fd 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -410,8 +410,6 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.start_networkd(0) self.wait_online(['bridge99', 'test1:degraded'], bool_any=True) - self.check_link_exists('bridge99') - self.check_link_exists('test1') self.check_operstate('bridge99', '(?:off|no-carrier)', setup_state='configuring') self.check_operstate('test1', 'degraded') @@ -842,9 +840,6 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.start_networkd(0) self.wait_online(['isataptun99:routable', 'dummy98:degraded']) - self.check_link_exists('dummy98') - self.check_link_exists('isataptun99') - output = subprocess.check_output(['ip', '-d', 'link', 'show', 'isataptun99'], universal_newlines=True).rstrip() print(output) self.assertRegex(output, "isatap ") @@ -1400,8 +1395,6 @@ class NetworkdNetWorkTests(unittest.TestCase, Utilities): self.start_networkd(0) self.wait_online(['dummy98:degraded']) - self.check_link_exists('dummy98') - self.assertEqual(self.read_ipv6_sysctl_attr('dummy98', 'forwarding'), '1') self.assertEqual(self.read_ipv6_sysctl_attr('dummy98', 'use_tempaddr'), '2') self.assertEqual(self.read_ipv6_sysctl_attr('dummy98', 'dad_transmits'), '3') @@ -1420,8 +1413,6 @@ class NetworkdNetWorkTests(unittest.TestCase, Utilities): self.start_networkd(0) self.wait_online(['dummy98:routable']) - self.check_link_exists('dummy98') - output = subprocess.check_output(['ip', '-4', 'address', 'show', 'dummy98'], universal_newlines=True).rstrip() print(output) self.assertRegex(output, 'inet 10.2.3.4/16 brd 10.2.255.255 scope global dummy98') @@ -1439,8 +1430,6 @@ class NetworkdNetWorkTests(unittest.TestCase, Utilities): self.start_networkd(0) self.wait_online(['dummy98:routable']) - self.check_link_exists('dummy98') - output = subprocess.check_output(['ip', '-4', 'address', 'show', 'dummy98'], universal_newlines=True).rstrip() print(output) self.assertRegex(output, 'inet 10.2.3.4/16 brd 10.2.255.255 scope global dummy98') From 241836a87cf184a71096dbbc36f4d8324b8675c3 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 23 May 2019 23:55:54 +0900 Subject: [PATCH 2/5] test-network: drop pure test for dummy device The dummy device is well used in test-network. So, the dropped test is completely redundant. --- test/test-network/systemd-networkd-tests.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 80c6b3a4fd..73311074a0 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -568,12 +568,6 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): print(output) self.assertRegex(output, 'link/ether 12:34:56:78:9a:bd') - def test_dummy(self): - self.copy_unit_to_networkd_unit_path('11-dummy.netdev') - self.start_networkd(0) - - self.wait_online(['test1:off']) - def test_tun(self): self.copy_unit_to_networkd_unit_path('25-tun.netdev') self.start_networkd(0) From 0aefa2274db62c5313b855cf854df2023ce7c02b Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 24 May 2019 00:09:55 +0900 Subject: [PATCH 3/5] test-network: add more tests for LinkLocalAddressing=yes on various netdevs --- test/test-network/conf/21-vlan.network | 1 + test/test-network/conf/25-macsec.network | 1 + test/test-network/conf/25-netdevsim.netdev | 3 +++ test/test-network/conf/macsec.network | 1 + .../conf/netdev-link-local-addressing-yes.network | 3 +++ test/test-network/conf/vxlan-test1.network | 1 + test/test-network/conf/vxlan.network | 1 + test/test-network/systemd-networkd-tests.py | 14 +++++++------- 8 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 test/test-network/conf/25-netdevsim.netdev diff --git a/test/test-network/conf/21-vlan.network b/test/test-network/conf/21-vlan.network index 0cd901def8..3edc59e795 100644 --- a/test/test-network/conf/21-vlan.network +++ b/test/test-network/conf/21-vlan.network @@ -4,3 +4,4 @@ Name=vlan99 [Network] IPv6AcceptRA=false Address=192.168.23.5/24 +LinkLocalAddressing=yes diff --git a/test/test-network/conf/25-macsec.network b/test/test-network/conf/25-macsec.network index 7037048a45..6def92f6d5 100644 --- a/test/test-network/conf/25-macsec.network +++ b/test/test-network/conf/25-macsec.network @@ -4,3 +4,4 @@ Name=macsec99 [Network] IPv6AcceptRA=no Address=10.1.2.3/16 +LinkLocalAddressing=yes diff --git a/test/test-network/conf/25-netdevsim.netdev b/test/test-network/conf/25-netdevsim.netdev new file mode 100644 index 0000000000..899f2d9f4c --- /dev/null +++ b/test/test-network/conf/25-netdevsim.netdev @@ -0,0 +1,3 @@ +[NetDev] +Kind=netdevsim +Name=netdevsim99 diff --git a/test/test-network/conf/macsec.network b/test/test-network/conf/macsec.network index d1360a59eb..5558547c28 100644 --- a/test/test-network/conf/macsec.network +++ b/test/test-network/conf/macsec.network @@ -6,4 +6,5 @@ MACAddress=00:50:56:c0:00:19 [Network] IPv6AcceptRA=no +LinkLocalAddressing=yes MACsec=macsec99 diff --git a/test/test-network/conf/netdev-link-local-addressing-yes.network b/test/test-network/conf/netdev-link-local-addressing-yes.network index 1a109ef419..ffe9ae452d 100644 --- a/test/test-network/conf/netdev-link-local-addressing-yes.network +++ b/test/test-network/conf/netdev-link-local-addressing-yes.network @@ -6,6 +6,9 @@ Name=macvtap99 Name=veth99 Name=veth-peer Name=vcan99 +Name=vrf99 +Name=geneve99 +Name=ipiptun99 [Network] LinkLocalAddressing=yes diff --git a/test/test-network/conf/vxlan-test1.network b/test/test-network/conf/vxlan-test1.network index 32880873c2..aaffb64635 100644 --- a/test/test-network/conf/vxlan-test1.network +++ b/test/test-network/conf/vxlan-test1.network @@ -3,4 +3,5 @@ Name=test1 [Network] IPv6AcceptRA=false +LinkLocalAddressing=yes VXLAN=vxlan99 diff --git a/test/test-network/conf/vxlan.network b/test/test-network/conf/vxlan.network index 1b63785d15..fc8ac47a8a 100644 --- a/test/test-network/conf/vxlan.network +++ b/test/test-network/conf/vxlan.network @@ -3,6 +3,7 @@ Name=vxlan99 [Network] IPv6AcceptRA=no +LinkLocalAddressing=yes [BridgeFDB] MACAddress=00:11:22:33:44:55 diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 73311074a0..f5b13e9606 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -456,7 +456,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): '21-vlan.network', '21-vlan-test1.network') self.start_networkd(0) - self.wait_online(['test1', 'vlan99']) + self.wait_online(['test1:degraded', 'vlan99:routable']) output = subprocess.check_output(['ip', '-d', 'link', 'show', 'test1'], universal_newlines=True).rstrip() print(output) @@ -592,10 +592,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): @expectedFailureIfModuleIsNotAvailable('vrf') def test_vrf(self): - self.copy_unit_to_networkd_unit_path('25-vrf.netdev') + self.copy_unit_to_networkd_unit_path('25-vrf.netdev', 'netdev-link-local-addressing-yes.network') self.start_networkd(0) - self.wait_online(['vrf99:off']) + self.wait_online(['vrf99:carrier']) @expectedFailureIfModuleIsNotAvailable('vcan') def test_vcan(self): @@ -636,10 +636,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.assertRegex(output, 'CJQUtcS9emY2fLYqDlpSZiE/QJyHkPWr\+WHtZLZ90FU=') def test_geneve(self): - self.copy_unit_to_networkd_unit_path('25-geneve.netdev') + self.copy_unit_to_networkd_unit_path('25-geneve.netdev', 'netdev-link-local-addressing-yes.network') self.start_networkd(0) - self.wait_online(['geneve99:off']) + self.wait_online(['geneve99:degraded']) output = subprocess.check_output(['ip', '-d', 'link', 'show', 'geneve99'], universal_newlines=True).rstrip() print(output) @@ -873,10 +873,10 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.assertRegex(output, 'oseq') def test_tunnel_independent(self): - self.copy_unit_to_networkd_unit_path('25-ipip-tunnel-independent.netdev') + self.copy_unit_to_networkd_unit_path('25-ipip-tunnel-independent.netdev', 'netdev-link-local-addressing-yes.network') self.start_networkd(0) - self.wait_online(['ipiptun99:off']) + self.wait_online(['ipiptun99:carrier']) @expectedFailureIfModuleIsNotAvailable('fou') def test_fou(self): From cab042b843b01a00ee3efbf4286705d6128514f9 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 24 May 2019 00:51:00 +0900 Subject: [PATCH 4/5] network: make VXCAN devices go through LINK_STATE_CONFIGURING --- src/network/networkd-link.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 21315f7f65..924cc8ce6a 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -77,7 +77,7 @@ static bool link_dhcp6_enabled(Link *link) { if (link->network->bond) return false; - if (STRPTR_IN_SET(link->kind, "can", "vcan")) + if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) return false; if (manager_sysctl_ipv6_enabled(link->manager) == 0) @@ -98,7 +98,7 @@ static bool link_dhcp4_enabled(Link *link) { if (link->network->bond) return false; - if (STRPTR_IN_SET(link->kind, "can", "vcan")) + if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) return false; return link->network->dhcp & ADDRESS_FAMILY_IPV4; @@ -116,7 +116,7 @@ static bool link_dhcp4_server_enabled(Link *link) { if (link->network->bond) return false; - if (STRPTR_IN_SET(link->kind, "can", "vcan")) + if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) return false; return link->network->dhcp_server; @@ -132,7 +132,7 @@ bool link_ipv4ll_enabled(Link *link, AddressFamilyBoolean mask) { if (!link->network) return false; - if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "ip6gre", "ip6tnl", "sit", "vti", "vti6", "can", "vcan")) + if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "ip6gre", "ip6tnl", "sit", "vti", "vti6", "can", "vcan", "vxcan")) return false; /* L3 or L3S mode do not support ARP. */ @@ -157,7 +157,7 @@ static bool link_ipv6ll_enabled(Link *link) { if (!link->network) return false; - if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "sit", "vti", "can", "vcan")) + if (STRPTR_IN_SET(link->kind, "vrf", "wireguard", "ipip", "gre", "sit", "vti", "can", "vcan", "vxcan")) return false; if (link->network->bond) @@ -181,7 +181,7 @@ static bool link_ipv6_enabled(Link *link) { if (manager_sysctl_ipv6_enabled(link->manager) == 0) return false; - if (STRPTR_IN_SET(link->kind, "can", "vcan")) + if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) return false; /* DHCPv6 client will not be started if no IPv6 link-local address is configured. */ @@ -2569,7 +2569,7 @@ static int link_configure(Link *link) { assert(link->network); assert(link->state == LINK_STATE_INITIALIZED); - if (STRPTR_IN_SET(link->kind, "can", "vcan")) + if (STRPTR_IN_SET(link->kind, "can", "vcan", "vxcan")) return link_configure_can(link); /* Drop foreign config, but ignore loopback or critical devices. From f63b14d35ef0f4326033bf5fc56c906ecb44fd81 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 24 May 2019 00:51:22 +0900 Subject: [PATCH 5/5] test-network: add basic tests for vxcan device --- test/test-network/conf/25-vxcan.netdev | 6 ++++++ .../conf/netdev-link-local-addressing-yes.network | 2 ++ test/test-network/systemd-networkd-tests.py | 9 +++++++++ 3 files changed, 17 insertions(+) create mode 100644 test/test-network/conf/25-vxcan.netdev diff --git a/test/test-network/conf/25-vxcan.netdev b/test/test-network/conf/25-vxcan.netdev new file mode 100644 index 0000000000..6d879b15e3 --- /dev/null +++ b/test/test-network/conf/25-vxcan.netdev @@ -0,0 +1,6 @@ +[NetDev] +Name=vxcan99 +Kind=vxcan + +[VXCAN] +Peer=vxcan-peer diff --git a/test/test-network/conf/netdev-link-local-addressing-yes.network b/test/test-network/conf/netdev-link-local-addressing-yes.network index ffe9ae452d..2e874249a2 100644 --- a/test/test-network/conf/netdev-link-local-addressing-yes.network +++ b/test/test-network/conf/netdev-link-local-addressing-yes.network @@ -6,6 +6,8 @@ Name=macvtap99 Name=veth99 Name=veth-peer Name=vcan99 +Name=vxcan99 +Name=vxcan-peer Name=vrf99 Name=geneve99 Name=ipiptun99 diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index f5b13e9606..2eda211285 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -265,6 +265,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): 'vtitun97', 'vtitun98', 'vtitun99', + 'vxcan99', 'vxlan99', 'wg98', 'wg99'] @@ -334,6 +335,7 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): '25-vti-tunnel-local-any.netdev', '25-vti-tunnel-remote-any.netdev', '25-vti-tunnel.netdev', + '25-vxcan.netdev', '25-vxlan.netdev', '25-wireguard-23-peers.netdev', '25-wireguard-23-peers.network', @@ -604,6 +606,13 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities): self.wait_online(['vcan99:carrier']) + @expectedFailureIfModuleIsNotAvailable('vxcan') + def test_vxcan(self): + self.copy_unit_to_networkd_unit_path('25-vxcan.netdev', 'netdev-link-local-addressing-yes.network') + self.start_networkd(0) + + self.wait_online(['vxcan99:carrier', 'vxcan-peer:carrier']) + @expectedFailureIfModuleIsNotAvailable('wireguard') def test_wireguard(self): self.copy_unit_to_networkd_unit_path('25-wireguard.netdev', '25-wireguard.network',