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

This commit is contained in:
Connor Baker
2026-02-03 08:10:09 +00:00
committed by GitHub
4 changed files with 85 additions and 42 deletions
+1
View File
@@ -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;
@@ -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"
+66
View File
@@ -0,0 +1,66 @@
{ 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
View File
@@ -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";