Unverified Commit 9d40cdbd authored by Connor Baker's avatar Connor Baker Committed by GitHub
Browse files

mstpd: 0.0.8 -> 0.1.0 (fixes nixosTests.containers-restart_networking) (#476636)

parents a133ad3c 7109a791
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1408,6 +1408,7 @@ in
  rspamd-trainer = runTest ./rspamd-trainer.nix;
  rss-bridge = handleTest ./web-apps/rss-bridge { };
  rss2email = handleTest ./rss2email.nix { };
  rstp = runTest ./rstp.nix;
  rstudio-server = runTest ./rstudio-server.nix;
  rsync = runTest ./rsync.nix;
  rsyncd = runTest ./rsyncd.nix;
+0 −31
Original line number Diff line number Diff line
@@ -55,24 +55,6 @@
          ];
        };
      };

      specialisation.eth1-rstp.configuration = {
        networking.bridges.br0 = {
          interfaces = [ "eth1" ];
          rstp = lib.mkForce true;
        };

        networking.interfaces = {
          eth1.ipv4.addresses = lib.mkForce [ ];
          eth1.ipv6.addresses = lib.mkForce [ ];
          br0.ipv4.addresses = [
            {
              address = "192.168.1.2";
              prefixLength = 24;
            }
          ];
        };
      };
    };
  };

@@ -100,19 +82,6 @@
            "grep eth1 /run/br0.interfaces >&2",
        )

    #  activating rstp needs another service, therefore the bridge will restart and the container will lose its connectivity
    # with subtest("Bridged configuration with STP"):
    #     client.succeed("/run/booted-system/specialisation/eth1-rstp/bin/switch-to-configuration test >&2")
    #     client.execute("ip -4 a >&2")
    #     client.execute("ip l >&2")
    #
    #     client.succeed(
    #         "ping 192.168.1.122 -c 1 -n >&2",
    #         "nixos-container run webserver -- ping -c 1 -n 192.168.1.2 >&2",
    #         "ip l show eth1 |grep 'master br0' >&2",
    #         "grep eth1 /run/br0.interfaces >&2",
    #     )

    with subtest("Reverting to initial configuration preserves connectivity"):
        client.succeed(
            "/run/booted-system/bin/switch-to-configuration test >&2"

nixos/tests/rstp.nix

0 → 100644
+66 −0
Original line number Diff line number Diff line
{ pkgs, lib, ... }:
{
  name = "rstp";

  nodes = {
    client = {
      containers = {
        peer = {
          autoStart = true;
          privateNetwork = true;
          hostBridge = "br0";

          config = {
            networking = {
              interfaces = {
                eth0 = {
                  ipv4.addresses = [
                    {
                      address = "192.168.1.122";
                      prefixLength = 24;
                    }
                  ];
                };
              };
            };
          };
        };
      };

      networking = {
        bridges = {
          br0 = {
            interfaces = [ ];
            rstp = true;
          };
        };

        interfaces = {
          eth1 = {
            ipv4.addresses = lib.mkForce [ ];
            ipv6.addresses = lib.mkForce [ ];
          };

          br0 = {
            ipv4.addresses = [
              {
                address = "192.168.1.2";
                prefixLength = 24;
              }
            ];
          };
        };
      };

      virtualisation = {
        vlans = [ 1 ];
      };
    };
  };

  testScript = ''
    client.start()
    client.wait_for_unit("default.target")
    client.wait_until_succeeds("journalctl | grep 'Port vb-peer : up'", timeout=10)
  '';
}
+18 −11
Original line number Diff line number Diff line
@@ -8,32 +8,39 @@

stdenv.mkDerivation (finalAttrs: {
  pname = "mstpd";
  version = "0.0.8";
  version = "0.1.0";

  src = fetchFromGitHub {
    owner = "mstpd";
    repo = "mstpd";
    rev = finalAttrs.version;
    sha256 = "1xkfydxljdnj49p5r3mirk4k146428b6imfc9bkfps9yjn64mkgb";
    hash = "sha256-m4gbVXAPIYGQvTFaSziFuOO6say5kgUsk7NSdqXgKmA=";
  };

  patches = [
    (fetchpatch {
      name = "fix-strncpy-gcc9.patch";
      url = "https://github.com/mstpd/mstpd/commit/d27d7e93485d881d8ff3a7f85309b545edbe1fc6.patch";
      sha256 = "19456daih8l3y6m9kphjr7pj7slrqzbj6yacnlgznpxyd8y4d86y";
    })
  ];

  nativeBuildInputs = [ autoreconfHook ];

  configureFlags = [
    "--prefix=$(out)"
    "--sysconfdir=$(out)/etc"
    "--sbindir=$(out)/sbin"
    "--sbindir=$(out)/bin"
    "--libexecdir=$(out)/lib"
    "--with-bashcompletiondir=$(out)/share/bash-completion/completions"
  ];

  # bridge-stp is a helper called by the kernel whenever STP is enabled/disabled
  # on a bridge - the built-in version is incompatible with NixOS, so there's no
  # point keeping it around.
  #
  # An alternative script gets automatically generated by NixOS network module
  # whenever a bridge needs mstpd (grep for `bridgeStp`).
  postInstall = ''
    rm $out/bin/bridge-stp

    # Remove now-dangling symlinks, too
    rm $out/bin/mstp_restart
    rm $out/lib/mstpctl-utils/mstpctl_restart_config
  '';

  meta = {
    description = "Multiple Spanning Tree Protocol daemon";
    homepage = "https://github.com/mstpd/mstpd";