summaryrefslogtreecommitdiffstats
path: root/lib/krebs/genipv6.nix
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2018-12-12 15:46:41 +0100
committerlassulus <lassulus@lassul.us>2018-12-12 15:46:41 +0100
commit25cf61f6a74b69656d15f52021f25a6c2e4068e6 (patch)
treefcde9910b7e30a27bfd53e394cb763691882e704 /lib/krebs/genipv6.nix
parent4d44efa2fceda1308dbe8207e8fd0f122cd64e19 (diff)
parent35be9c66bfa6dd03437f919ec610aed0e9b20b58 (diff)
Merge remote-tracking branch 'ni/master'
Diffstat (limited to 'lib/krebs/genipv6.nix')
-rw-r--r--lib/krebs/genipv6.nix32
1 files changed, 4 insertions, 28 deletions
diff --git a/lib/krebs/genipv6.nix b/lib/krebs/genipv6.nix
index bf3ebab38..af1df6d0e 100644
--- a/lib/krebs/genipv6.nix
+++ b/lib/krebs/genipv6.nix
@@ -26,7 +26,7 @@ let {
inherit subnetname;
subnetCIDR = "${subnetAddress}/${toString subnetPrefixLength}";
subnetAddress = appendZeros subnetPrefixLength subnetPrefix;
- subnetHash = hash 4 subnetname;
+ subnetHash = hashToLength 4 subnetname;
subnetPrefix = joinAddress netPrefix subnetHash;
subnetPrefixLength = netPrefixLength + 16;
@@ -34,7 +34,9 @@ let {
set =
concatStringsSep
":"
- (stringToGroupsOf 4 (hash (suffixLength / 4) suffixSpec.hostName));
+ (stringToGroupsOf
+ 4
+ (hashToLength (suffixLength / 4) suffixSpec.hostName));
string = suffixSpec;
};
suffixLength = addressLength - subnetPrefixLength;
@@ -54,32 +56,6 @@ let {
in
formatAddress (map (const "0") (range 1 zeroCount) ++ parsedaddr);
- # Split string into list of chunks where each chunk is at most n chars long.
- # The leftmost chunk might shorter.
- # Example: stringToGroupsOf "123456" -> ["12" "3456"]
- stringToGroupsOf = n: s: let
- acc =
- foldl'
- (acc: c: if stringLength acc.chunk < n then {
- chunk = acc.chunk + c;
- chunks = acc.chunks;
- } else {
- chunk = c;
- chunks = acc.chunks ++ [acc.chunk];
- })
- {
- chunk = "";
- chunks = [];
- }
- (stringToCharacters s);
- in
- filter (x: x != []) ([acc.chunk] ++ acc.chunks);
-
- hash = n: s: substring 0 n (hashString "sha256" s);
-
- dropLast = n: xs: reverseList (drop n (reverseList xs));
- takeLast = n: xs: reverseList (take n (reverseList xs));
-
hasEmptyPrefix = xs: take 2 xs == ["" ""];
hasEmptySuffix = xs: takeLast 2 xs == ["" ""];
hasEmptyInfix = xs: any (x: x == "") (trimEmpty 2 xs);