domain: fix validIpv6 predicate
[hcoop/domtool2.git] / src / domain.sml
index a84a6d8..15bc8b7 100644 (file)
@@ -107,7 +107,7 @@ fun validIpv6 s =
                              | (_, n) => n) 0 fields
 
        fun noIpv4 maxLen =
-           length fields >= 2
+           length fields >= 3
            andalso length fields <= maxLen
            andalso empties <= 1
            andalso List.all (fn "" => true
@@ -123,8 +123,13 @@ fun validIpv6 s =
            in
                validIp maybeIpv4 andalso noIpv4 6
            end
+
+       fun localHost () =
+           length fields = 3
+           andalso empties = 2
+           andalso List.last fields = "1"
     in
-       noIpv4 8 orelse hasIpv4 ()
+       localHost () orelse noIpv4 8 orelse hasIpv4 ()
     end
 
 fun isIdent ch = Char.isLower ch orelse Char.isDigit ch