forked from zentralwerk/network
lib/config/options: add duplicate vlan check
This commit is contained in:
parent
76086449dd
commit
2808bebffc
|
@ -600,5 +600,25 @@ in
|
||||||
in map (addr: {
|
in map (addr: {
|
||||||
assertion = builtins.length addrHosts.${addr} == 1;
|
assertion = builtins.length addrHosts.${addr} == 1;
|
||||||
message = "Address ${addr} is assigned to more than one host: ${lib.concatStringsSep " " addrHosts.${addr}}";
|
message = "Address ${addr} is assigned to more than one host: ${lib.concatStringsSep " " addrHosts.${addr}}";
|
||||||
}) (builtins.attrNames addrHosts));
|
}) (builtins.attrNames addrHosts))
|
||||||
|
++
|
||||||
|
# duplicate vlan check
|
||||||
|
(let
|
||||||
|
vlanNets =
|
||||||
|
builtins.foldl' (result: net:
|
||||||
|
let
|
||||||
|
vlan = toString config.site.net.${net}.vlan;
|
||||||
|
in
|
||||||
|
if result ? ${vlan}
|
||||||
|
then result // {
|
||||||
|
"${vlan}" = result.${vlan} ++ [ net ];
|
||||||
|
}
|
||||||
|
else result // {
|
||||||
|
"${vlan}" = [ net ];
|
||||||
|
}
|
||||||
|
) {} (builtins.attrNames config.site.net);
|
||||||
|
in map (vlan: {
|
||||||
|
assertion = builtins.length vlanNets.${vlan} == 1;
|
||||||
|
message = "VLAN ${vlan} is used by more than one network: ${lib.concatStringsSep " " vlanNets.${vlan}}";
|
||||||
|
}) (builtins.attrNames vlanNets));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue