On Nov 30, 2011, at 2:40 AM, Fernando Gont wrote:

> Could you suggest a good reference for BPF syntax? -- So far I've only
> used pcap_compile() and hence didn't really get into BPF.

Well, for reference purposes, there's the original BPF paper:

        http://www.tcpdump.org/papers/bpf-usenix93.pdf

and the bpf.h header file.

However, pcap-linux.c in libpcap already has a filter with just "ret 0" that it 
uses while flushing packets that matched the old filter when changing to a new 
filter:

        static struct sock_filter       total_insn
                = BPF_STMT(BPF_RET | BPF_K, 0);  
        static struct sock_fprog        total_fcode
                = { 1, &total_insn };

It's using Linux-specific data structures (for use when making Linux calls), 
but the equivalent using BPF data structures would be

        static struct bpf_insn          total_insn
                = BPF_STMT(BPF_RET | BPF_K, 0);  
        static struct bpf_program       total_fcode
                = { 1, &total_insn };

> In anycase, I guess one could achive the same sort of result (albeit
> with a sloppy filter that rejects e.g., everything that's Ethernet when
> one is capturing on ethernet).

Unfortunately, there's no way to "reject everything that's Ethernet" - the 
filter can only look at the packet data, and there's no "this is Ethernet" bit 
in Ethernet packets (and it'd always be set in any case :-)).-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.

Reply via email to