diff options
author | Kirill Ponomarev <krion@FreeBSD.org> | 2004-01-19 23:34:48 +0000 |
---|---|---|
committer | Kirill Ponomarev <krion@FreeBSD.org> | 2004-01-19 23:34:48 +0000 |
commit | 486518fcaaa4b373ad28bfaa87b26523a50d9cd2 (patch) | |
tree | f353e6fbb8a862121294775d61b335e29d780799 /net/arpwatch-devel/files/patch-ap | |
parent | Add 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-ap | 78 |
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 */ |