support maps in firewallgen
This commit is contained in:
parent
45047dc023
commit
0ae5689a40
@ -13,8 +13,8 @@ let
|
|||||||
optionalString
|
optionalString
|
||||||
;
|
;
|
||||||
inherit (lib.lists) groupBy;
|
inherit (lib.lists) groupBy;
|
||||||
inherit (lib.attrsets) mapAttrsToList;
|
inherit (lib.attrsets) attrsToList mapAttrsToList;
|
||||||
inherit (builtins) map head tail;
|
inherit (builtins) elemAt map head tail toString;
|
||||||
|
|
||||||
indentLines =
|
indentLines =
|
||||||
offset: lines:
|
offset: lines:
|
||||||
@ -68,6 +68,25 @@ let
|
|||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
domap =
|
||||||
|
{
|
||||||
|
name,
|
||||||
|
type,
|
||||||
|
elements ? [ ],
|
||||||
|
extraText ? null,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
colonize = v:
|
||||||
|
let ty = elemAt (attrsToList v) 0; in "${ty.name}: ${ty.value}";
|
||||||
|
in ''
|
||||||
|
map ${name} {
|
||||||
|
type ${colonize type}
|
||||||
|
${if elements != [ ] then "elements = { ${concatStringsSep ", " (mapAttrsToList (k: v : "${k}: ${toString v}") elements)} }" else ""}
|
||||||
|
${optionalString (extraText != null) extraText}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
dochainorset =
|
dochainorset =
|
||||||
{
|
{
|
||||||
kind ? "chain",
|
kind ? "chain",
|
||||||
@ -76,6 +95,7 @@ let
|
|||||||
{
|
{
|
||||||
chain = dochain;
|
chain = dochain;
|
||||||
set = doset;
|
set = doset;
|
||||||
|
map = domap;
|
||||||
}
|
}
|
||||||
.${kind}
|
.${kind}
|
||||||
params;
|
params;
|
||||||
|
@ -151,6 +151,18 @@ in
|
|||||||
"eth0"
|
"eth0"
|
||||||
"eth1"
|
"eth1"
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
map-intf-limits-ip6 = {
|
||||||
|
name = "intf-limits";
|
||||||
|
kind = "map";
|
||||||
|
family = "ip6";
|
||||||
|
type = { ifname = "bytes"; };
|
||||||
|
elements = {
|
||||||
|
# XXX keys need to be generated from interface outputs
|
||||||
|
ppp0 = builtins.floor (70*1000*1000 * 0.05); # 5% of 70MB fttp connection
|
||||||
|
lan = builtins.floor (1000*1000*1000 * 0.05); # GB ethernet
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user