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