bpf.h version skew (was Re: [ARGUS] Peculiar cross platform argus/ra non-interoperability)

Joe Christy joe at eshu.net
Mon Aug 9 19:51:57 EDT 2004


   Vis-a-vis my note of 08/09/2004 04:21 PM:
> ...
> Could the problem I'm having now be another pcap version skew / header 
> (re-)name situation? When I dig around I find that there some other 
> source files that #include <bpf.h> besides gencode.c.  ...

Make that #include <net/bpf.h>. I notice that in argus-2.0.6.fixes.1, 
gencode.c gets compiled out of the box as:
gcc -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -I. 
-I../include -I/usr/include  -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" 
-DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" 
-DARGUSDEBUG=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 
-DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 
-D_FILE_OFFSET_BITS=64 -DHAVE_TCP_WRAPPER=1 -DHAVE_STRING_H=1 
-DHAVE_FCNTL_H=1 -DHAVE_SYS_FILE_H=1 -DHAVE_SYSLOG_H=1 
-DHAVE_ETHER_HOSTTON=1 -DHAVE_STRERROR=1 -DCONFIG_X86_BSWAP=1 
-DSTDC_HEADERS=1  -DARGUS_SYSLOG=1 -c ./gencode.c
gencode.c:62:21: net/bpf.h: No such file or directory
In file included from ../include/argus_filter.h:71,
                  from gencode.c:65:
../include/gencode.h:194: error: `BPF_MEMWORDS' undeclared here (not in 
a function)
../include/gencode.h:258: warning: `struct bpf_program' declared inside 
parameter list
../include/gencode.h:258: warning: its scope is only this definition or 
declaration, which is probably not what you want
In file included from gencode.c:65:
../include/argus_filter.h:228: warning: `struct bpf_program' declared 
inside parameter list
On the other hand, in argus-clients-2.0.6.fixes.1, argus_filter.c (which 
also #include's <net/bpf.h> gets compiled as:
gcc -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -I. 
-I../include  -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" 
-DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" 
-DARGUSDEBUG=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 
-DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DARGUS_SASL=1 
-D_FILE_OFFSET_BITS=64 -DHAVE_STRING_H=1 -DHAVE_FCNTL_H=1 
-DHAVE_SYS_FILE_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_ETHER_HOSTTON=1 
-DHAVE_STRERROR=1 -DSTDC_HEADERS=1  -c ./argus_filter.c

One uses the -I../include -I/usr/include flags inside 
argus-2.0.6.fixes.1 and gets errors, while the other substitutes -I. 
(inside argus-clients-2.0.6.fixes.1) for -I/usr/include and doesn't get 
errors.

Patching gencode.c in argus-2.0.6.fixes.1 to #include <pcap-bpf.h> 
instead of <net/bpf.> allows it to compile, which make me think that the 
-I../include in its compile line is shadowed by the -I/usr/include, so 
when I upgraded to FreeBSD-4.10 I may have started getting a newer 
libpcap (to judge by the differences in 
argus-2.0.6.fixes.1/include/net/bpf.h and FreeBSD-4.10's 
/usr/include/net/bpf.h) so on Fedora Core 2, ra, using only the 
argus-clients-2.0.6.fixes.1/net/bpf.h when compiling argus_filter.c, is 
getting a bunch of declarations for libpcap which no longer have much to 
do with either the libpcap that argus is using over on FreeBSD-4.10 or 
ra is using on FC2.

	Joe



More information about the argus mailing list