From 03ef1a0c0938c596ea5dc48e11c111d2c5c78903 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Sun, 2 Nov 2003 02:13:04 -0500 Subject: 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 --- util/tap/tap.cc | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'util/tap/tap.cc') diff --git a/util/tap/tap.cc b/util/tap/tap.cc index 7121ebcbb..2932cec35 100644 --- a/util/tap/tap.cc +++ b/util/tap/tap.cc @@ -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) -- cgit v1.2.3