--- Makefile.in.orig Wed Jul 29 06:16:45 1998 +++ Makefile.in Fri Aug 21 10:57:51 1998 @@ -109,8 +109,8 @@ $(CC) $(CFLAGS) -o $@ zap.o intoa.o -lutil install: force - $(INSTALL) -m 555 -o bin -g bin arpwatch $(DESTDIR)$(BINDEST) - $(INSTALL) -m 555 -o bin -g bin arpsnmp $(DESTDIR)$(BINDEST) + $(INSTALL) -s -m 555 -o bin -g bin arpwatch $(DESTDIR)$(BINDEST) + $(INSTALL) -s -m 555 -o bin -g bin arpsnmp $(DESTDIR)$(BINDEST) install-man: force $(INSTALL) -m 444 -o bin -g bin $(srcdir)/arpwatch.8 \ --- ethercodes.dat.orig Tue Mar 21 02:37:05 2000 +++ ethercodes.dat Thu Sep 14 11:18:09 2000 @@ -897,3 +897,5 @@ c0:0:0 Western Digital (may be reversed 00 00 C0?) e2:c:f Kingston Technologies ec:10:0 Enance Source Co., Ltd. PC clones(?) +0:bd:11 VMWare Inc +0:bd:fb VMWare Inc --- arpwatch.c.orig Thu Feb 22 22:47:29 2001 +++ arpwatch.c Thu Feb 22 22:47:29 2001 @@ -107,6 +107,8 @@ char *prog; +char *Watcher = NULL; + int can_checkpoint; int swapped; int nobogons; @@ -170,7 +172,7 @@ interface = NULL; rfilename = NULL; pd = NULL; - while ((op = getopt(argc, argv, "df:i:n:Nr:")) != EOF) + while ((op = getopt(argc, argv, "df:i:m:n:Nr:")) != EOF) switch (op) { case 'd': @@ -202,6 +204,10 @@ rfilename = optarg; break; + case 'm': + Watcher = optarg; + break; + default: usage(); } @@ -751,6 +757,6 @@ (void)fprintf(stderr, "Version %s\n", version); (void)fprintf(stderr, "usage: %s [-dN] [-f datafile] [-i interface]" - " [-n net[/width]] [-r file]\n", prog); + " [-m email] [-n net[/width]] [-r file]\n", prog); exit(1); } --- report.c.orig Sun Oct 1 00:41:10 2000 +++ report.c Thu May 16 11:34:33 2002 @@ -45,6 +45,8 @@ #include #include +#include +#include #include #include #include @@ -70,6 +72,8 @@ #define PLURAL(n) ((n) == 1 || (n) == -1 ? "" : "s") +extern char *Watcher; + static int cdepth; /* number of outstanding children */ static char *fmtdate(time_t); @@ -240,7 +244,7 @@ register FILE *f; char tempfile[64], cpu[64], os[64]; char *fmt = "%20s: %s\n"; - char *watcher = WATCHER; + char *watcher = Watcher ? Watcher : WATCHER; char *watchee = WATCHEE; char *sendmail = PATH_SENDMAIL; char *unknown = ""; @@ -344,6 +348,25 @@ exit(1); } /* XXX Need to freopen()? */ + + /* + * Open /dev/null as stdout and stderr so that sendmail 8.12.1 (and + * above ?) won't complain about missing file descriptors. + */ + if ((fd = open(_PATH_DEVNULL, O_RDWR)) == -1) { + syslog(LOG_ERR, "Cannot open %s: %m", _PATH_DEVNULL); + exit(1); + } + if (dup2(fd, STDOUT_FILENO) == -1) { + syslog(LOG_ERR, "Cannot dup2 %s to stdout: %m", _PATH_DEVNULL); + exit(1); + } + if (dup2(fd, STDERR_FILENO) == -1) { + syslog(LOG_ERR, "Cannot dup2 %s to stderr: %m", _PATH_DEVNULL); + exit(1); + } + close(fd); + /* Always Deliver interactively (pause when child depth gets large) */ execl(sendmail, "sendmail", "-odi", watcher, NULL); syslog(LOG_ERR, "execl: %s: %m", sendmail); --- arpsnmp.c.orig Mon Jan 18 01:47:40 1999 +++ arpsnmp.c Thu Feb 22 22:47:29 2001 @@ -68,6 +68,8 @@ char *prog; +char *Watcher; + extern int optind; extern int opterr; extern char *optarg; @@ -90,7 +92,7 @@ } opterr = 0; - while ((op = getopt(argc, argv, "df:")) != EOF) + while ((op = getopt(argc, argv, "df:m:")) != EOF) switch (op) { case 'd': @@ -105,6 +107,10 @@ arpfile = optarg; break; + case 'm': + Watcher = optarg; + break; + default: usage(); } @@ -184,6 +190,6 @@ (void)fprintf(stderr, "Version %s\n", version); (void)fprintf(stderr, - "usage: %s [-d] [-f datafile] file [...]\n", prog); + "usage: %s [-d] [-f datafile] [-m email] file [...]\n", prog); exit(1); } --- arpwatch.8.orig Sun Oct 8 21:31:28 2000 +++ arpwatch.8 Thu Feb 22 22:47:29 2001 @@ -38,6 +38,9 @@ .br .ti +8 [ +.B -m +.I email +] [ .B -n .IR net [/ width ]] [ @@ -69,6 +72,12 @@ The .B -i flag is used to override the default interface. +.LP +The +.B -m +flag specifies the address that will receive the emails. +The default is +.IR root . .LP The .B -n --- arpsnmp.8.orig Sun Sep 17 21:34:48 2000 +++ arpsnmp.8 Thu Feb 22 22:47:29 2001 @@ -30,6 +30,9 @@ ] [ .B -f .I datafile +] [ +.B -m +.I email ] .I file [ @@ -54,6 +57,12 @@ flag is used to set the ethernet/ip address database filename. The default is .IR arp.dat . +.LP +The +.B -m +flag specifies the address that will receive the emails. +The default is +.IR root . .LP Note that an empty .I arp.dat