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