From c5ae3fe2a7fd586163b584510b6c2306681005f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sun, 1 Jun 2025 22:51:02 +0200 Subject: [PATCH 1/2] Fix mkReverseRecord for ::1 and 1:: being twice as long --- dns/util/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dns/util/default.nix b/dns/util/default.nix index fea2dba..40d4b89 100644 --- a/dns/util/default.nix +++ b/dns/util/default.nix @@ -37,7 +37,13 @@ let # Returns the record of the ipv6 as a list mkRecordAux = v6: let - splitted = lib.splitString ":" v6; + v6' = if lib.hasPrefix "::" v6 then + "0${v6}" + else if lib.hasSuffix "::" v6 then + "${v6}0" + else + v6; + splitted = lib.splitString ":" v6'; n = 8 - builtins.length (lib.filter (x: x != "") splitted); in lib.stringToCharacters (lib.concatMapStrings (align4BytesOrExpand n) splitted); From 54568e3eb2a17985c81e2b2536879a20bbf99ab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sun, 1 Jun 2025 22:51:37 +0200 Subject: [PATCH 2/2] Add mkIpv4ReverseRecord, rename mkReverseRecord to mkIPv6ReverseRecord --- default.nix | 3 ++- dns/default.nix | 2 +- dns/util/default.nix | 18 ++++++++++++++---- flake.nix | 2 +- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/default.nix b/default.nix index f153abe..3665079 100644 --- a/default.nix +++ b/default.nix @@ -17,7 +17,8 @@ rec { inherit (dns) combinators evalZone - mkReverseRecord + mkIPv4ReverseRecord + mkIPv6ReverseRecord types ; diff --git a/dns/default.nix b/dns/default.nix index ef14c67..bcf406f 100644 --- a/dns/default.nix +++ b/dns/default.nix @@ -41,5 +41,5 @@ in inherit combinators; - inherit (dnslib.util) mkReverseRecord; + inherit (dnslib.util) mkIPv4ReverseRecord mkIPv6ReverseRecord; } diff --git a/dns/util/default.nix b/dns/util/default.nix index 40d4b89..f0bc06b 100644 --- a/dns/util/default.nix +++ b/dns/util/default.nix @@ -35,7 +35,7 @@ let # : str -> [ str ] # Returns the record of the ipv6 as a list - mkRecordAux = v6: + mkIPv6RecordAux = v6: let v6' = if lib.hasPrefix "::" v6 then "0${v6}" @@ -50,9 +50,19 @@ let # : str -> str # Returns the reversed record of the ipv6 - mkReverseRecord = v6: - lib.concatStringsSep "." (lib.reverseList (mkRecordAux v6)) + ".ip6.arpa"; + mkIPv6ReverseRecord = v6: + lib.concatStringsSep "." (lib.reverseList (mkIPv6RecordAux v6)) + ".ip6.arpa"; + # : str -> str + # Returns the reversed record of the ipv4 + mkIPv4ReverseRecord = v4: + lib.concatStringsSep "." ( + lib.reverseList ( + lib.filter lib.isString ( + lib.splitString "." v4 + ) + ) + ) + ".in-addr.arpa"; in { - inherit writeCharacterString mkReverseRecord; + inherit writeCharacterString mkIPv4ReverseRecord mkIPv6ReverseRecord; } diff --git a/flake.nix b/flake.nix index 8ad2355..c6c8562 100644 --- a/flake.nix +++ b/flake.nix @@ -20,7 +20,7 @@ inherit (dns) evalZone; inherit (dns) combinators; inherit (dns) types; - inherit (dns) mkReverseRecord; + inherit (dns) mkIPv4ReverseRecord mkIPv6ReverseRecord; toString = name: zone: builtins.toString (dns.evalZone name zone); } // dns.combinators;