net.lisp: Improve error in `ipmask'.
[zone] / net.lisp
index c8852f9..1e32684 100644 (file)
--- a/net.lisp
+++ b/net.lisp
     (eq (class-of addr-a) (class-of addr-b))))
 
 (defun guess-address-class (str &key (start 0) (end nil))
-  (declare (ignore str start end))
-  'ip4addr)
+  (cond ((position #\: str :start start :end end) 'ip6addr)
+       (t 'ip4addr)))
 
 (defgeneric parse-partial-ipaddr (class str &key start end min max)
   (:method ((object t) str &rest keywords)
     (let ((w (ipaddr-width addr)))
       (if (<= 0 mask w)
          (integer-netmask w mask)
-         (error "Mask out of range.")))))
+         (error "Prefix length out of range.")))))
 
 (export 'mask-ipaddr)
 (defun mask-ipaddr (addr mask)