summaryrefslogtreecommitdiff
path: root/src/Propellor/Types/Dns.hs
diff options
context:
space:
mode:
authorFélix Sipma2015-09-16 10:00:44 +0200
committerJoey Hess2015-09-16 10:57:38 -0400
commitec2ac2b4d7a1783e6deca2f73a57faabb4b25cd7 (patch)
tree934d46e909fffce2084aa11d6a22ad4581935b0e /src/Propellor/Types/Dns.hs
parent1f4904881019efe275ba0e80b6beb5a2355e0b23 (diff)
Types.Dns: simplify canonicalGroup
Signed-off-by: Félix Sipma <felix.sipma@no-log.org>
Diffstat (limited to 'src/Propellor/Types/Dns.hs')
-rw-r--r--src/Propellor/Types/Dns.hs11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/Propellor/Types/Dns.hs b/src/Propellor/Types/Dns.hs
index 4a0dd805..3497b3ed 100644
--- a/src/Propellor/Types/Dns.hs
+++ b/src/Propellor/Types/Dns.hs
@@ -109,12 +109,11 @@ canonicalIP :: IPAddr -> IPAddr
canonicalIP (IPv4 addr) = IPv4 addr
canonicalIP (IPv6 addr) = IPv6 $ intercalate ":" $ map canonicalGroup $ split ":" $ replaceImplicitGroups addr
where
- canonicalGroup g = case length g of
- 0 -> "0000"
- 1 -> "000" ++ g
- 2 -> "00" ++ g
- 3 -> "0" ++ g
- _ -> g
+ canonicalGroup g
+ | l <= 4 = replicate (4 - l) '0' ++ g
+ | otherwise = error $ "IPv6 group " ++ g ++ "as more than 4 hex digits"
+ where
+ l = length g
emptyGroups n = iterate (++ ":") "" !! n
numberOfImplicitGroups a = 8 - length (split ":" $ replace "::" "" a)
replaceImplicitGroups a = concat $ aux $ split "::" a