vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / systemd-initrd-vlan.nix
blob5060163a047d20cc5d450983d907eeae93ac11c4
1 import ./make-test-python.nix ({ lib, ... }: {
2   name = "systemd-initrd-vlan";
3   meta.maintainers = [ lib.maintainers.majiir ];
5   # Tests VLAN interface configuration in systemd-initrd.
6   #
7   # Two nodes are configured for a tagged VLAN. (Note that they also still have
8   # their ordinary eth0 and eth1 interfaces, which are not VLAN-tagged.)
9   #
10   # The 'server' node waits forever in initrd (stage 1) with networking
11   # enabled. The 'client' node pings it to test network connectivity.
13   nodes = let
14     network = id: {
15       networking = {
16         vlans."eth1.10" = {
17           id = 10;
18           interface = "eth1";
19         };
20         interfaces."eth1.10" = {
21           ipv4.addresses = [{
22             address = "192.168.10.${id}";
23             prefixLength = 24;
24           }];
25         };
26       };
27     };
28   in {
29     # Node that will use initrd networking.
30     server = network "1" // {
31       boot.initrd.systemd.enable = true;
32       boot.initrd.network.enable = true;
33       boot.initrd.systemd.services.boot-blocker = {
34         before = [ "initrd.target" ];
35         wantedBy = [ "initrd.target" ];
36         script = "sleep infinity";
37         serviceConfig.Type = "oneshot";
38       };
39     };
41     # Node that will ping the server.
42     client = network "2";
43   };
45   testScript = ''
46     start_all()
47     client.wait_for_unit("network.target")
49     # Wait for the regular (untagged) interface to be up.
50     def server_is_up(_) -> bool:
51         status, _ = client.execute("ping -n -c 1 server >&2")
52         return status == 0
53     with client.nested("waiting for server to come up"):
54         retry(server_is_up)
56     # Try to ping the (tagged) VLAN interface.
57     client.succeed("ping -n -w 10 -c 1 192.168.10.1 >&2")
58   '';