diff options
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 */ |