at 23.05-pre 1.9 kB view raw
1# This test predominantly tests systemd-networkd DHCP server, by 2# setting up a DHCP server and client, and ensuring they are mutually 3# reachable via the DHCP allocated address. 4import ./make-test-python.nix ({pkgs, ...}: { 5 name = "systemd-networkd-dhcpserver"; 6 meta = with pkgs.lib.maintainers; { 7 maintainers = [ tomfitzhenry ]; 8 }; 9 nodes = { 10 router = { config, pkgs, ... }: { 11 virtualisation.vlans = [ 1 ]; 12 systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug"; 13 networking = { 14 useNetworkd = true; 15 useDHCP = false; 16 firewall.enable = false; 17 }; 18 systemd.network = { 19 networks = { 20 # systemd-networkd will load the first network unit file 21 # that matches, ordered lexiographically by filename. 22 # /etc/systemd/network/{40-eth1,99-main}.network already 23 # exists. This network unit must be loaded for the test, 24 # however, hence why this network is named such. 25 "01-eth1" = { 26 name = "eth1"; 27 networkConfig = { 28 DHCPServer = true; 29 Address = "10.0.0.1/24"; 30 }; 31 dhcpServerConfig = { 32 PoolOffset = 100; 33 PoolSize = 1; 34 }; 35 }; 36 }; 37 }; 38 }; 39 40 client = { config, pkgs, ... }: { 41 virtualisation.vlans = [ 1 ]; 42 systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug"; 43 networking = { 44 useNetworkd = true; 45 useDHCP = false; 46 firewall.enable = false; 47 interfaces.eth1.useDHCP = true; 48 }; 49 }; 50 }; 51 testScript = { ... }: '' 52 start_all() 53 router.wait_for_unit("systemd-networkd-wait-online.service") 54 client.wait_for_unit("systemd-networkd-wait-online.service") 55 client.wait_until_succeeds("ping -c 5 10.0.0.1") 56 router.wait_until_succeeds("ping -c 5 10.0.0.100") 57 ''; 58})