tcpdump mailing list archives

Linux system headers 2.6.36 and pcap/bpf.h


From: Tim Sammut <tsammut () cisco com>
Date: Tue, 11 Jan 2011 23:47:31 -0800

Hello.

I have an odd problem and I am hoping you all can help.

It appears that starting in the Linux system headers around version
2.6.36 [1], /usr/include/linux/if_tun.h began including
/usr/include/linux/filter.h [2]. filter.h however, defines
BPF_MAJOR_VERSION which ends up excluding the entire contents of
pcap/bpf.h [3] via the leading #ifndef BPF_MAJOR_VERSION.

The end result is pcap.h must be included before linux/if_tun.h. This
causes this program it fail to compile:

    #include <linux/if_tun.h>
    #include <pcap.h>

    int main(){
        struct bpf_program p;
        printf("size = %lu\n", sizeof(p));
    }

producing this error message:

    test.c: In function ‘main’:
    test.c:5: error: storage size of ‘p’ isn’t known

But, allows this one to compile correctly:

    #include <pcap.h>
    #include <linux/if_tun.h>

    int main(){
        struct bpf_program p;
        printf("size = %lu\n", sizeof(p));
    }

Is this a known issue, or is there a more correct workaround?

thanks and hope all is well
tim


[1]
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.36.y.git;a=commit;h=99405162598176e830d17ae6d4f3d9e070ad900c
[2]
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.36.y.git;a=blob;f=include/linux/filter.h
[3]
https://github.com/mcr/libpcap/blob/028204e0f99f0bad5dfd01add364ebd4f4befabb/pcap/bpf.h
-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.


Current thread: