mgmt and first config hopefully
This commit is contained in:
parent
9fe7846c8f
commit
942db1bc92
1 changed files with 75 additions and 71 deletions
146
configMaker.nix
146
configMaker.nix
|
@ -4,76 +4,76 @@ let module_inst = {
|
|||
interface-mode = "trunk";
|
||||
vlans = [ "users" "admin" ];
|
||||
};
|
||||
off.interface-mode = "none";
|
||||
in {
|
||||
# TODO: management
|
||||
"ge-0/0/0" = { # upstream
|
||||
interface-mode = "trunk";
|
||||
vlans = [ "all" ];
|
||||
dhcp_trusted = true;
|
||||
};
|
||||
"ge-0/0/1" = AP;
|
||||
"ge-0/0/2" = { # thurne 1
|
||||
interface-mode = "access";
|
||||
vlans = [ 3045 ];
|
||||
};
|
||||
"ge-0/0/3" = { # thurne 2
|
||||
interface-mode = "access";
|
||||
vlans = [ 3046 ];
|
||||
};
|
||||
"ge-0/0/4" = AP;
|
||||
"ge-0/0/5" = AP;
|
||||
"ge-0/0/6" = AP;
|
||||
"ge-0/0/7" = AP;
|
||||
"ge-0/0/8" = AP;
|
||||
"ge-0/0/9" = AP;
|
||||
"ge-0/0/10" = AP;
|
||||
"ge-0/0/11" = AP;
|
||||
"ge-0/0/0" = off;
|
||||
"ge-0/0/1" = off;
|
||||
"ge-0/0/2" = off;
|
||||
"ge-0/0/3" = off;
|
||||
"ge-0/0/4" = off;
|
||||
"ge-0/0/5" = off;
|
||||
"ge-0/0/6" = off;
|
||||
"ge-0/0/7" = off;
|
||||
"ge-0/0/8" = off;
|
||||
"ge-0/0/9" = off;
|
||||
"ge-0/0/10" = off;
|
||||
"ge-0/0/11" = off;
|
||||
"ge-0/0/12" = AP;
|
||||
"ge-0/0/13" = AP;
|
||||
"ge-0/0/14" = AP;
|
||||
"ge-0/0/15" = AP;
|
||||
"ge-0/0/16" = AP;
|
||||
"ge-0/0/17" = AP;
|
||||
"ge-0/0/18" = AP;
|
||||
"ge-0/0/19" = AP;
|
||||
"ge-0/0/20" = AP;
|
||||
"ge-0/0/21" = AP;
|
||||
"ge-0/0/22" = AP;
|
||||
"ge-0/0/23" = AP;
|
||||
"ge-0/0/24" = AP;
|
||||
"ge-0/0/25" = AP;
|
||||
"ge-0/0/26" = AP;
|
||||
"ge-0/0/27" = AP;
|
||||
"ge-0/0/28" = AP;
|
||||
"ge-0/0/29" = AP;
|
||||
"ge-0/0/30" = AP;
|
||||
"ge-0/0/31" = AP;
|
||||
"ge-0/0/32" = AP;
|
||||
"ge-0/0/33" = AP;
|
||||
"ge-0/0/34" = AP;
|
||||
"ge-0/0/35" = AP;
|
||||
"ge-0/0/36" = AP;
|
||||
"ge-0/0/37" = AP;
|
||||
"ge-0/0/38" = AP;
|
||||
"ge-0/0/39" = AP;
|
||||
"ge-0/0/40" = AP;
|
||||
"ge-0/0/41" = AP;
|
||||
"ge-0/0/42" = AP;
|
||||
"ge-0/0/43" = AP;
|
||||
"ge-0/0/44" = AP;
|
||||
"ge-0/0/45" = AP;
|
||||
"ge-0/0/46" = AP;
|
||||
"ge-0/0/47" = AP;
|
||||
"ge-0/0/18" = off;
|
||||
"ge-0/0/19" = off;
|
||||
"ge-0/0/20" = off;
|
||||
"ge-0/0/21" = off;
|
||||
"ge-0/0/22" = off;
|
||||
"ge-0/0/23" = off;
|
||||
"ge-0/0/24" = off;
|
||||
"ge-0/0/25" = off;
|
||||
"ge-0/0/26" = off;
|
||||
"ge-0/0/27" = off;
|
||||
"ge-0/0/28" = off;
|
||||
"ge-0/0/29" = off;
|
||||
"ge-0/0/30" = off;
|
||||
"ge-0/0/31" = off;
|
||||
"ge-0/0/32" = off;
|
||||
"ge-0/0/33" = off;
|
||||
"ge-0/0/34" = off;
|
||||
"ge-0/0/35" = off;
|
||||
"ge-0/0/36" = off;
|
||||
"ge-0/0/37" = off;
|
||||
"ge-0/0/38" = off;
|
||||
"ge-0/0/39" = off;
|
||||
"ge-0/0/40" = off;
|
||||
"ge-0/0/41" = off;
|
||||
"ge-0/0/42" = off;
|
||||
"ge-0/0/43" = off;
|
||||
"ge-0/0/44" = off;
|
||||
"ge-0/0/45" = off;
|
||||
"ge-0/0/46" = off;
|
||||
"ge-0/0/47" = off;
|
||||
|
||||
"ge-0/1/0" = AP;
|
||||
"ge-0/1/1" = AP;
|
||||
"ge-0/1/2" = AP;
|
||||
"ge-0/1/3" = AP;
|
||||
"ge-0/1/0" = { # upstream
|
||||
interface-mode = "trunk";
|
||||
vlans = [ "all" ];
|
||||
dhcp_trusted = true;
|
||||
management = true;
|
||||
};
|
||||
"ge-0/1/1" = off;
|
||||
"ge-0/1/2" = off;
|
||||
"ge-0/1/3" = off;
|
||||
|
||||
"xe-0/1/0" = AP;
|
||||
"xe-0/1/1" = AP;
|
||||
"xe-0/1/2" = AP;
|
||||
"xe-0/1/3" = AP;
|
||||
"xe-0/1/0" = off;
|
||||
"xe-0/1/1" = off;
|
||||
"xe-0/1/2" = off;
|
||||
"xe-0/1/3" = off;
|
||||
|
||||
"me0" = { # mgmt
|
||||
interface-mode = "none";
|
||||
management = true;
|
||||
};
|
||||
};
|
||||
vlans = {
|
||||
"users" = [ { begin = 3045; end = 4094; } ];
|
||||
|
@ -90,30 +90,34 @@ let module_inst = {
|
|||
interface = {config, ...}: {
|
||||
options = {
|
||||
interface-mode = mkOption {
|
||||
type = types.enum [ "trunk" "access" ];
|
||||
type = types.enum [ "trunk" "access" "none" ];
|
||||
#TODO: default = if ;
|
||||
};
|
||||
vlans = mkOption { type = types.listOf vlan_type; };
|
||||
vlans = mkOption {
|
||||
type = types.listOf vlan_type;
|
||||
};
|
||||
dhcp_trusted = mkOption { type = types.bool; default = false; };
|
||||
management = mkOption { type = types.bool; default = false; };
|
||||
|
||||
xmlGen = mkOption { type = types.uniq types.unspecified; };
|
||||
};
|
||||
config.vlans = lib.mkIf (config.interface-mode == "none") (lib.mkForce [ ]);
|
||||
config.xmlGen = name:
|
||||
let
|
||||
vlans = builtins.foldl'
|
||||
(acc: vlan: acc + "<members>${builtins.toString vlan}</members>")
|
||||
""
|
||||
config.vlans;
|
||||
mgmt_fam = if config.management then "<inet><dhcp/></inet>" else "";
|
||||
eth_switch = if config.interface-mode == "none" then "" else ''
|
||||
<ethernet-switching>
|
||||
<interface-mode>${config.interface-mode}</interface-mode>
|
||||
<vlan>${builtins.concatStringsSep "" (map (vlan: "<members>${builtins.toString vlan}</members>") config.vlans)}</vlan>
|
||||
</ethernet-switching>'';
|
||||
in ''
|
||||
<interface>
|
||||
<name>${name}</name>
|
||||
<unit>
|
||||
<name>0</name>
|
||||
<family>
|
||||
<ethernet-switching>
|
||||
<interface-mode>${config.interface-mode}</interface-mode>
|
||||
<vlan>${vlans}</vlan>
|
||||
</ethernet-switching>
|
||||
${mgmt_fam}
|
||||
${eth_switch}
|
||||
</family>
|
||||
</unit>
|
||||
</interface>'';
|
||||
|
|
Reference in a new issue