diff options
| author | Félix Sipma <felix.sipma@no-log.org> | 2015-09-16 10:00:44 +0200 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2015-09-16 10:57:38 -0400 |
| commit | ec2ac2b4d7a1783e6deca2f73a57faabb4b25cd7 (patch) | |
| tree | 934d46e909fffce2084aa11d6a22ad4581935b0e | |
| parent | 1f4904881019efe275ba0e80b6beb5a2355e0b23 (diff) | |
Types.Dns: simplify canonicalGroup
Signed-off-by: Félix Sipma <felix.sipma@no-log.org>
| -rw-r--r-- | src/Propellor/Types/Dns.hs | 11 |
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 |
