chiark / gitweb /
zone: Simplify zone-write.
[zone] / net.lisp
index d957f53d684a00fd3611f689c96695b89f5224bc..28f10ef7039d307355d15578521f58e4a482c131 100644 (file)
--- a/net.lisp
+++ b/net.lisp
 ;;; it under the terms of the GNU General Public License as published by
 ;;; the Free Software Foundation; either version 2 of the License, or
 ;;; (at your option) any later version.
-;;; 
+;;;
 ;;; This program is distributed in the hope that it will be useful,
 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ;;; GNU General Public License for more details.
-;;; 
+;;;
 ;;; You should have received a copy of the GNU General Public License
 ;;; along with this program; if not, write to the Free Software Foundation,
 ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
@@ -34,7 +34,7 @@ (defpackage #:net
             #:ipnet-pretty #:ipnet-string #:ipnet-broadcast #:ipnet-hosts
             #:ipnet-host #:ipaddr-networkp #:ipnet-subnetp
             #:ipnet-changeable-bytes
-          #:host-find# #:host-create #:defhost #:parse-ipaddr
+          #:host-find #:host-create #:defhost #:parse-ipaddr
             #:resolve-hostname #:canonify-hostname
             #:net #:net-find #:net-get-as-ipnet #:net-create #:defnet
             #:net-next-host #:net-host))
@@ -75,8 +75,7 @@ (defun string-ipaddr (str &key (start 0) (end nil))
    `stringify'.  The START and END arguments may be used to parse out a
    substring."
   (setf str (stringify str))
-  (unless end
-    (setf end (length str)))
+  (setf-default end (length str))
   (let ((addr 0) (noct 0))
     (loop
       (let* ((pos (position #\. str :start start :end end))
@@ -151,7 +150,7 @@ (defun make-ipnet (net mask)
 (defun string-ipnet (str &key (start 0) (end nil))
   "Parse an IP-network from the string STR."
   (setf str (stringify str))
-  (unless end (setf end (length str)))
+  (setf-default end (length str))
   (let ((sl (position #\/ str :start start :end end)))
     (if sl
        (make-ipnet (parse-ipaddr (subseq str start sl))
@@ -259,17 +258,20 @@ (defun ipnet-changeable-bytes (mask)
 (defun resolve-hostname (name)
   "Resolve a hostname to an IP address using the DNS, or return nil."
   #+cmu (let ((he (ext:lookup-host-entry name)))
-         (and he
-              (ext:host-entry-addr he)))
-  #-cmu nil
-)
+         (and he (ext:host-entry-addr he)))
+  #+clisp (let ((he (ext:resolve-host-ipaddr name)))
+           (and he (string-ipaddr (car (ext:hostent-addr-list he)))))
+  #+ecl (nth-value 2 (ext:lookup-host-entry name))
+  #-(or cmu clisp ecl) nil)
 
 (defun canonify-hostname (name)
   "Resolve a hostname to canonical form using the DNS, or return nil."
   #+cmu (let ((he (ext:lookup-host-entry name)))
-         (and he
-              (ext:host-entry-name he)))
-  #-cmu nil)
+         (and he (ext:host-entry-name he)))
+  #+clisp (let ((he (ext:resolve-host-ipaddr name)))
+           (and he (ext:hostent-name he)))
+  #+ecl (nth-value 0 (ext:lookup-host-entry name))
+  #-(or cmu clisp ecl) name)
 
 ;;;--------------------------------------------------------------------------
 ;;; Host names and specifiers.