Unverified Commit dfc9d683 authored by Jacek Galowicz's avatar Jacek Galowicz Committed by GitHub
Browse files

Merge pull request #319308 from frederictobiasc/nixosTest-ipv6

nixosTest: Introduce IPv6
parents a832ba5a c6f6c282
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -237,6 +237,8 @@

- [`lib.options.mkPackageOptionMD`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.options.mkPackageOptionMD) is now obsolete; use the identical [`lib.options.mkPackageOption`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.options.mkPackageOption) instead.

- `nixosTests` now provide a working IPv6 setup for VLAN 1 by default.

- To facilitate dependency injection, the `imgui` package now builds a static archive using vcpkg' CMake rules.
  The derivation now installs "impl" headers selectively instead of by a wildcard.
  Use `imgui.src` if you just want to access the unpacked sources.
+24 −8
Original line number Diff line number Diff line
@@ -32,10 +32,19 @@ let
      # Automatically assign IP addresses to requested interfaces.
      assignIPs = lib.filter (i: i.assignIP) interfaces;
      ipInterfaces = forEach assignIPs (i:
        nameValuePair i.name { ipv4.addresses =
          [ { address = "192.168.${toString i.vlan}.${toString config.virtualisation.test.nodeNumber}";
        nameValuePair i.name {
          ipv4.addresses = [
            {
              address = "192.168.${toString i.vlan}.${toString config.virtualisation.test.nodeNumber}";
              prefixLength = 24;
            }];
            }
          ];
          ipv6.addresses = [
            {
              address = "2001:db8:${toString i.vlan}::${toString config.virtualisation.test.nodeNumber}";
              prefixLength = 64;
            }
          ];
        });

      qemuOptions = lib.flatten (forEach interfacesNumbered ({ fst, snd }:
@@ -53,6 +62,9 @@ let
          networking.primaryIPAddress =
            optionalString (ipInterfaces != [ ]) (head (head ipInterfaces).value.ipv4.addresses).address;

          networking.primaryIPv6Address =
            optionalString (ipInterfaces != [ ]) (head (head ipInterfaces).value.ipv6.addresses).address;

          # Put the IP addresses of all VMs in this machine's
          # /etc/hosts file.  If a machine has multiple
          # interfaces, use the IP address corresponding to
@@ -60,12 +72,16 @@ let
          # virtualisation.vlans option).
          networking.extraHosts = flip concatMapStrings (attrNames nodes)
            (m':
              let config = nodes.${m'}; in
              let
                config = nodes.${m'};
                hostnames =
                  optionalString (config.networking.domain != null) "${config.networking.hostName}.${config.networking.domain} " +
                  "${config.networking.hostName}\n";
              in
              optionalString (config.networking.primaryIPAddress != "")
                ("${config.networking.primaryIPAddress} " +
                  optionalString (config.networking.domain != null)
                    "${config.networking.hostName}.${config.networking.domain} " +
                  "${config.networking.hostName}\n"));
                "${config.networking.primaryIPAddress} ${hostnames}" +
              optionalString (config.networking.primaryIPv6Address != "")
                ("${config.networking.primaryIPv6Address} ${hostnames}"));

          virtualisation.qemu.options = qemuOptions;
          boot.initrd.services.udev.rules = concatMapStrings (x: x + "\n") udevRules;
+8 −0
Original line number Diff line number Diff line
@@ -665,6 +665,14 @@ in
        description = "Primary IP address used in /etc/hosts.";
      };

    networking.primaryIPv6Address =
      mkOption {
        type = types.str;
        default = "";
        internal = true;
        description = "Primary IPv6 address used in /etc/hosts.";
      };

    virtualisation.host.pkgs = mkOption {
      type = options.nixpkgs.pkgs.type;
      default = pkgs;
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ import ./make-test-python.nix ( { pkgs, nftables, ... } : {
    };

  testScript = { nodes, ... }: let
    newSystem = nodes.walled2.config.system.build.toplevel;
    newSystem = nodes.walled2.system.build.toplevel;
    unit = if nftables then "nftables" else "firewall";
  in ''
    start_all()
+2 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : {
        { services.httpd.enable = true;
          services.httpd.adminAddr = "foo@example.org";
          networking.firewall.allowedTCPPorts = [ 80 ];
          # disable testing driver's default IPv6 address.
          networking.interfaces.eth1.ipv6.addresses = lib.mkForce [ ];
        };

      router =
Loading