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)))))