summaryrefslogtreecommitdiff
path: root/net/arpwatch-devel/files/patch-ap
diff options
context:
space:
mode:
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 */