Miroslav Lichvar 6ced79
--- arpwatch-2.1a11/addresses.h.in.addr	Wed Jun  5 00:40:29 1996
Miroslav Lichvar 6ced79
+++ arpwatch-2.1a11/addresses.h.in	Wed Jul 31 17:39:38 2002
Miroslav Lichvar 6ced79
@@ -1,2 +1,4 @@
Miroslav Lichvar 6ced79
 #define WATCHER "root"
Miroslav Lichvar 6ced79
-#define WATCHEE "arpwatch (Arpwatch)"
Miroslav Lichvar 6ced79
+#define WATCHEE "root (Arpwatch)"
Miroslav Lichvar 6ced79
+extern char *watcher;
Miroslav Lichvar 6ced79
+extern char *watchee;
Miroslav Lichvar 6ced79
--- arpwatch-2.1a11/arpsnmp.8.addr	Sun Sep 17 15:34:48 2000
Miroslav Lichvar 6ced79
+++ arpwatch-2.1a11/arpsnmp.8	Fri Aug  2 15:15:31 2002
Miroslav Lichvar 6ced79
@@ -30,6 +30,12 @@
Miroslav Lichvar 6ced79
 ] [
Miroslav Lichvar 6ced79
 .B -f
Miroslav Lichvar 6ced79
 .I datafile
Miroslav Lichvar 6ced79
+] [
Miroslav Lichvar 6ced79
+.B -e
Miroslav Lichvar 6ced79
+.I username
Miroslav Lichvar 6ced79
+] [
Miroslav Lichvar 6ced79
+.B -s
Miroslav Lichvar 6ced79
+.I username
Miroslav Lichvar 6ced79
 ]
Miroslav Lichvar 6ced79
 .I file
Miroslav Lichvar 6ced79
 [
Miroslav Lichvar 6ced79
@@ -59,6 +65,27 @@
Miroslav Lichvar 6ced79
 .I arp.dat
Miroslav Lichvar 6ced79
 file must be created before the first time you run
Miroslav Lichvar 6ced79
 .BR arpsnmp .
Miroslav Lichvar 6ced79
+.LP
Miroslav Lichvar 6ced79
+If the
Miroslav Lichvar 6ced79
+.B -e 
Miroslav Lichvar 6ced79
+flag is used, 
Miroslav Lichvar 6ced79
+.B arpsnmp
Miroslav Lichvar 6ced79
+sends e-mail messages to
Miroslav Lichvar 6ced79
+.I username
Miroslav Lichvar 6ced79
+rather than the default (root).
Miroslav Lichvar 6ced79
+If a single `-' character is given for the username,
Miroslav Lichvar 6ced79
+sending of e-mail is suppressed,
Miroslav Lichvar 6ced79
+but logging via syslog is still done as usual.
Miroslav Lichvar 6ced79
+(This can be useful during initial runs, to collect data
Miroslav Lichvar 6ced79
+without being flooded with messages about new stations.)
Miroslav Lichvar 6ced79
+.LP
Miroslav Lichvar 6ced79
+If the
Miroslav Lichvar 6ced79
+.B -s 
Miroslav Lichvar 6ced79
+flag is used, 
Miroslav Lichvar 6ced79
+.B arpsnmp
Miroslav Lichvar 6ced79
+sends e-mail messages with
Miroslav Lichvar 6ced79
+.I username
Miroslav Lichvar 6ced79
+as the return address, rather than the default (root).
Miroslav Lichvar 6ced79
 .LP
Miroslav Lichvar 6ced79
 .SH "REPORT MESSAGES"
Miroslav Lichvar 6ced79
 (See the
Miroslav Lichvar 6ced79
--- arpwatch-2.1a11/arpsnmp.c.addr	Sun Jan 17 19:47:40 1999
Miroslav Lichvar 6ced79
+++ arpwatch-2.1a11/arpsnmp.c	Fri Aug  2 15:17:16 2002
Miroslav Lichvar 6ced79
@@ -59,6 +59,7 @@
Miroslav Lichvar 6ced79
 #include "file.h"
Miroslav Lichvar 6ced79
 #include "machdep.h"
Miroslav Lichvar 6ced79
 #include "util.h"
Miroslav Lichvar 6ced79
+#include "addresses.h"
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 /* Forwards */
Miroslav Lichvar 6ced79
 int	main(int, char **);
Miroslav Lichvar 6ced79
@@ -90,7 +91,7 @@
Miroslav Lichvar 6ced79
 	}
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 	opterr = 0;
Miroslav Lichvar 6ced79
-	while ((op = getopt(argc, argv, "df:")) != EOF)
Miroslav Lichvar 6ced79
+	while ((op = getopt(argc, argv, "df:e:s:")) != EOF)
Miroslav Lichvar 6ced79
 		switch (op) {
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 		case 'd':
Miroslav Lichvar 6ced79
@@ -105,6 +106,24 @@
Miroslav Lichvar 6ced79
 			arpfile = optarg;
Miroslav Lichvar 6ced79
 			break;
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
+		case 'e':
Miroslav Lichvar 6ced79
+			if ( optarg ) {
Miroslav Lichvar 6ced79
+				watcher = strdup(optarg);
Miroslav Lichvar 6ced79
+			} else {
Miroslav Lichvar 6ced79
+				(void)fprintf(stderr, "%s: Need recipient username/e-mail address after -e\n", prog);
Miroslav Lichvar 6ced79
+				usage();
Miroslav Lichvar 6ced79
+			}
Miroslav Lichvar 6ced79
+			break;
Miroslav Lichvar 6ced79
+
Miroslav Lichvar 6ced79
+		case 's':
Miroslav Lichvar 6ced79
+			if ( optarg ) {
Miroslav Lichvar 6ced79
+				watchee = strdup(optarg);
Miroslav Lichvar 6ced79
+			} else {
Miroslav Lichvar 6ced79
+				(void)fprintf(stderr, "%s: Need sender username/e-mail address after -s\n", prog);
Miroslav Lichvar 6ced79
+				usage();
Miroslav Lichvar 6ced79
+			}
Miroslav Lichvar 6ced79
+			break;
Miroslav Lichvar 6ced79
+
Miroslav Lichvar 6ced79
 		default:
Miroslav Lichvar 6ced79
 			usage();
Miroslav Lichvar 6ced79
 		}
Miroslav Lichvar 6ced79
@@ -184,6 +203,6 @@
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 	(void)fprintf(stderr, "Version %s\n", version);
Miroslav Lichvar 6ced79
 	(void)fprintf(stderr,
Miroslav Lichvar 6ced79
-	    "usage: %s [-d] [-f datafile] file [...]\n", prog);
Miroslav Lichvar 6ced79
+	    "usage: %s [-d] [-f datafile] [-e username] [-s username] file [...]\n", prog);
Miroslav Lichvar 6ced79
 	exit(1);
Miroslav Lichvar 6ced79
 }
Miroslav Lichvar 6ced79
--- arpwatch-2.1a11/arpwatch.8.addr	Thu Aug  1 13:45:36 2002
Miroslav Lichvar 6ced79
+++ arpwatch-2.1a11/arpwatch.8	Thu Aug  1 14:08:05 2002
Miroslav Lichvar 6ced79
@@ -46,6 +46,12 @@
Miroslav Lichvar 6ced79
 ] [
Miroslav Lichvar 6ced79
 .B -u
Miroslav Lichvar 6ced79
 .I username
Miroslav Lichvar 6ced79
+] [
Miroslav Lichvar 6ced79
+.B -e
Miroslav Lichvar 6ced79
+.I username
Miroslav Lichvar 6ced79
+] [
Miroslav Lichvar 6ced79
+.B -s
Miroslav Lichvar 6ced79
+.I username
Miroslav Lichvar 6ced79
 ]
Miroslav Lichvar 6ced79
 .ad
Miroslav Lichvar 6ced79
 .SH DESCRIPTION
Miroslav Lichvar 6ced79
@@ -106,6 +112,27 @@
Miroslav Lichvar 6ced79
 and group ID to that of the primary group of 
Miroslav Lichvar 6ced79
 .IR username .
Miroslav Lichvar 6ced79
 This is recommended for security reasons.
Miroslav Lichvar 6ced79
+.LP
Miroslav Lichvar 6ced79
+If the
Miroslav Lichvar 6ced79
+.B -e 
Miroslav Lichvar 6ced79
+flag is used, 
Miroslav Lichvar 6ced79
+.B arpwatch
Miroslav Lichvar 6ced79
+sends e-mail messages to
Miroslav Lichvar 6ced79
+.I username
Miroslav Lichvar 6ced79
+rather than the default (root).
Miroslav Lichvar 6ced79
+If a single `-' character is given for the username,
Miroslav Lichvar 6ced79
+sending of e-mail is suppressed,
Miroslav Lichvar 6ced79
+but logging via syslog is still done as usual.
Miroslav Lichvar 6ced79
+(This can be useful during initial runs, to collect data
Miroslav Lichvar 6ced79
+without being flooded with messages about new stations.)
Miroslav Lichvar 6ced79
+.LP
Miroslav Lichvar 6ced79
+If the
Miroslav Lichvar 6ced79
+.B -s 
Miroslav Lichvar 6ced79
+flag is used, 
Miroslav Lichvar 6ced79
+.B arpwatch
Miroslav Lichvar 6ced79
+sends e-mail messages with
Miroslav Lichvar 6ced79
+.I username
Miroslav Lichvar 6ced79
+as the return address, rather than the default (root).
Miroslav Lichvar 6ced79
 .LP
Miroslav Lichvar 6ced79
 Note that an empty
Miroslav Lichvar 6ced79
 .I arp.dat
Miroslav Lichvar 6ced79
--- arpwatch-2.1a11/arpwatch.c.addr	Thu Aug  1 13:45:36 2002
Miroslav Lichvar 6ced79
+++ arpwatch-2.1a11/arpwatch.c	Thu Aug  1 13:47:35 2002
Miroslav Lichvar 6ced79
@@ -78,6 +78,7 @@
Miroslav Lichvar 6ced79
 #include "machdep.h"
Miroslav Lichvar 6ced79
 #include "setsignal.h"
Miroslav Lichvar 6ced79
 #include "util.h"
Miroslav Lichvar 6ced79
+#include "addresses.h"
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 /* Some systems don't define these */
Miroslav Lichvar 6ced79
 #ifndef ETHERTYPE_REVARP
Miroslav Lichvar 6ced79
@@ -190,7 +191,7 @@
Miroslav Lichvar 6ced79
 	interface = NULL;
Miroslav Lichvar 6ced79
 	rfilename = NULL;
Miroslav Lichvar 6ced79
 	pd = NULL;
Miroslav Lichvar 6ced79
-	while ((op = getopt(argc, argv, "df:i:n:Nr:u:")) != EOF)
Miroslav Lichvar 6ced79
+	while ((op = getopt(argc, argv, "df:i:n:Nr:u:e:s:")) != EOF)
Miroslav Lichvar 6ced79
 		switch (op) {
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 		case 'd':
Miroslav Lichvar 6ced79
@@ -232,6 +233,26 @@
Miroslav Lichvar 6ced79
 			}
Miroslav Lichvar 6ced79
 			break;
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
+		case 'e':
Miroslav Lichvar 6ced79
+			if ( optarg ) {
Miroslav Lichvar 6ced79
+				watcher = strdup(optarg);
Miroslav Lichvar 6ced79
+			}
Miroslav Lichvar 6ced79
+			else {
Miroslav Lichvar 6ced79
+				fprintf(stderr, "%s: Need recipient username/e-mail address after -e\n", prog);
Miroslav Lichvar 6ced79
+				usage();
Miroslav Lichvar 6ced79
+			}
Miroslav Lichvar 6ced79
+			break;
Miroslav Lichvar 6ced79
+
Miroslav Lichvar 6ced79
+		case 's':
Miroslav Lichvar 6ced79
+			if ( optarg ) {
Miroslav Lichvar 6ced79
+				watchee = strdup(optarg);
Miroslav Lichvar 6ced79
+			}
Miroslav Lichvar 6ced79
+			else {
Miroslav Lichvar 6ced79
+				fprintf(stderr, "%s: Need sender username/e-mail address after -s\n", prog);
Miroslav Lichvar 6ced79
+				usage();
Miroslav Lichvar 6ced79
+			}
Miroslav Lichvar 6ced79
+			break;
Miroslav Lichvar 6ced79
+
Miroslav Lichvar 6ced79
 		default:
Miroslav Lichvar 6ced79
 			usage();
Miroslav Lichvar 6ced79
 		}
Miroslav Lichvar 6ced79
@@ -784,6 +805,7 @@
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 	(void)fprintf(stderr, "Version %s\n", version);
Miroslav Lichvar 6ced79
 	(void)fprintf(stderr, "usage: %s [-dN] [-f datafile] [-i interface]"
Miroslav Lichvar 6ced79
-	    " [-n net[/width]] [-r file] [-u username]\n", prog);
Miroslav Lichvar 6ced79
+	    " [-n net[/width]] [-r file] [-u username]"
Miroslav Lichvar 6ced79
+	    " [-e username] [-s username]\n", prog);
Miroslav Lichvar 6ced79
 	exit(1);
Miroslav Lichvar 6ced79
 }
Miroslav Lichvar 6ced79
--- arpwatch-2.1a11/report.c.addr	Sat Sep 30 18:41:10 2000
Miroslav Lichvar 6ced79
+++ arpwatch-2.1a11/report.c	Thu Aug  1 14:16:43 2002
Miroslav Lichvar 6ced79
@@ -70,6 +70,9 @@
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 #define PLURAL(n) ((n) == 1 || (n) == -1 ? "" : "s")
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
+char *watcher = WATCHER;
Miroslav Lichvar 6ced79
+char *watchee = WATCHEE;
Miroslav Lichvar 6ced79
+
Miroslav Lichvar 6ced79
 static int cdepth;	/* number of outstanding children */
Miroslav Lichvar 6ced79
 
Miroslav Lichvar 6ced79
 static char *fmtdate(time_t);
Miroslav Lichvar 6ced79
@@ -240,8 +243,6 @@
Miroslav Lichvar 6ced79
 	register FILE *f;
Miroslav Lichvar 6ced79
 	char tempfile[64], cpu[64], os[64];
Miroslav Lichvar 6ced79
 	char *fmt = "%20s: %s\n";
Miroslav Lichvar 6ced79
-	char *watcher = WATCHER;
Miroslav Lichvar 6ced79
-	char *watchee = WATCHEE;
Miroslav Lichvar 6ced79
 	char *sendmail = PATH_SENDMAIL;
Miroslav Lichvar 6ced79
 	char *unknown = "<unknown>";
Miroslav Lichvar 6ced79
 	char buf[132];
Miroslav Lichvar 6ced79
@@ -258,6 +259,9 @@
Miroslav Lichvar 6ced79
 		}
Miroslav Lichvar 6ced79
 		f = stdout;
Miroslav Lichvar 6ced79
 		(void)putc('\n', f);
Miroslav Lichvar 6ced79
+	} else if (watcher == NULL || *watcher == NULL || *watcher == '-') {
Miroslav Lichvar 6ced79
+		dosyslog(LOG_NOTICE, title, a, e1, e2);
Miroslav Lichvar 6ced79
+		return;
Miroslav Lichvar 6ced79
 	} else {
Miroslav Lichvar 6ced79
 		/* Setup child reaper if we haven't already */
Miroslav Lichvar 6ced79
 		if (!init) {