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