summaryrefslogtreecommitdiff
path: root/net/arpwatch-devel/files/patch-ap
diff options
context:
space:
mode:
authorKirill Ponomarev <krion@FreeBSD.org>2004-01-19 23:34:48 +0000
committerKirill Ponomarev <krion@FreeBSD.org>2004-01-19 23:34:48 +0000
commit486518fcaaa4b373ad28bfaa87b26523a50d9cd2 (patch)
treef353e6fbb8a862121294775d61b335e29d780799 /net/arpwatch-devel/files/patch-ap
parentAdd p5-DBI-Shell 11.93, interactive command shell for the DBI. (diff)
This is a development fork of arpwatch. This has been
threaded in order to better deal with the requirements of multi-interface routers. Information regarding MAC addresses and interfaces is maintained by the program, and an alert is issued should a device move between interfaces. In addition, event processing has been refactored, and some bugs have been fixed. PR: 59180 Submitted by: Matthew George <mdg@secureworks.net> Approved by: portmgr
Notes
Notes: svn path=/head/; revision=98614
Diffstat (limited to 'net/arpwatch-devel/files/patch-ap')
-rw-r--r--net/arpwatch-devel/files/patch-ap78
1 files changed, 78 insertions, 0 deletions
diff --git a/net/arpwatch-devel/files/patch-ap b/net/arpwatch-devel/files/patch-ap
new file mode 100644
index 000000000000..15b73b730d5e
--- /dev/null
+++ b/net/arpwatch-devel/files/patch-ap
@@ -0,0 +1,78 @@
+--- ../arpwatch.orig/util.c Fri Oct 13 18:49:03 2000
++++ ./util.c Wed Sep 10 13:03:27 2003
+@@ -53,6 +53,7 @@
+
+ char *arpdir = ARPDIR;
+ char *arpfile = ARPFILE;
++char *etherfile = ETHERFILE;
+ char *ethercodes = ETHERCODES;
+
+ /* Broadcast ethernet addresses */
+@@ -105,7 +106,7 @@
+ dump(void)
+ {
+ register int fd;
+- char oldarpfile[256], newarpfile[256];
++ char oldarpfile[256], newarpfile[256], *oldetherfile, *newetherfile;
+
+ (void)sprintf(oldarpfile, "%s-", arpfile);
+ (void)sprintf(newarpfile, "%s.new", arpfile);
+@@ -130,6 +131,32 @@
+ syslog(LOG_ERR, "rename %s -> %s: %m", newarpfile, arpfile);
+ return(0);
+ }
++
++ /* ether info */
++ (void)asprintf(&oldetherfile, "%s-", etherfile);
++ (void)asprintf(&newetherfile, "%s.new", etherfile);
++
++ if ((fd = creat(newetherfile, 0644)) < 0) {
++ syslog(LOG_ERR, "creat(%s): %m", newetherfile);
++ return(0);
++ }
++ if ((dumpf = fdopen(fd, "w")) == NULL) {
++ syslog(LOG_ERR, "fdopen(%s): %m", newetherfile);
++ return(0);
++ }
++
++ fwrite(einfo_table, sizeof(struct einfo), et_cnt, dumpf);
++
++ (void)fclose(dumpf);
++ if (rename(etherfile, oldetherfile) < 0) {
++ syslog(LOG_ERR, "rename %s -> %s: %m", etherfile, oldetherfile);
++ return(0);
++ }
++ if (rename(newetherfile, etherfile) < 0) {
++ syslog(LOG_ERR, "rename %s -> %s: %m", newetherfile, etherfile);
++ return(0);
++ }
++
+ return(1);
+ }
+
+@@ -138,7 +165,9 @@
+ readdata(void)
+ {
+ register FILE *f;
++ char line[1024];
+
++ /* arp.dat */
+ if ((f = fopen(arpfile, "r")) == NULL) {
+ syslog(LOG_ERR, "fopen(%s): %m", arpfile);
+ return(0);
+@@ -147,6 +176,15 @@
+ (void)fclose(f);
+ return(0);
+ }
++ (void)fclose(f);
++
++ /* ether.dat */
++ if ((f = fopen(etherfile, "r")) == NULL) {
++ syslog(LOG_ERR, "fopen(%s): %m", etherfile);
++ return(0);
++ }
++
++ et_cnt = fread(einfo_table, sizeof(struct einfo), HASHSIZE, f);
+ (void)fclose(f);
+
+ /* It's not fatal if we can't open the ethercodes file */