Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package arpwatch for openSUSE:Factory checked in at 2021-09-03 21:26:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/arpwatch (Old) and /work/SRC/openSUSE:Factory/.arpwatch.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "arpwatch" Fri Sep 3 21:26:15 2021 rev:36 rq:916747 version:3.1 Changes: -------- --- /work/SRC/openSUSE:Factory/arpwatch/arpwatch.changes 2021-08-16 10:17:09.050690470 +0200 +++ /work/SRC/openSUSE:Factory/.arpwatch.new.1899/arpwatch.changes 2021-09-03 21:27:06.190250774 +0200 @@ -1,0 +2,29 @@ +Fri Sep 3 13:31:51 UTC 2021 - Johannes Segitz <[email protected]> + +- Remove accidentially checked in manpage (arpwatch.8) + +------------------------------------------------------------------- +Fri Sep 3 07:37:27 UTC 2021 - Johannes Segitz <[email protected]> + +- Update to version 3.1 (bsc#1185939) + * Dropped + + arpwatch-2.1a11-emailaddr.dif, this is now supported upstream. + Incompatible change: Flags change from -e and -s to -w and -W + + arpwatch-2.1a11-hname-overflow.dif: included upstream + + arpwatch-2.1a11-tokenring.diff: Dropped token ring support + + arpwatch-2.1a15-massagevendor.patch: new python version + is available + + arpwatch-MAC.patch: Fix is upstream + + getnameinfo.patch + * Refreshed + + 0001-Ignore-802.1Q-frames.patch + + arp2ethers.patch + * Notable upstream changes: + + Add python 2 compatibility to massagevendor (for pfsense <= 2.4.4). + + Add -Z (zero pad) and -C (compact) flags to arpwatch and arpsnmp to allow + run time selection of zero padded or compact ethernet addresses in arp.dat. + + arpsnmp errors now go to stderr instead of syslog. + + Add arpwatch directory flag (-D) + + Added the -x flag which is like -n but excludes cidrs + +------------------------------------------------------------------- Old: ---- arpwatch-2.1a11-emailaddr.dif arpwatch-2.1a11-hname-overflow.dif arpwatch-2.1a11-tokenring.diff arpwatch-2.1a15-massagevendor.patch arpwatch-2.1a15.tar.bz2 arpwatch-MAC.patch getnameinfo.patch New: ---- arpwatch-3.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ arpwatch.spec ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.686251755 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.690251762 +0200 @@ -21,29 +21,23 @@ %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif Name: arpwatch -Version: 2.1a15 +Version: 3.1 Release: 0 Summary: Tool to keep track of Ethernet<->IP address pairings License: BSD-3-Clause Group: Productivity/Networking/Diagnostic URL: http://www-nrg.ee.lbl.gov/nrg.html -Source: %{name}-%{version}.tar.bz2 +Source: %{name}-%{version}.tar.gz Source10: [email protected] Source11: sysconfig.arpwatch Source12: arpwatch.service Patch0: arpwatch-2.1a11-chrootbuild.diff Patch1: arpwatch-no-source-zero.dif -Patch3: arpwatch-2.1a11-tokenring.diff -Patch4: arpwatch-2.1a11-hname-overflow.dif Patch5: arpwatch-2.1a11-drop-privs-manpage.dif Patch6: arpwatch-2.1a11-drop-privs.dif -Patch7: arpwatch-2.1a11-emailaddr.dif -Patch8: arpwatch-2.1a15-massagevendor.patch -Patch9: getnameinfo.patch # PATCH-Fix-Upstream -- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=625796#20 -- [email protected] Patch10: 0001-Ignore-802.1Q-frames.patch Patch11: report-iface.patch -Patch12: arpwatch-MAC.patch Patch13: arpwatch-exit.patch Patch14: arp2ethers.patch BuildRequires: libpcap-devel @@ -83,10 +77,9 @@ %make_install # ethercodes.dat is in the arpwatch-ethercodes package rm -f %{buildroot}/%{_datadir}/arpwatch/ethercodes.dat -for file in massagevendor euppertolower.awk duplicates.awk p.awk; do +for file in euppertolower.awk duplicates.awk p.awk; do cp -p ${file} %{buildroot}/%{_datadir}/arpwatch done -make DESTDIR=%{buildroot} install-man install -Dm 0644 %{SOURCE10} %{buildroot}/%{_unitdir}/[email protected] install -Dm 0644 %{SOURCE12} %{buildroot}/%{_unitdir}/arpwatch.service ln -s service %{buildroot}%{_sbindir}/rcarpwatch ++++++ 0001-Ignore-802.1Q-frames.patch ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.710251802 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.710251802 +0200 @@ -16,9 +16,11 @@ arpwatch.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) ---- a/arpwatch.c -+++ b/arpwatch.c -@@ -105,6 +105,10 @@ struct rtentry; +Index: arpwatch-3.1/arpwatch.c +=================================================================== +--- arpwatch-3.1.orig/arpwatch.c ++++ arpwatch-3.1/arpwatch.c +@@ -109,6 +109,10 @@ struct rtentry; #define ETHERTYPE_APOLLO 0x8019 #endif @@ -29,7 +31,7 @@ #ifndef IN_CLASSD_NET #define IN_CLASSD_NET 0xf0000000 #endif -@@ -538,6 +542,14 @@ sanity_ether(register struct ether_heade +@@ -619,6 +623,14 @@ sanity_ether(struct ether_header *eh, st return(0); } @@ -43,4 +45,4 @@ + /* XXX sysv r4 seems to use hardware format 6 */ if (ea->arp_hrd != ARPHRD_ETHER && ea->arp_hrd != 6) { - syslog(LOG_ERR, "%s sent bad hardware format 0x%x\n", + lg(LOG_ERR, "%s sent bad hardware format 0x%x\n", ++++++ arp2ethers.patch ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.718251818 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.722251826 +0200 @@ -1,16 +1,20 @@ -Index: arpwatch-2.1a15/arp2ethers +Index: arpwatch-3.1/arp2ethers =================================================================== ---- arpwatch-2.1a15.orig/arp2ethers -+++ arpwatch-2.1a15/arp2ethers +--- arpwatch-3.1.orig/arp2ethers ++++ arpwatch-3.1/arp2ethers @@ -13,11 +13,50 @@ # - sort # --sort +2rn arp.dat | \ +-sort +2rn arp.dat | +sort -k 2 -rn arp.dat | \ - awk 'NF == 4 { print }' | \ -- awk -f p.awk | \ -- egrep -v '\.[0-9][0-9]*$' | \ + awk 'NF == 4 { print }' | +- awk -f p.awk | +- egrep -v '\.[0-9][0-9]*$' | +- sed -e 's/ .* / /' | +- awk -f d.awk | +- awk -f e.awk | +- sort + awk ' +{ + e = $1 @@ -19,10 +23,7 @@ + seen[e] = 1 + print +}' | egrep -v '\.[0-9][0-9]*$' | \ - sed -e 's/ .* / /' | \ -- awk -f d.awk | \ -- awk -f e.awk | \ -- sort ++ sed -e 's/ .* / /' | \ + awk ' +BEGIN { + n = 0 ++++++ arpwatch-2.1a11-chrootbuild.diff ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.730251842 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.730251842 +0200 @@ -1,45 +1,20 @@ ---- a/Makefile.in -+++ b/Makefile.in -@@ -17,7 +17,7 @@ - # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - # --# @(#) $Id: Makefile.in,v 1.68 2000/06/15 00:39:54 leres Exp $ (LBL) -+# @(#) $Id: Makefile.in,v 1.1 2001/01/11 00:41:05 root Exp root $ (LBL) - - # - # Various configurable paths (remember to edit Makefile.in, not Makefile) -@@ -110,13 +110,16 @@ zap: zap.o intoa.o - $(CC) $(CFLAGS) -o $@ zap.o intoa.o -lutil - - install: force -- $(INSTALL) -m 555 -o bin -g bin arpwatch $(DESTDIR)$(BINDEST) -- $(INSTALL) -m 555 -o bin -g bin arpsnmp $(DESTDIR)$(BINDEST) -+ $(INSTALL) -m 555 arpwatch $(DESTDIR)$(BINDEST) -+ $(INSTALL) -m 555 arpsnmp $(DESTDIR)$(BINDEST) +Index: arpwatch-3.1/Makefile.in +=================================================================== +--- arpwatch-3.1.orig/Makefile.in ++++ arpwatch-3.1/Makefile.in +@@ -127,11 +127,14 @@ version.c: $(srcdir)/VERSION + install: $(ALL) + $(INSTALL) -v -m 555 $(PROG) $(DESTDIR)$(BINDEST) + $(INSTALL) -v -m 555 arpsnmp $(DESTDIR)$(BINDEST) + $(INSTALL) -d -m 755 $(DESTDIR)/var/lib/arpwatch + $(INSTALL) -d -m 755 $(DESTDIR)/usr/share/arpwatch -+ $(INSTALL) -m 444 ethercodes.dat $(DESTDIR)/usr/share/arpwatch - - install-man: force -- $(INSTALL) -m 444 -o bin -g bin $(srcdir)/arpwatch.8 \ -+ $(INSTALL) -m 444 $(srcdir)/arpwatch.8 \ - $(DESTDIR)$(MANDEST)/man8 -- $(INSTALL) -m 444 -o bin -g bin $(srcdir)/arpsnmp.8 \ -+ $(INSTALL) -m 444 $(srcdir)/arpsnmp.8 \ - $(DESTDIR)$(MANDEST)/man8 - - lint: $(GENSRC) force ---- a/arpwatch.h -+++ b/arpwatch.h -@@ -1,7 +1,7 @@ --/* @(#) $Id: arpwatch.h,v 1.29 2000/09/30 23:40:49 leres Exp $ (LBL) */ -+/* @(#) $Id: arpwatch.h,v 1.1 2001/01/11 01:08:54 root Exp root $ (LBL) */ - --#define ARPFILE "arp.dat" --#define ETHERCODES "ethercodes.dat" -+#define ARPFILE "/var/lib/arpwatch/arp.dat" -+#define ETHERCODES "/usr/share/arpwatch/ethercodes.dat" - #define CHECKPOINT (15*60) /* Checkpoint time in seconds */ ++ #$(INSTALL) -m 444 ethercodes.dat $(DESTDIR)/usr/share/arpwatch + @diff $(srcdir)/$(PROG).8 $(DESTDIR)$(MANDEST)/man8 >/dev/null 2>&1 || \ + $(INSTALL) -v -m 444 $(srcdir)/$(PROG).8 $(DESTDIR)$(MANDEST)/man8 + @diff $(srcdir)/arpsnmp.8 $(DESTDIR)$(MANDEST)/man8 >/dev/null 2>&1 || \ + $(INSTALL) -v -m 444 $(srcdir)/arpsnmp.8 $(DESTDIR)$(MANDEST)/man8 +-@HAVE_FREEBSD_TRUE@ @$(INSTALL) -v -m 555 arpwatch.sh $(DESTDIR)$(prefix)/etc/rc.d/arpwatch ++#@HAVE_FREEBSD_TRUE@ @$(INSTALL) -v -m 555 arpwatch.sh $(DESTDIR)$(prefix)/etc/rc.d/arpwatch - #define MEMCMP(a, b, n) memcmp((char *)a, (char *)b, n) + clean: + rm -f $(CLEANFILES) ++++++ arpwatch-2.1a11-drop-privs-manpage.dif ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.738251858 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.738251858 +0200 @@ -1,48 +1,24 @@ ---- a/arpwatch.8 -+++ b/arpwatch.8 -@@ -36,13 +36,16 @@ arpwatch - keep track of ethernet/ip add - .I interface - ] - .br --.ti +8 -+.ti +9 - [ - .B -n - .IR net [/ width - ]] [ - .B -r - .I file -+] [ -+.B -u -+.I username - ] - .ad - .SH DESCRIPTION -@@ -94,10 +97,26 @@ of reading from the network. In this cas - .B arpwatch - does not fork. - .LP -+If -+.B -u -+flag is used, -+.B arpwatch -+drops root privileges and changes user ID to -+.I username -+and group ID to that of the primary group of -+.IR username . -+This is recommended for security reasons. -+.LP - Note that an empty - .I arp.dat - file must be created before the first time you run --.BR arpwatch . -+.BR arpwatch . -+Also, the default directory (where arp.dat is stored) must be owned -+by -+.I username -+if -+.BR -u -+flag is used. - .LP - .SH "REPORT MESSAGES" +Index: arpwatch-3.1/arpwatch.8.in +=================================================================== +--- arpwatch-3.1.orig/arpwatch.8.in ++++ arpwatch-3.1/arpwatch.8.in +@@ -43,6 +43,7 @@ + .Op Fl n Ar net[/width] + .Op Fl x Ar net[/width] + .Op Fl r Ar file ++.Op Fl u Ar username + .Sh DESCRIPTION + .Nm + keeps track of ethernet/ip address pairings. It syslogs activity +@@ -161,6 +162,11 @@ flag@MANZFLAG@ uses zero padded ethernet + .Ar arp.dat , + e.g. 00:08:e1:01:02:d6. + .Pp ++The ++.Fl u ++flag allows to drop root privileges and change to the user ID ++and group ID to that of the primary group of username. ++.Pp + .Sh "REPORT MESSAGES" Here's a quick list of the report messages generated by + .Xr arpwatch 1 ++++++ arpwatch-2.1a11-drop-privs.dif ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.750251881 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.750251881 +0200 @@ -1,8 +1,8 @@ -Index: arpwatch-2.1a15/arpwatch.c +Index: arpwatch-3.1/arpwatch.c =================================================================== ---- arpwatch-2.1a15.orig/arpwatch.c -+++ arpwatch-2.1a15/arpwatch.c -@@ -64,6 +64,8 @@ struct rtentry; +--- arpwatch-3.1.orig/arpwatch.c ++++ arpwatch-3.1/arpwatch.c +@@ -71,6 +71,8 @@ struct rtentry; #include <string.h> #include <syslog.h> #include <unistd.h> @@ -11,9 +11,9 @@ #include <pcap.h> -@@ -152,6 +154,66 @@ int sanity_toring(struct toring_header * - #endif - __dead void usage(void) __attribute__((volatile)); +@@ -170,6 +172,66 @@ int sanity_fddi(struct fddi_header *, st + int toskip(u_int32_t); + void usage(void) __attribute__((noreturn)); +void dropprivileges(const char* user) +{ @@ -78,25 +78,25 @@ int main(int argc, char **argv) { -@@ -164,6 +226,7 @@ main(int argc, char **argv) - register char *interface, *rfilename; +@@ -181,6 +243,7 @@ main(int argc, char **argv) + char *interface, *rfilename; struct bpf_program code; char errbuf[PCAP_ERRBUF_SIZE]; -+ char* serveruser = NULL; ++ char *serveruser = NULL; if (argv[0] == NULL) prog = "arpwatch"; -@@ -181,7 +244,7 @@ main(int argc, char **argv) +@@ -198,7 +261,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, "df:i:n:Nr:u:")) != EOF) +- while ((op = getopt(argc, argv, "CdD:Ff:i:n:NpP:qr:svw:W:x:zZ")) != EOF) ++ while ((op = getopt(argc, argv, "CdD:Ff:i:n:NpP:qr:svw:W:x:zZu:")) != EOF) switch (op) { - case 'd': -@@ -213,6 +276,16 @@ main(int argc, char **argv) - rfilename = optarg; + case 'C': +@@ -283,6 +346,16 @@ main(int argc, char **argv) + zeropad = 1; break; + case 'u': @@ -112,41 +112,39 @@ default: usage(); } -@@ -295,8 +368,11 @@ main(int argc, char **argv) +@@ -383,8 +456,9 @@ main(int argc, char **argv) * Revert to non-privileged user after opening sockets * (not needed on most systems). */ - setgid(getgid()); - setuid(getuid()); -+ /*setgid(getgid());*/ -+ /*setuid(getuid());*/ + if ( serveruser ) { + dropprivileges( serveruser ); + } - /* Must be ethernet or fddi or tokenring */ + /* Must be ethernet or fddi */ linktype = pcap_datalink(pd); -@@ -842,6 +918,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); -+ " [-n net[/width]] [-r file] [-u username]\n", prog); +@@ -933,6 +1007,6 @@ usage(void) + "usage: %s [-CdFNpqsvzZ] [-D arpdir] [-f datafile]" + " [-i interface]\n\t" + " [-P pidfile] [-w watcher@email] [-W watchee@email]\n\t" +- " [-n net[/width]] [-x net[/width]] [-r file]\n", prog); ++ " [-n net[/width]] [-x net[/width]] [-r file] [-u username]\n", prog); exit(1); } -Index: arpwatch-2.1a15/util.c +Index: arpwatch-3.1/util.c =================================================================== ---- arpwatch-2.1a15.orig/util.c -+++ arpwatch-2.1a15/util.c -@@ -29,6 +29,7 @@ static const char rcsid[] = +--- arpwatch-3.1.orig/util.c ++++ arpwatch-3.1/util.c +@@ -36,6 +36,7 @@ static const char rcsid[] = #include <sys/types.h> #include <sys/file.h> +#include <sys/stat.h> + #include <errno.h> #include <fcntl.h> - #ifdef HAVE_MEMORY_H -@@ -186,3 +187,47 @@ savestr(register const char *str) +@@ -212,3 +213,47 @@ savestr(const char *str) strsize -= i; return (cp); } @@ -194,15 +192,15 @@ + free(path_component); + return safe_path; +} -Index: arpwatch-2.1a15/util.h +Index: arpwatch-3.1/util.h =================================================================== ---- arpwatch-2.1a15.orig/util.h -+++ arpwatch-2.1a15/util.h -@@ -5,6 +5,7 @@ int dump(void); - void dumpone(u_int32_t, u_char *, time_t, char *); +--- arpwatch-3.1.orig/util.h ++++ arpwatch-3.1/util.h +@@ -8,6 +8,7 @@ char *intoa(u_int32_t); + void lg(int, const char *, ...) __attribute__ ((format (printf, 2, 3))); int readdata(void); char *savestr(const char *); +int safe_base_path(char *); extern char *arpdir; - extern char *newarpfile; + extern char *arpfile; ++++++ arpwatch-exit.patch ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.758251897 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.762251905 +0200 @@ -1,8 +1,10 @@ ---- a/arpwatch.c -+++ b/arpwatch.c -@@ -914,7 +914,7 @@ die(int signo) +Index: arpwatch-3.1/arpwatch.c +=================================================================== +--- arpwatch-3.1.orig/arpwatch.c ++++ arpwatch-3.1/arpwatch.c +@@ -985,7 +985,7 @@ die(int signo) - syslog(LOG_DEBUG, "exiting"); + lg(LOG_DEBUG, "exiting"); checkpoint(0); - exit(1); + exit(0); ++++++ arpwatch-no-source-zero.dif ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.770251921 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.770251921 +0200 @@ -1,8 +1,10 @@ ---- a/arpwatch.c -+++ b/arpwatch.c -@@ -378,6 +378,12 @@ process_ether(register u_char *u, regist - /* Source ip address */ - BCOPY(SPA(ea), &sia, 4); +Index: arpwatch-3.1/arpwatch.c +=================================================================== +--- arpwatch-3.1.orig/arpwatch.c ++++ arpwatch-3.1/arpwatch.c +@@ -481,6 +481,12 @@ process_ether(u_char *u, const struct pc + if (toskip(sia)) + return; + /* dhcp broadcasts source from 0.0.0.0 - ignore */ + if (sia == 0) { @@ -12,4 +14,4 @@ + /* Watch for bogons */ if (isbogon(sia)) { - dosyslog(LOG_INFO, "bogon", sia, sea, sha); + if (!quiet) ++++++ report-iface.patch ++++++ --- /var/tmp/diff_new_pack.KY373B/_old 2021-09-03 21:27:06.802251984 +0200 +++ /var/tmp/diff_new_pack.KY373B/_new 2021-09-03 21:27:06.802251984 +0200 @@ -1,44 +1,50 @@ ---- a/arpsnmp.c -+++ b/arpsnmp.c -@@ -68,6 +68,7 @@ int snmp_add(u_int32_t, u_char *, time_t - __dead void usage(void) __attribute__((volatile)); +Index: arpwatch-3.1/arpsnmp.c +=================================================================== +--- arpwatch-3.1.orig/arpsnmp.c ++++ arpwatch-3.1/arpsnmp.c +@@ -77,6 +77,7 @@ void usage(void) __attribute__((noreturn + /* Globals */ char *prog; +char *interface; + int quiet; + int suppress; + const char *watcher = WATCHER; +Index: arpwatch-3.1/arpwatch.c +=================================================================== +--- arpwatch-3.1.orig/arpwatch.c ++++ arpwatch-3.1/arpwatch.c +@@ -123,6 +123,7 @@ struct rtentry; - extern int optind; - extern int opterr; ---- a/arpwatch.c -+++ b/arpwatch.c -@@ -118,6 +118,7 @@ struct rtentry; - #endif - + /* Globals */ char *prog; +char *interface; - - int can_checkpoint; - int swapped; -@@ -214,7 +215,7 @@ main(int argc, char **argv) - register int fd; - #endif - register pcap_t *pd; -- register char *interface, *rfilename; -+ register char *rfilename; + int quiet; + int suppress; + const char *watcher = WATCHER; +@@ -244,7 +245,7 @@ main(int argc, char **argv) + pcap_t *pd; + FILE *fp; + pcap_if_t *alldevs; +- char *interface, *rfilename; ++ char *rfilename; struct bpf_program code; char errbuf[PCAP_ERRBUF_SIZE]; - char* serveruser = NULL; ---- a/report.c -+++ b/report.c -@@ -73,6 +73,8 @@ struct rtentry; - char *watcher = WATCHER; - char *watchee = WATCHEE; + char *serveruser = NULL; +Index: arpwatch-3.1/report.c +=================================================================== +--- arpwatch-3.1.orig/report.c ++++ arpwatch-3.1/report.c +@@ -78,6 +78,8 @@ struct rtentry; + + #define PLURAL(n) ((n) == 1 || (n) == -1 ? "" : "s") +extern char *interface; + static int cdepth; /* number of outstanding children */ static char *fmtdate(time_t); -@@ -339,6 +341,8 @@ report(register char *title, register u_ +@@ -354,6 +356,8 @@ report(const char *title, u_int32_t a, c (void)fprintf(f, fmt, "previous timestamp", fmtdate(*t2p)); if (t1p && t2p && *t1p && *t2p) (void)fprintf(f, fmt, "delta", fmtdelta(*t1p - *t2p));
