`@ -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)`