Function: nslookup-host-ipv6

nslookup-host-ipv6 is an autoloaded and byte-compiled function defined in net-utils.el.gz.

Signature

(nslookup-host-ipv6 HOST &optional NAME-SERVER FORMAT)

Documentation

Return the IPv6 address for HOST (name or IP address).

Optional argument NAME-SERVER says which server to use for DNS resolution.

If FORMAT is string, returns the IP address as a string (default). If FORMAT is vector, returns a 8-integer vector of hextets.

This command uses nslookup-program to look up DNS records.

Source Code

;; Defined in /usr/src/emacs/lisp/net/net-utils.el.gz
;;;###autoload
(defun nslookup-host-ipv6 (host &optional name-server format)
  "Return the IPv6 address for HOST (name or IP address).
Optional argument NAME-SERVER says which server to use for DNS
resolution.

If FORMAT is `string', returns the IP address as a
string (default).  If FORMAT is `vector', returns a 8-integer
vector of hextets.

This command uses `nslookup-program' to look up DNS records."
  (let* ((args `(,nslookup-program "-type=AAAA" ,host ,name-server))
         (output (shell-command-to-string
                  (string-join (cl-remove nil args) " ")))
         (hextet "[0-9a-fA-F]\\{1,4\\}")
         (ip-regex (concat "\\(\\(" hextet "[:]\\)\\{1,6\\}\\([:]?\\(" hextet "\\)\\{1,6\\}\\)\\)"))
         (ip (or (and (string-match
                       (if (eq system-type 'windows-nt)
                           (concat "Name:.*\nAddress: *" ip-regex)
                         (concat "has AAAA address " ip-regex))
                       output)
                      (match-string 1 output))
                 host)))
    (cond ((memq format '(string nil))
           ip)
          ((eq format 'vector)
           (nslookup--ipv6-expand
            (apply #'vector
                   (cl-loop for hextet in (split-string ip "[:]")
                            collect (string-to-number hextet 16)))))
          (t (error "Invalid format: %s" format)))))