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
|
else
|
||||||
any ({ switch ? null, ... }: switch != null)
|
any ({ switch ? null, ... }: switch != null)
|
||||||
(builtins.attrValues openwrtModel.ports);
|
(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 =
|
portsDoc =
|
||||||
let
|
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:
|
networkInterfaces = net:
|
||||||
let
|
let
|
||||||
inherit (config.site.net.${net}) vlan;
|
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_ip=${config.site.net.mgmt.hosts4.logging}
|
||||||
uci set system.@system[0].log_proto=udp
|
uci set system.@system[0].log_proto=udp
|
||||||
|
|
||||||
# Switch config
|
|
||||||
${optionalString hasSwitch ''
|
${optionalString hasSwitch ''
|
||||||
|
# Switch config
|
||||||
# Ports ${portsDoc}
|
# Ports ${portsDoc}
|
||||||
${concatMapStrings (net: ''
|
${concatMapStrings (net: ''
|
||||||
uci add network switch_vlan
|
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].vlan='${toString config.site.net.${net}.vlan}'
|
||||||
uci set network.@switch_vlan[-1].ports='${switchPortsConfig net}'
|
uci set network.@switch_vlan[-1].ports='${switchPortsConfig net}'
|
||||||
uci set network.@switch_vlan[-1].comment='${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:
|
sort (net1: net2:
|
||||||
config.site.net.${net1}.vlan < config.site.net.${net2}.vlan
|
config.site.net.${net1}.vlan < config.site.net.${net2}.vlan
|
||||||
|
|
Loading…
Reference in New Issue
Block a user