From 804a40a2c8969ef5c8036f75e20937f04ff845ba Mon Sep 17 00:00:00 2001
From: "Joseph C. Lehner" <joseph.c.lehner@gmail.com>
Date: Sun, 16 Apr 2017 15:51:14 +0200
Subject: [PATCH] Revert "Use pcap_setdirection instead of filter"

This reverts commit 590e7a079f097cabe19705aa8b22f486e1ca2d44.
Fixes #5.
---
 ethsock.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/ethsock.c b/ethsock.c
index 685e34a..d8a7326 100644
--- a/ethsock.c
+++ b/ethsock.c
@@ -494,7 +494,7 @@ inline uint8_t *ethsock_get_hwaddr(struct ethsock *sock)
 struct ethsock *ethsock_create(const char *intf, uint16_t protocol)
 {
 	char buf[PCAP_ERRBUF_SIZE];
-	struct bpf_program bpf;
+	struct bpf_program fp;
 	struct ethsock *sock;
 	bool is_bridge;
 	int err;
@@ -561,22 +561,17 @@ struct ethsock *ethsock_create(const char *intf, uint16_t protocol)
 	}
 #endif
 
-	err = pcap_setdirection(sock->pcap, PCAP_D_IN);
-	if (err) {
-		pcap_perror(sock->pcap, "pcap_setdirection");
-		goto cleanup;
-	}
-
-	snprintf(buf, sizeof(buf), "ether proto 0x%04x", protocol);
+	snprintf(buf, sizeof(buf), "ether proto 0x%04x and not ether src %s",
+			protocol, mac_to_str(sock->hwaddr));
 
-	err = pcap_compile(sock->pcap, &bpf, buf, 0, 0);
+	err = pcap_compile(sock->pcap, &fp, buf, 0, 0);
 	if (err) {
 		pcap_perror(sock->pcap, "pcap_compile");
 		goto cleanup;
 	}
 
-	err = pcap_setfilter(sock->pcap, &bpf);
-	pcap_freecode(&bpf);
+	err = pcap_setfilter(sock->pcap, &fp);
+	pcap_freecode(&fp);
 
 	if (err) {
 		pcap_perror(sock->pcap, "pcap_setfilter");
-- 
2.25.1