[usocket-cvs] r184 - usocket/trunk

ehuelsmann at common-lisp.net ehuelsmann at common-lisp.net
Fri Jan 19 23:53:45 UTC 2007


Author: ehuelsmann
Date: Fri Jan 19 18:53:45 2007
New Revision: 184

Modified:
   usocket/trunk/package.lisp
   usocket/trunk/usocket.lisp
Log:
Add ip comparison functions ip= and ip/=.

Modified: usocket/trunk/package.lisp
==============================================================================
--- usocket/trunk/package.lisp	(original)
+++ usocket/trunk/package.lisp	Fri Jan 19 18:53:45 2007
@@ -30,11 +30,13 @@
              #:socket
              #:socket-stream
 
-             #:host-byte-order ; IPv4 utility functions
+             #:host-byte-order ; IP(v4) utility functions
              #:hbo-to-dotted-quad
              #:hbo-to-vector-quad
              #:vector-quad-to-dotted-quad
              #:dotted-quad-to-vector-quad
+             #:ip=
+             #:ip/=
 
              #:socket-condition ; conditions
              #:socket-error ; errors

Modified: usocket/trunk/usocket.lisp
==============================================================================
--- usocket/trunk/usocket.lisp	(original)
+++ usocket/trunk/usocket.lisp	Fri Jan 19 18:53:45 2007
@@ -121,7 +121,7 @@
       , at body))
 
 ;;
-;; IPv4 utility functions
+;; IP(v4) utility functions
 ;;
 
 (defun list-of-strings-to-integers (list)
@@ -173,6 +173,29 @@
   (+ (* (aref vector 0) 256 256 256) (* (aref vector 1) 256 256)
      (* (aref vector 2) 256) (aref vector 3)))
 
+(defmethod host-byte-order ((int integer))
+  int)
+
+(defun host-to-hostname (host)
+  "Translate a string or vector quad to a stringified hostname."
+  (etypecase host
+    (string host)
+    ((vector t 4) (vector-quad-to-dotted-quad host))
+    (integer (hbo-to-dotted-quad host))))
+
+(defun ip= (ip1 ip2)
+  (etypecase ip1
+    (string (string= ip1 (host-to-hostname ip2)))
+    ((vector t 4) (or (eq ip1 ip2)
+                      (and (= (aref ip1 0) (aref ip2 0))
+                           (= (aref ip1 1) (aref ip2 1))
+                           (= (aref ip1 2) (aref ip2 2))
+                           (= (aref ip1 3) (aref ip2 3)))))
+    (integer (= ip1 (host-byte-order ip2)))))
+
+(defun ip/= (ip1 ip2)
+  (not (ip= ip1 ip2)))
+
 ;;
 ;; DNS helper functions
 ;;
@@ -210,13 +233,6 @@
       ((vector t 4) (host-byte-order host))
       (integer host))))
 
-(defun host-to-hostname (host)
-  "Translate a string or vector quad to a stringified hostname."
-  (etypecase host
-    (string host)
-    ((vector t 4) (vector-quad-to-dotted-quad host))
-    (integer (hbo-to-dotted-quad host))))
-
 ;;
 ;; Setting of documentation for backend defined functions
 ;;



More information about the usocket-cvs mailing list