self.assertRegex(output, 'ethertype ip ')
self.assertRegex(output, 'srcportmin 1001 ')
+ touch_network_unit('25-bareudp.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('bareudp99:degraded')
+
@expectedFailureIfModuleIsNotAvailable('batman-adv')
def test_batadv(self):
copy_network_unit('25-batadv.netdev', '26-netdev-link-local-addressing-yes.network')
print(output)
self.assertRegex(output, 'batadv')
+ touch_network_unit('25-batadv.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('batadv99:degraded')
+
def test_bridge(self):
copy_network_unit('25-bridge.netdev', '25-bridge-configure-without-carrier.network')
start_networkd()
self.assertRegex(output, 'link/ether 12:34:56:78:9a:bf')
self.assertRegex(output, 'mtu 1800')
+ touch_network_unit(
+ '25-veth.netdev',
+ '26-netdev-link-local-addressing-yes.network',
+ '25-veth-mtu.netdev')
+ networkctl_reload()
+ self.wait_online(
+ 'veth99:degraded',
+ 'veth-peer:degraded',
+ 'veth-mtu:degraded',
+ 'veth-mtu-peer:degraded')
+
def check_tuntap(self, attached):
pid = networkd_pid()
name = psutil.Process(pid).name()[:15]
self.check_tuntap(True)
+ touch_network_unit('25-tun.netdev', '25-tap.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('testtun99:degraded', 'testtap99:degraded')
+
+ self.check_tuntap(True)
+
remove_network_unit('26-netdev-link-local-addressing-yes.network')
restart_networkd()
self.wait_online('testtun99:degraded', 'testtap99:degraded', setup_state='unmanaged')
self.wait_online('vrf99:carrier')
self.networkctl_check_unit('vrf99', '25-vrf', '26-netdev-link-local-addressing-yes')
+ touch_network_unit('25-vrf.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl()
+ self.wait_online('vrf99:carrier')
+
@expectedFailureIfModuleIsNotAvailable('vcan')
def test_vcan(self):
copy_network_unit('25-vcan.netdev', '26-netdev-link-local-addressing-yes.network',
print(output)
self.assertIn('mtu 16 ', output)
+ touch_network_unit(
+ '25-vcan.netdev',
+ '26-netdev-link-local-addressing-yes.network',
+ '25-vcan98.netdev',
+ '25-vcan98.network')
+ networkctl_reload()
+ self.wait_online('vcan99:carrier', 'vcan98:carrier')
+
@expectedFailureIfModuleIsNotAvailable('vxcan')
def test_vxcan(self):
copy_network_unit('25-vxcan.netdev', '26-netdev-link-local-addressing-yes.network')
self.networkctl_check_unit('vxcan99', '25-vxcan', '26-netdev-link-local-addressing-yes')
self.networkctl_check_unit('vxcan-peer', '25-vxcan', '26-netdev-link-local-addressing-yes')
+ touch_network_unit('25-vxcan.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl()
+ self.wait_online('vxcan99:carrier', 'vxcan-peer:carrier')
+
@expectedFailureIfModuleIsNotAvailable('wireguard')
def test_wireguard(self):
copy_credential('25-wireguard-endpoint-peer0-cred.txt', 'network.wireguard.peer0.endpoint')
output = check_output('wg show wg97 fwmark')
self.assertEqual(output, '0x4d3')
+ touch_network_unit(
+ '25-wireguard.netdev', '25-wireguard.network',
+ '25-wireguard-23-peers.netdev', '25-wireguard-23-peers.network',
+ '25-wireguard-public-key.txt', '25-wireguard-preshared-key.txt', '25-wireguard-private-key.txt',
+ '25-wireguard-no-peer.netdev', '25-wireguard-no-peer.network')
+ networkctl_reload()
+ self.wait_online('wg99:routable', 'wg98:routable', 'wg97:carrier')
+
def test_geneve(self):
copy_network_unit('25-geneve.netdev', '26-netdev-link-local-addressing-yes.network')
start_networkd()
self.assertRegex(output, 'udpcsum')
self.assertRegex(output, 'udp6zerocsumrx')
+ touch_network_unit('25-geneve.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('geneve99:degraded')
+
def test_ipip_tunnel(self):
copy_network_unit('12-dummy.netdev', '25-ipip.network',
'25-ipip-tunnel.netdev', '25-tunnel.network',
print(output)
self.assertRegex(output, 'encap fou encap-sport auto encap-dport 55556')
+ touch_network_unit(
+ '25-fou-ipproto-ipip.netdev', '25-fou-ipproto-gre.netdev',
+ '25-fou-ipip.netdev', '25-fou-sit.netdev',
+ '25-fou-gre.netdev', '25-fou-gretap.netdev')
+ networkctl_reload()
+ self.wait_online('ipiptun96:off', 'sittun96:off', 'gretun96:off', 'gretap96:off', setup_state='unmanaged')
+
def test_vxlan(self):
copy_network_unit('11-dummy.netdev', '25-vxlan-test1.network',
'25-vxlan.netdev', '25-vxlan.network',
self.wait_online('nlmon99:carrier')
self.networkctl_check_unit('nlmon99', '25-nlmon', '26-netdev-link-local-addressing-yes')
+ touch_network_unit('25-nlmon.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('nlmon99:carrier')
+
@expectedFailureIfModuleIsNotAvailable('ifb')
def test_ifb(self):
copy_network_unit('25-ifb.netdev', '26-netdev-link-local-addressing-yes.network')
self.wait_online('ifb99:degraded')
self.networkctl_check_unit('ifb99', '25-ifb', '26-netdev-link-local-addressing-yes')
+ touch_network_unit('25-ifb.netdev', '26-netdev-link-local-addressing-yes.network')
+ networkctl_reload()
+ self.wait_online('ifb99:degraded')
+
@unittest.skipUnless(os.cpu_count() >= 2, reason="CPU count should be >= 2 to pass this test")
def test_rps_cpu_1(self):
copy_network_unit('12-dummy.netdev', '12-dummy.network', '25-rps-cpu-1.link')
self.assertRegex(output, "Peer session 18, tunnel 11")
self.assertRegex(output, "interface name: l2tp-ses2")
+ touch_network_unit(
+ '11-dummy.netdev', '25-l2tp-dummy.network',
+ '25-l2tp-udp.netdev', '25-l2tp.network')
+ networkctl_reload()
+ self.wait_online('test1:routable', 'l2tp-ses1:degraded', 'l2tp-ses2:degraded')
+
@expectedFailureIfModuleIsNotAvailable('l2tp_eth', 'l2tp_ip', 'l2tp_netlink')
def test_l2tp_ip(self):
copy_network_unit('11-dummy.netdev', '25-l2tp-dummy.network',
self.assertRegex(output, "Peer session 28, tunnel 12")
self.assertRegex(output, "interface name: l2tp-ses4")
+ touch_network_unit(
+ '11-dummy.netdev', '25-l2tp-dummy.network',
+ '25-l2tp-ip.netdev', '25-l2tp.network')
+ networkctl_reload()
+ self.wait_online('test1:routable', 'l2tp-ses3:degraded', 'l2tp-ses4:degraded')
+
class NetworkdNetworkTests(unittest.TestCase, Utilities):
def setUp(self):
self.wait_online('dummy98:enslaved', 'bond199:degraded')
self.assertNotIn('dummy98: Bringing link down', read_networkd_log(since=since))
+ # test for reloading.
+ touch_network_unit(
+ '23-active-slave.network',
+ '23-bond199.network',
+ '25-bond-active-backup-slave.netdev',
+ '12-dummy.netdev')
+ networkctl_reload()
+ self.wait_online('dummy98:enslaved', 'bond199:degraded')
+
def test_bond_primary_slave(self):
copy_network_unit('23-primary-slave.network', '23-bond199.network', '25-bond-active-backup-slave.netdev', '12-dummy.netdev')
start_networkd()
self.check_bridge_port_attr('bridge99', 'dummy98', 'bpdu_guard', '0')
self.check_bridge_port_attr('bridge99', 'dummy98', 'root_block', '0')
- def test_bridge_property(self):
- copy_network_unit('11-dummy.netdev', '12-dummy.netdev', '26-bridge.netdev',
- '26-bridge-slave-interface-1.network', '26-bridge-slave-interface-2.network',
- '25-bridge99.network')
- start_networkd()
+ def check_bridge_property(self):
self.wait_online('dummy98:enslaved', 'test1:enslaved', 'bridge99:routable')
output = check_output('ip -d link show bridge99')
print(output)
self.check_bridge_port_attr('bridge99', 'test1', 'priority', '0')
+ def test_bridge_property(self):
+ copy_network_unit('11-dummy.netdev', '12-dummy.netdev', '26-bridge.netdev',
+ '26-bridge-slave-interface-1.network', '26-bridge-slave-interface-2.network',
+ '25-bridge99.network')
+ start_networkd()
+ self.check_bridge_property()
+
+ # test reload
+ touch_network_unit(
+ '11-dummy.netdev',
+ '12-dummy.netdev',
+ '26-bridge.netdev',
+ '26-bridge-slave-interface-1.network',
+ '26-bridge-slave-interface-2.network',
+ '25-bridge99.network')
+ networkctl_reload()
+ self.check_bridge_property()
+
check_output('ip address add 192.168.0.16/24 dev bridge99')
output = check_output('ip addr show bridge99')
print(output)