From owner-freebsd-bugs Tue Jun 26 14:10:11 2001 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 109D437B405 for ; Tue, 26 Jun 2001 14:10:01 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.3/8.11.3) id f5QLA1969028; Tue, 26 Jun 2001 14:10:01 -0700 (PDT) (envelope-from gnats) Received: from transient.lotterycanada.com (transient.lotterycanada.com [216.95.203.30]) by hub.freebsd.org (Postfix) with ESMTP id 41AD937B405; Tue, 26 Jun 2001 14:06:37 -0700 (PDT) (envelope-from mike@transient.lotterycanada.com) Received: (from mike@localhost) by transient.lotterycanada.com (8.11.3/8.11.2) id f5QKvV995250; Tue, 26 Jun 2001 16:57:31 -0400 (EDT) (envelope-from mike) Message-Id: <200106262057.f5QKvV995250@transient.lotterycanada.com> Date: Tue, 26 Jun 2001 16:57:31 -0400 (EDT) From: Mike Barcroft Reply-To: Mike Barcroft To: FreeBSD-gnats-submit@freebsd.org Cc: phk@freebsd.org, joe@freebsd.org X-Send-Pr-Version: 3.113 Subject: bin/28426: [PATCH] whois(1) - Recursive IP Searches Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org >Number: 28426 >Category: bin >Synopsis: [PATCH] whois(1) - Recursive IP Searches >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jun 26 14:10:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Mike Barcroft >Release: FreeBSD 5.0-CURRENT i386 >Organization: Q9 Media >Environment: $FreeBSD: src/usr.bin/whois/whois.1,v 1.18 2001/05/28 21:37:29 phk Exp $ $FreeBSD: src/usr.bin/whois/whois.c,v 1.19 2001/06/22 01:52:37 des Exp $ >Description: o Implement recursive IP Address searches based on the results of a query to ARIN. This allows a user to type 'whois 210.139.255.223' and get the expected results. [Requested by joe and phk] o Update documentation to reflect this. o Clean up some grammar nearby. This was sent to -hackers. There were no objections related to this patch. >How-To-Repeat: Apply patch below. >Fix: Index: whois/whois.1 =================================================================== RCS file: /home/ncvs/src/usr.bin/whois/whois.1,v retrieving revision 1.18 diff -u -r1.18 whois.1 --- whois/whois.1 2001/05/28 21:37:29 1.18 +++ whois/whois.1 2001/06/22 06:32:02 @@ -80,7 +80,7 @@ .Pp By default .Nm -construct the name of a whois server to use from the top-level domain +constructs the name of a whois server to use from the top-level domain .Pq Tn TLD of the supplied (single) argument, and appending .Qq Li .whois-servers.net . @@ -91,12 +91,20 @@ address is specified, the whois server will default to the American Registry for Internet Numbers .Pq Tn ARIN . +If a query to +.Tn ARIN +references +.Tn APNIC +or +.Tn RIPE , +that server will be query also, provided that the +.Fl Q +option isn't specified. .Pp -If no required -.Pa whois-servers.net -subdomain found, fallback to -.Pa whois.crsnic.net -provided. +If the query isn't a domain or IP address, +.Nm +will fallback to +.Pa whois.crsnic.net . .It Fl i Use the Network Solutions Registry for Internet Numbers .Pq Pa whois.networksolutions.com Index: whois/whois.c =================================================================== RCS file: /home/ncvs/src/usr.bin/whois/whois.c,v retrieving revision 1.19 diff -u -r1.19 whois.c --- whois/whois.c 2001/06/22 01:52:37 1.19 +++ whois/whois.c 2001/06/22 06:32:03 @@ -77,6 +77,8 @@ #define WHOIS_INIC_FALLBACK 0x02 #define WHOIS_QUICK 0x04 +const char *ip_whois[] = { RNICHOST, PNICHOST, NULL }; + static void usage(void); static void whois(char *, struct addrinfo *, int); @@ -208,7 +210,7 @@ FILE *sfi, *sfo; struct addrinfo hints, *res2; char *buf, *nhost, *p; - int nomatch, error, s; + int i, nomatch, error, s; size_t len; for (; res; res = res->ai_next) { @@ -234,13 +236,23 @@ while (len && isspace(buf[len - 1])) buf[--len] = '\0'; - if ((flags & WHOIS_RECURSE) && nhost == NULL && - (p = strstr(buf, WHOIS_SERVER_ID)) != NULL) { - p += sizeof(WHOIS_SERVER_ID) - 1; - if ((len = strcspn(p, " \t\n\r")) != 0) { - asprintf(&nhost, "%s", p); - if (nhost == NULL) - err(1, "asprintf()"); + if ((flags & WHOIS_RECURSE) && nhost == NULL) { + p = strstr(buf, WHOIS_SERVER_ID); + if (p != NULL) { + p += sizeof(WHOIS_SERVER_ID) - 1; + if ((len = strcspn(p, " \t\n\r")) != 0) { + asprintf(&nhost, "%s", p); + if (nhost == NULL) + err(1, "asprintf()"); + } + } else { + for (i = 0; ip_whois[i] != NULL; i++) { + if (strstr(buf, ip_whois[i]) == NULL) + continue; + nhost = strdup(ip_whois[i]); + if (nhost == NULL) + err(1, "strdup()"); + } } } >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message