Hi,

This is very naive patch for whois(1) which makes it work
by default for IPv6 addresses. I went with very minimal
approach here. If string contains colon, it's asumed to
be IPv6 address. Comments welcome.

Please CC me, as I'm not subscribed to the list.

Index: whois.c
===================================================================
RCS file: /cvs/src/usr.bin/whois/whois.c,v
retrieving revision 1.56
diff -u -p -u -r1.56 whois.c
--- whois.c     26 Jul 2017 15:48:38 -0000      1.56
+++ whois.c     4 Apr 2018 19:01:45 -0000
@@ -278,7 +278,8 @@ whois(const char *query, const char *ser
  * If the TLD is a number, query ARIN, otherwise, use TLD.whois-server.net.
  * If the domain does not contain '.', check to see if it is an NSI handle
  * (starts with '!') or a CORE handle (COCO-[0-9]+ or COHO-[0-9]+) or an
- * ASN (starts with AS). Fall back to NICHOST for the non-handle case.
+ * ASN (starts with AS) or IPv6 address (contains ':'). Fall back to
+ * NICHOST for the non-handle and non-IPv6 case.
  */
 char *
 choose_server(const char *name, const char *country, char **tofree)
@@ -305,6 +306,8 @@ choose_server(const char *name, const ch
                else if ((strncasecmp(name, "AS", 2) == 0) &&
                    strtol(name + 2, &ep, 10) > 0 && *ep == '\0')
                        return (MNICHOST);
+               else if (strchr(name, ':') != NULL) /* IPv6 address */
+                       return (ANICHOST);
                else
                        return (NICHOST);
        } else if (isdigit((unsigned char)*(++qhead)))

Reply via email to