From c026fc30bd5719cc7e6ba3d80d8c7470bb99760f Mon Sep 17 00:00:00 2001
From: dtc <dtc>
Date: Sun, 11 Jan 1998 20:33:46 +0000
Subject: [PATCH] Cleanup the IP address conventions used by the internet
 functions. The network address representation had been used on many ports,
 but linux used the the host address in many cases. Now all the functions use
 the host address convention with conversion between the network convention
 performed by ntoh and hton when necessary.

---
 clx/dependent.lisp |  2 +-
 code/internet.lisp | 17 +++++++++--------
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/clx/dependent.lisp b/clx/dependent.lisp
index 882fb8b0c..e14be224c 100644
--- a/clx/dependent.lisp
+++ b/clx/dependent.lisp
@@ -2492,7 +2492,7 @@
 	((:internet nil 0)
 	 (unless (= (ext::host-entry-addr-type hostent) 2)
 	   (no-address-error))
-	 (let ((addr (ext:htonl (first (ext::host-entry-addr-list hostent)))))
+	 (let ((addr (first (ext::host-entry-addr-list hostent))))
 	   (list :internet
 		 (ldb (byte 8 24) addr)
 		 (ldb (byte 8 16) addr)
diff --git a/code/internet.lisp b/code/internet.lisp
index 03c814e48..5b4776301 100644
--- a/code/internet.lisp
+++ b/code/internet.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/internet.lisp,v 1.20 1998/01/11 17:36:31 dtc Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/internet.lisp,v 1.21 1998/01/11 20:33:44 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -105,6 +105,7 @@
 
 ;;;; Host entry operations.
 
+;;; Note the IP addresses are stored in host order.
 (defstruct host-entry
   name
   aliases
@@ -185,6 +186,8 @@ struct in_addr {
   (type int))
 
 (defun lookup-host-entry (host)
+  "Return a host-entry for the given host. The host may be an address
+  string or an IP address in host order."
   (if (typep host 'host-entry)
       host
       (with-alien
@@ -193,7 +196,7 @@ struct in_addr {
 		      (string
 		       (gethostbyname host))
 		      ((unsigned-byte 32)
-		       (gethostbyaddr host 4 af-inet)))))
+		       (gethostbyaddr (htonl host) 4 af-inet)))))
 	(unless (zerop (sap-int (alien-sap hostent)))
 	  (make-host-entry
 	   :name (slot hostent 'name)
@@ -219,7 +222,7 @@ struct in_addr {
 		      (results))
 		     (t
 		      (results 
-		       (deref (deref (slot hostent 'addr-list) index)))
+		       (ntohl (deref (deref (slot hostent 'addr-list) index))))
 		      (repeat (1+ index)))))))))))
 
 (defun create-unix-socket (&optional (kind :stream))
@@ -258,15 +261,14 @@ struct in_addr {
       socket)))
 
 (defun connect-to-inet-socket (host port &optional (kind :stream))
+  "The host may be an address string or an IP address in host order."
   (let ((socket (create-inet-socket kind))
 	(hostent (or (lookup-host-entry host)
 		     (error "Unknown host: ~S." host))))
     (with-alien ((sockaddr inet-sockaddr))
       (setf (slot sockaddr 'family) af-inet)
       (setf (slot sockaddr 'port) (htons port))
-      (setf (slot sockaddr 'addr) 
-         #-linux (host-entry-addr hostent)
-         #+linux (htonl (host-entry-addr hostent)))
+      (setf (slot sockaddr 'addr) (htonl (host-entry-addr hostent)))
       (when (minusp (unix:unix-connect socket
 				       (alien-sap sockaddr)
 				       (alien-size inet-sockaddr :bytes)))
@@ -304,8 +306,7 @@ struct in_addr {
 				       (alien-size inet-sockaddr :bytes))))
       (when (minusp connected)
 	(error "Error accepting a connection: ~A" (unix:get-unix-error-msg)))
-      (values connected #-linux (slot sockaddr 'addr)
-		        #+linux (ntohl (slot sockaddr 'addr))))))
+      (values connected (ntohl (slot sockaddr 'addr))))))
 
 (defun close-socket (socket)
   (multiple-value-bind (ok err)
-- 
GitLab