If a filter isn't specified, don't try to do any filtering

If pcap_lookupnet fails, just assume the netmask is 0xffffff00
that's all we really wanted from it anyway.

--HG--
extra : convert_revision : ac0a390ddb7a6b0a4e4c6d2885bfa7bd059faf36
This commit is contained in:
Nathan Binkert 2003-11-02 02:13:04 -05:00
parent c7d6745b07
commit 03ef1a0c09

View file

@ -200,7 +200,7 @@ main(int argc, char *argv[])
int bufsize = 2000;
bool listening = false;
char *device = NULL;
char *filter = "";
char *filter = NULL;
char c;
int daemon = false;
string host;
@ -274,16 +274,20 @@ main(int argc, char *argv[])
if (pcap == NULL)
panic("pcap_open_live failed: %s\n", errbuf);
bpf_program program;
bpf_u_int32 localnet, netmask;
if (pcap_lookupnet(device, &localnet, &netmask, errbuf) == -1)
panic("pcap_lookupnet failed: %s\n", errbuf);
if (filter) {
bpf_program program;
bpf_u_int32 localnet, netmask;
if (pcap_lookupnet(device, &localnet, &netmask, errbuf) == -1) {
DPRINTF("pcap_lookupnet failed: %s\n", errbuf);
netmask = 0xffffff00;
}
if (pcap_compile(pcap, &program, filter, 1, netmask) == -1)
panic("pcap_compile failed, invalid filter:\n%s\n", filter);
if (pcap_compile(pcap, &program, filter, 1, netmask) == -1)
panic("pcap_compile failed, invalid filter:\n%s\n", filter);
if (pcap_setfilter(pcap, &program) == -1)
panic("pcap_setfilter failed\n");
if (pcap_setfilter(pcap, &program) == -1)
panic("pcap_setfilter failed\n");
}
eth_t *ethernet = eth_open(device);
if (!ethernet)