mirror of
https://git.freebsd.org/ports.git
synced 2025-06-07 05:40:30 -04:00
- The -v flag disables reporting on VRRP/CARP ethernet prefixes as described in RFC5798 (00:00:5e:00:01:xx) PR: 202548 Submitted by: paul@dokas.name
66 lines
1.5 KiB
C
66 lines
1.5 KiB
C
--- arpwatch.c.orig 2004-01-22 22:18:20 UTC
|
|
+++ arpwatch.c
|
|
@@ -107,6 +107,8 @@ struct rtentry;
|
|
|
|
char *prog;
|
|
|
|
+char *Watcher = NULL;
|
|
+
|
|
int can_checkpoint;
|
|
int swapped;
|
|
int nobogons;
|
|
@@ -170,7 +172,7 @@ main(int argc, char **argv)
|
|
interface = NULL;
|
|
rfilename = NULL;
|
|
pd = NULL;
|
|
- while ((op = getopt(argc, argv, "df:i:n:Nr:")) != EOF)
|
|
+ while ((op = getopt(argc, argv, "dzf:i:m:n:Nr:")) != EOF)
|
|
switch (op) {
|
|
|
|
case 'd':
|
|
@@ -202,6 +204,16 @@ main(int argc, char **argv)
|
|
rfilename = optarg;
|
|
break;
|
|
|
|
+ case 'm':
|
|
+ Watcher = optarg;
|
|
+ break;
|
|
+ case 'v':
|
|
+ vrrpflag = 1;
|
|
+ break;
|
|
+ case 'z':
|
|
+ zeroflag = 1;
|
|
+ break;
|
|
+
|
|
default:
|
|
usage();
|
|
}
|
|
@@ -321,7 +333,6 @@ main(int argc, char **argv)
|
|
|
|
(void)setsignal(SIGINT, die);
|
|
(void)setsignal(SIGTERM, die);
|
|
- (void)setsignal(SIGHUP, die);
|
|
if (rfilename == NULL) {
|
|
(void)setsignal(SIGQUIT, checkpoint);
|
|
(void)setsignal(SIGALRM, checkpoint);
|
|
@@ -391,6 +402,12 @@ process_ether(register u_char *u, regist
|
|
return;
|
|
}
|
|
|
|
+ /* Check for CARP-generated ARP replies and ignore them */
|
|
+ if (vrrpflag == 1 && MEMCMP(sha, vrrp_prefix, 5) == 0) {
|
|
+ /* do nothing */
|
|
+ return;
|
|
+ }
|
|
+
|
|
/* Double check ethernet addresses */
|
|
if (MEMCMP(sea, sha, 6) != 0) {
|
|
dosyslog(LOG_INFO, "ethernet mismatch", sia, sea, sha);
|
|
@@ -751,6 +768,6 @@ usage(void)
|
|
|
|
(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);
|
|
}
|