Revert "Use pcap_setdirection instead of filter"

This reverts commit 590e7a079f.
Fixes #5.
This commit is contained in:
Joseph C. Lehner 2017-04-16 15:51:14 +02:00
parent e7de1980ed
commit 804a40a2c8

View file

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