#: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))
`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))
(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))
(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.