nixos/home: Prefer dave for stream RSTP
CI / Check, build and cache nixfiles (push) Failing after 24m39s
Update docs / update (push) Successful in 1m9s

Set explicit port costs so `stream` prefers `dave` over `jim`.

Trigger `mstpd` when the bridge is configured, before it is routable.
This commit is contained in:
2026-08-03 21:33:34 +01:00
parent 7fe3c8186c
commit b8f31e23f8
3 changed files with 7 additions and 7 deletions
+3 -2
View File
@@ -76,8 +76,9 @@ box sets:
## Switching (RSTP) ## Switching (RSTP)
`stream` is dual-homed to both switches: `lan-jim` (igc) and `lan-dave` (mlx4_en), both MTU 9000, `stream` is dual-homed to both switches: `lan-jim` (igc) and `lan-dave` (mlx4_en), both MTU 9000,
are enslaved to the `lan` bridge with `STP=true`. [`routing-common/mstpd.nix`](../../../nixos/boxes/home/routing-common/mstpd.nix) are enslaved to the `lan` bridge with `STP=true`. The explicit bridge-port costs prefer
runs a patched `mstpd` and forces RSTP on `lan` once it's routable, so exactly one uplink carries `lan-dave` at 10 over `lan-jim` at 100. [`routing-common/mstpd.nix`](../../../nixos/boxes/home/routing-common/mstpd.nix)
runs a patched `mstpd` and forces RSTP on `lan` once it is configured, so exactly one uplink carries
traffic at a time. (The remaining NICs are renamed `et2`/`et5` and left unconfigured.) traffic at a time. (The remaining NICs are renamed `et2`/`et5` and left unconfigured.)
## Deployment ## Deployment
+1 -1
View File
@@ -24,7 +24,7 @@ in
services = { services = {
networkd-dispatcher.rules = { networkd-dispatcher.rules = {
configure-mstpd = { configure-mstpd = {
onState = [ "routable" ]; onState = [ "configured" ];
script = '' script = ''
#!${pkgs.runtimeShell} #!${pkgs.runtimeShell}
if [ "$IFACE" = "lan" ]; then if [ "$IFACE" = "lan" ]; then
+3 -4
View File
@@ -115,10 +115,7 @@
Name = "lan"; Name = "lan";
Kind = "bridge"; Kind = "bridge";
}; };
extraConfig = '' bridgeConfig.STP = true;
[Bridge]
STP=true
'';
}; };
}; };
links = { links = {
@@ -175,10 +172,12 @@
"50-lan-jim" = { "50-lan-jim" = {
matchConfig.Name = "lan-jim"; matchConfig.Name = "lan-jim";
networkConfig.Bridge = "lan"; networkConfig.Bridge = "lan";
bridgeConfig.Cost = 100;
}; };
"50-lan-dave" = { "50-lan-dave" = {
matchConfig.Name = "lan-dave"; matchConfig.Name = "lan-dave";
networkConfig.Bridge = "lan"; networkConfig.Bridge = "lan";
bridgeConfig.Cost = 10;
}; };
"50-wan-ifb" = { "50-wan-ifb" = {