netmasks.nix: turn into code
This commit is contained in:
parent
df32c2c7f3
commit
58dccf697f
|
@ -1,35 +1,33 @@
|
|||
{
|
||||
"0" = "0.0.0.0";
|
||||
"1" = "128.0.0.0";
|
||||
"2" = "192.0.0.0";
|
||||
"3" = "224.0.0.0";
|
||||
"4" = "240.0.0.0";
|
||||
"5" = "248.0.0.0";
|
||||
"6" = "252.0.0.0";
|
||||
"7" = "254.0.0.0";
|
||||
"8" = "255.0.0.0";
|
||||
"9" = "255.128.0.0";
|
||||
"10" = "255.192.0.0";
|
||||
"11" = "255.224.0.0";
|
||||
"12" = "255.240.0.0";
|
||||
"13" = "255.248.0.0";
|
||||
"14" = "255.252.0.0";
|
||||
"15" = "255.254.0.0";
|
||||
"16" = "255.255.0.0";
|
||||
"17" = "255.255.128.0";
|
||||
"18" = "255.255.192.0";
|
||||
"19" = "255.255.224.0";
|
||||
"20" = "255.255.240.0";
|
||||
"21" = "255.255.248.0";
|
||||
"22" = "255.255.252.0";
|
||||
"23" = "255.255.254.0";
|
||||
"24" = "255.255.255.0";
|
||||
"25" = "255.255.255.128";
|
||||
"26" = "255.255.255.192";
|
||||
"27" = "255.255.255.224";
|
||||
"28" = "255.255.255.240";
|
||||
"29" = "255.255.255.248";
|
||||
"30" = "255.255.255.252";
|
||||
"31" = "255.255.255.254";
|
||||
"32" = "255.255.255.255";
|
||||
let
|
||||
pow2 = n:
|
||||
if n <= 0
|
||||
then 1
|
||||
else 2 * (pow2 (n - 1));
|
||||
octet = n:
|
||||
if n == 0
|
||||
then 0
|
||||
else (pow2 (8 - n)) + (octet (n - 1));
|
||||
|
||||
netmask = len:
|
||||
builtins.concatStringsSep "." (
|
||||
map (byte:
|
||||
toString (
|
||||
if 8 * (byte + 1) <= len
|
||||
then 255
|
||||
else if 8 * byte <= len
|
||||
then octet (len - (8 * byte))
|
||||
else 0
|
||||
)
|
||||
) [0 1 2 3]
|
||||
);
|
||||
|
||||
keys = n:
|
||||
if n < 33
|
||||
then [n] ++ keys (n + 1)
|
||||
else [];
|
||||
in
|
||||
builtins.foldl' (netmasks: n:
|
||||
netmasks // {
|
||||
"${toString n}" = netmask n;
|
||||
}
|
||||
) {} (keys 0)
|
||||
|
|
Loading…
Reference in New Issue