Package: arpwatch
Version: 2.1a15-1.1
Severity: normal
Tags: patch
Hi,
I'm wondering whether the restart option should also apply after the
polling loop returns because of an error...
The scenario I'm trying to fix is that in which the watched interface
goes down (hopefully temporarily). Currently this causes arpwatch to
start busy-looping (strictly speaking, libpcap; see #520393). Fixing
libpcap to report an error in this case causes arpwatch to abort, even
if restarts have been requested. The attached patch causes arpwatch to
restart, which will eventually allow it to continue watching the
interface if it comes back up.
Regards,
Stephen
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (500, 'testing'), (500, 'stable'), (200, 'unstable'), (1,
'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.30-2-686 (SMP w/2 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages arpwatch depends on:
ii adduser 3.111 add and remove users and groups
ii debianutils 3.2.1 Miscellaneous utilities specific t
ii libc6 2.9-25 GNU C Library: Shared libraries
arpwatch recommends no packages.
arpwatch suggests no packages.
-- no debconf information
--- arpwatch-2.1a15.old/arpwatch.c 2009-09-01 14:01:03.000000000 +0200
+++ arpwatch-2.1a15/arpwatch.c 2009-10-17 16:55:11.000000000 +0200
@@ -478,7 +478,13 @@
}
if (status < 0) {
syslog(LOG_ERR, "pcap_loop: %s", pcap_geterr(pd));
- exit(1);
+ if (!restart) {
+ exit(1);
+ } else {
+ pcap_close(pd);
+ sleep(restart);
+ goto label_restart;
+ }
}
pcap_close(pd);
if (!dump())