forked from zentralwerk/network
pkgs/openwrt/uci-config: add config for Distributed Switch Architecture
This commit is contained in:
parent
a8bb090bba
commit
571365548c
|
@ -20,6 +20,16 @@ let
|
|||
else
|
||||
any ({ switch ? null, ... }: switch != null)
|
||||
(builtins.attrValues openwrtModel.ports);
|
||||
hasDSA =
|
||||
all ({ switch ? null, ... }:
|
||||
switch == null
|
||||
) (builtins.attrValues openwrtModel.ports)
|
||||
&&
|
||||
any ({ port ? null, interface ? null, ... }:
|
||||
port != null &&
|
||||
interface != null &&
|
||||
port == interface
|
||||
) (builtins.attrValues openwrtModel.ports);
|
||||
|
||||
portsDoc =
|
||||
let
|
||||
|
@ -99,6 +109,20 @@ let
|
|||
)
|
||||
);
|
||||
|
||||
dsaPorts = net:
|
||||
unique (
|
||||
concatMap ({ ports, ... }: ports) (
|
||||
builtins.filter ({ nets, ... }: builtins.elem net nets)
|
||||
(builtins.attrValues hostConfig.links)
|
||||
));
|
||||
|
||||
dsaPortType = net: port:
|
||||
if any ({ ports, trunk, ... }: trunk && builtins.elem port ports) (
|
||||
builtins.attrValues hostConfig.links
|
||||
) || hostConfig.links.${net}.trunk or true
|
||||
then "t"
|
||||
else "u*";
|
||||
|
||||
networkInterfaces = net:
|
||||
let
|
||||
inherit (config.site.net.${net}) vlan;
|
||||
|
@ -158,8 +182,8 @@ in
|
|||
uci set system.@system[0].log_ip=${config.site.net.mgmt.hosts4.logging}
|
||||
uci set system.@system[0].log_proto=udp
|
||||
|
||||
# Switch config
|
||||
${optionalString hasSwitch ''
|
||||
# Switch config
|
||||
# Ports ${portsDoc}
|
||||
${concatMapStrings (net: ''
|
||||
uci add network switch_vlan
|
||||
|
@ -168,7 +192,26 @@ in
|
|||
uci set network.@switch_vlan[-1].vlan='${toString config.site.net.${net}.vlan}'
|
||||
uci set network.@switch_vlan[-1].ports='${switchPortsConfig net}'
|
||||
uci set network.@switch_vlan[-1].comment='${net}'
|
||||
|
||||
'') (
|
||||
sort (net1: net2:
|
||||
config.site.net.${net1}.vlan < config.site.net.${net2}.vlan
|
||||
) (
|
||||
unique (
|
||||
builtins.concatMap ({ nets, ... }: nets)
|
||||
(builtins.attrValues hostConfig.links)
|
||||
)
|
||||
)
|
||||
)}
|
||||
''}
|
||||
${optionalString hasDSA ''
|
||||
# DSA
|
||||
${concatMapStrings (net: ''
|
||||
uci add network bridge-vlan
|
||||
uci set network.@bridge-vlan[-1].device='br-lan'
|
||||
uci set network.@bridge-vlan[-1].vlan='${toString config.site.net.${net}.vlan}'
|
||||
${concatMapStrings (port: ''
|
||||
uci add_list network.@bridge-vlan[-1].ports='${port}:${dsaPortType net port}'
|
||||
'') (dsaPorts net)}
|
||||
'') (
|
||||
sort (net1: net2:
|
||||
config.site.net.${net1}.vlan < config.site.net.${net2}.vlan
|
||||
|
|
Loading…
Reference in New Issue