Description: Activate ARP-packaged requests.
 The original source correctly implements a filter
 for capturing reverse requests sent as ARP-packages,
 but the corresponding socket is never polled for
 incoming messages.  This is caused by incorrect
 setting of PSIZE.  Amend this.
 .
 The original source replies with an ARP-packaged
 response, to an ARP-packaged request.  This is
 reasonable, so it is left intact.
 .
 Add also a marker "(ARP-packet)" to the syslog message
 reporting the undertaken action for this exceptional
 case.
Author: Mats Erik Andersson <debian@gisladisker.se>
Bug-Debian: http://bugs.debian.org/710403
Forwarded: no
Last-Update: 2013-06-20

diff -Naurp rarpd-0.981107.debian3/rarpd.c rarpd-0.981107/rarpd.c
--- rarpd-0.981107.debian3/rarpd.c
+++ rarpd-0.981107/rarpd.c
@@ -495,7 +495,9 @@ int serve_it(int fd)
 			sprintf(tmpname, "if%d", sll.sll_ifindex);
 
 		if (verbose)
-			syslog(LOG_INFO, "RARP request from %s on %s",
+			syslog(LOG_INFO, "RARP request%s from %s on %s",
+				(sll.sll_protocol == htons(ETH_P_ARP))
+					? " (ARP-packet)" : "",
 				tmpbuf, tmpname);
 	}
 
@@ -668,7 +670,7 @@ int main(int argc, char **argv)
 		pset[1].fd = socket(PF_PACKET, SOCK_DGRAM, 0);
 		if (pset[1].fd >= 0) {
 			load_arp_bpflet(pset[1].fd);
-			psize = 1;
+			psize++;
 		}
 	}
 
@@ -681,7 +683,7 @@ int main(int argc, char **argv)
 		if (bind(pset[1].fd, (struct sockaddr*)&sll, sizeof(sll)) < 0) {
 			close(pset[1].fd);
 			pset[1].fd = -1;
-			psize = 1;
+			psize--;
 		}
 	}
 	if (pset[0].fd >= 0) {
