From 804a40a2c8969ef5c8036f75e20937f04ff845ba Mon Sep 17 00:00:00 2001 From: "Joseph C. Lehner" 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