diff -Naur arpwatch-2.1a15.orig/arpwatch.8 arpwatch-2.1a15/arpwatch.8 --- arpwatch-2.1a15.orig/arpwatch.8 2006-12-11 13:00:39.000000000 +0300 +++ arpwatch-2.1a15/arpwatch.8 2006-12-11 13:00:55.000000000 +0300 @@ -110,6 +110,11 @@ .br .ti +9 [ +.B -D +] +.br +.ti +9 +[ .B -z .I ignorenet/ignoremask ] @@ -240,6 +245,10 @@ flags prevents arpwatch from sending reports by mail. (This feature comes from Debian). .LP The +.B -D +flag turns off reverse-DNS queries. This can speed up operations significantly. +.LP +The .B -z flag is used to set a range of ip addresses to ignore (such as a DHCP range). Netmask is specified as 255.255.128.0. (This feature comes from Debian). diff -Naur arpwatch-2.1a15.orig/arpwatch.c arpwatch-2.1a15/arpwatch.c --- arpwatch-2.1a15.orig/arpwatch.c 2006-12-11 13:00:39.000000000 +0300 +++ arpwatch-2.1a15/arpwatch.c 2006-12-11 13:00:55.000000000 +0300 @@ -198,6 +198,7 @@ "u:" "R:" "Q" + "D" "z:" ; char *tmpptr; @@ -289,6 +290,10 @@ ++quiet; break; + case 'D': + ++noreversedns; + break; + case 'z': tmpptr = strtok(optarg, "/"); inet_aton(tmpptr, &ignore_net); @@ -900,6 +905,7 @@ "[-u username] " "[-R seconds ] " "[-Q] " + "[-D] " "[-z ignorenet/ignoremask] " "\n" ; diff -Naur arpwatch-2.1a15.orig/arpwatch.h arpwatch-2.1a15/arpwatch.h --- arpwatch-2.1a15.orig/arpwatch.h 2006-12-11 13:00:39.000000000 +0300 +++ arpwatch-2.1a15/arpwatch.h 2006-12-11 13:00:55.000000000 +0300 @@ -17,6 +17,7 @@ extern char *prog; extern int nonewstations; /* Turns off new-station reporting. */ +extern int noreversedns; /* Turns off reverse-dns. */ #ifdef ETHER_HEADER_HAS_EA #define ESRC(ep) ((ep)->ether_shost.ether_addr_octet) diff -Naur arpwatch-2.1a15.orig/dns.c arpwatch-2.1a15/dns.c --- arpwatch-2.1a15.orig/dns.c 2000-10-14 05:50:52.000000000 +0400 +++ arpwatch-2.1a15/dns.c 2006-12-11 13:01:07.000000000 +0300 @@ -71,6 +71,8 @@ } querybuf; #endif +int noreversedns = 0; + int gethinfo(register char *hostname, register char *cpu, register int cpulen, register char *os, register int oslen) @@ -84,6 +86,9 @@ register int type, class, buflen, ancount, qdcount; querybuf qbuf; + if (noreversedns) + return (0); + qb = &qbuf; n = res_query(hostname, C_IN, T_HINFO, qb->buf, sizeof(qb->buf)); if (n < 0) @@ -144,6 +149,9 @@ register int32_t options; register struct hostent *hp; + if (noreversedns) + return (intoa(a)); + options = _res.options; _res.options |= RES_AAONLY; _res.options &= ~(RES_DEFNAMES | RES_DNSRCH);