dect
/
libpcap
Archived
13
0
Fork 0

From Jesper Peterson <jesper@endace.com>: support for capturing from

Endace DAG devices.
This commit is contained in:
guy 2003-07-23 05:29:19 +00:00
parent 69c370ff8a
commit 77cade932c
14 changed files with 906 additions and 111 deletions

View File

@ -39,6 +39,7 @@ Additional people who have contributed patches:
Jason R. Thorpe <thorpej@netbsd.org> Jason R. Thorpe <thorpej@netbsd.org>
Javier Achirica <achirica@ttd.net> Javier Achirica <achirica@ttd.net>
Jefferson Ogata <jogata@nodc.noaa.gov> Jefferson Ogata <jogata@nodc.noaa.gov>
Jesper Peterson <jesper@endace.com>
John Bankier <jbankier@rainfinity.com> John Bankier <jbankier@rainfinity.com>
Jon Lindgren <jonl@yubyub.net> Jon Lindgren <jonl@yubyub.net>
Kazushi Sugyo <sugyo@pb.jp.nec.com> Kazushi Sugyo <sugyo@pb.jp.nec.com>

2
FILES
View File

@ -50,6 +50,8 @@ nlpid.h
optimize.c optimize.c
pcap-bpf.c pcap-bpf.c
pcap-bpf.h pcap-bpf.h
pcap-dag.c
pcap-dag.h
pcap-dlpi.c pcap-dlpi.c
pcap-enet.c pcap-enet.c
pcap-int.h pcap-int.h

View File

@ -1,4 +1,4 @@
@(#) $Header: /tcpdump/master/libpcap/INSTALL.txt,v 1.5 2003-03-11 06:23:52 guy Exp $ (LBL) @(#) $Header: /tcpdump/master/libpcap/INSTALL.txt,v 1.6 2003-07-23 05:29:19 guy Exp $ (LBL)
To build libpcap, run "./configure" (a shell script). The configure To build libpcap, run "./configure" (a shell script). The configure
script will determine your system attributes and generate an script will determine your system attributes and generate an
@ -334,6 +334,9 @@ nlpid.h - OSI network layer protocol identifier definitions
net - symlink to bpf/net net - symlink to bpf/net
optimize.c - BPF optimization routines optimize.c - BPF optimization routines
pcap-bpf.c - BSD Packet Filter support pcap-bpf.c - BSD Packet Filter support
pcap-bpf.h - BPF definitions
pcap-dag.c - Endace DAG device capture support
pcap-dag.h - Endace DAG device capture support
pcap-dlpi.c - Data Link Provider Interface support pcap-dlpi.c - Data Link Provider Interface support
pcap-enet.c - enet support pcap-enet.c - enet support
pcap-int.h - internal libpcap definitions pcap-int.h - internal libpcap definitions

View File

@ -17,7 +17,7 @@
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
# #
# @(#) $Header: /tcpdump/master/libpcap/Makefile.in,v 1.95 2003-02-21 03:19:19 guy Exp $ (LBL) # @(#) $Header: /tcpdump/master/libpcap/Makefile.in,v 1.96 2003-07-23 05:29:20 guy Exp $ (LBL)
# #
# Various configurable paths (remember to edit Makefile.in, not Makefile) # Various configurable paths (remember to edit Makefile.in, not Makefile)
@ -44,7 +44,8 @@ VPATH = @srcdir@
CC = @CC@ CC = @CC@
CCOPT = @V_CCOPT@ CCOPT = @V_CCOPT@
INCLS = -I. @V_INCLS@ INCLS = -I. @V_INCLS@
DEFS = @DEFS@ DEFS = @DEFS@ @V_DEFS@
LIBS = @V_LIBS@
# Standard CFLAGS # Standard CFLAGS
CFLAGS = $(CCOPT) $(INCLS) $(DEFS) CFLAGS = $(CCOPT) $(INCLS) $(DEFS)
@ -71,16 +72,17 @@ YACC = @V_YACC@
PSRC = pcap-@V_PCAP@.c PSRC = pcap-@V_PCAP@.c
FSRC = fad-@V_FINDALLDEVS@.c FSRC = fad-@V_FINDALLDEVS@.c
SSRC = @SSRC@
CSRC = pcap.c inet.c gencode.c optimize.c nametoaddr.c \ CSRC = pcap.c inet.c gencode.c optimize.c nametoaddr.c \
etherent.c savefile.c bpf_filter.c bpf_image.c bpf_dump.c etherent.c savefile.c bpf_filter.c bpf_image.c bpf_dump.c
GENSRC = scanner.c grammar.c version.c GENSRC = scanner.c grammar.c version.c
LIBOBJS = @LIBOBJS@ LIBOBJS = @LIBOBJS@
SRC = $(PSRC) $(FSRC) $(CSRC) $(GENSRC) SRC = $(PSRC) $(FSRC) $(CSRC) $(SSRC) $(GENSRC)
# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
# hack the extra indirection # hack the extra indirection
OBJ = $(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(GENSRC:.c=.o) # $(LIBOBJS) OBJ = $(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(SSRC:.c=.o) $(GENSRC:.c=.o) # $(LIBOBJS)
HDR = pcap.h pcap-int.h pcap-namedb.h pcap-nit.h pcap-pf.h \ HDR = pcap.h pcap-int.h pcap-namedb.h pcap-nit.h pcap-pf.h \
ethertype.h gencode.h gnuc.h ethertype.h gencode.h gnuc.h
GENHDR = \ GENHDR = \
@ -98,7 +100,7 @@ all: libpcap.a
libpcap.a: $(OBJ) libpcap.a: $(OBJ)
@rm -f $@ @rm -f $@
ar rc $@ $(OBJ) ar rc $@ $(OBJ) $(LIBS)
$(RANLIB) $@ $(RANLIB) $@
scanner.c: $(srcdir)/scanner.l scanner.c: $(srcdir)/scanner.l

View File

@ -83,6 +83,9 @@
/* define if you have a /proc/net/dev */ /* define if you have a /proc/net/dev */
#undef HAVE_PROC_NET_DEV #undef HAVE_PROC_NET_DEV
/* define if you have a DAG API */
#undef HAVE_DAG_API
/* define on AIX to get certain functions */ /* define on AIX to get certain functions */
#undef _SUN #undef _SUN

266
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# From configure.in Revision: 1.98 # From configure.in Revision: 1.99
@ -72,6 +72,8 @@ ac_help="$ac_help
--enable-optimizer-dbg build optimizer debugging code" --enable-optimizer-dbg build optimizer debugging code"
ac_help="$ac_help ac_help="$ac_help
--enable-yydebug build parser debugging code" --enable-yydebug build parser debugging code"
ac_help="$ac_help
--with-dag=DIR include DAG support from DIR"
ac_help="$ac_help ac_help="$ac_help
--without-flex don't use flex" --without-flex don't use flex"
ac_help="$ac_help ac_help="$ac_help
@ -634,7 +636,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi fi
echo $ac_n "checking host system type""... $ac_c" 1>&6 echo $ac_n "checking host system type""... $ac_c" 1>&6
echo "configure:638: checking host system type" >&5 echo "configure:640: checking host system type" >&5
host_alias=$host host_alias=$host
case "$host_alias" in case "$host_alias" in
@ -655,7 +657,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6 echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6
echo "configure:659: checking target system type" >&5 echo "configure:661: checking target system type" >&5
target_alias=$target target_alias=$target
case "$target_alias" in case "$target_alias" in
@ -673,7 +675,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6 echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6
echo "configure:677: checking build system type" >&5 echo "configure:679: checking build system type" >&5
build_alias=$build build_alias=$build
case "$build_alias" in case "$build_alias" in
@ -721,7 +723,7 @@ fi
# Extract the first word of "shlicc2", so it can be a program name with args. # Extract the first word of "shlicc2", so it can be a program name with args.
set dummy shlicc2; ac_word=$2 set dummy shlicc2; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:725: checking for $ac_word" >&5 echo "configure:727: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_SHLICC2'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_SHLICC2'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -762,7 +764,7 @@ fi
# Extract the first word of "gcc", so it can be a program name with args. # Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2 set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:766: checking for $ac_word" >&5 echo "configure:768: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -792,7 +794,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args. # Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2 set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:796: checking for $ac_word" >&5 echo "configure:798: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -843,7 +845,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args. # Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2 set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:847: checking for $ac_word" >&5 echo "configure:849: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -875,7 +877,7 @@ fi
fi fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
echo "configure:879: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 echo "configure:881: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@ -886,12 +888,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF cat > conftest.$ac_ext << EOF
#line 890 "configure" #line 892 "configure"
#include "confdefs.h" #include "confdefs.h"
main(){return(0);} main(){return(0);}
EOF EOF
if { (eval echo configure:895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler. # If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then if (./conftest; exit) 2>/dev/null; then
@ -917,12 +919,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
echo "configure:921: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "configure:923: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
echo "configure:926: checking whether we are using GNU C" >&5 echo "configure:928: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -931,7 +933,7 @@ else
yes; yes;
#endif #endif
EOF EOF
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes ac_cv_prog_gcc=yes
else else
ac_cv_prog_gcc=no ac_cv_prog_gcc=no
@ -950,7 +952,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS" ac_save_CFLAGS="$CFLAGS"
CFLAGS= CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
echo "configure:954: checking whether ${CC-cc} accepts -g" >&5 echo "configure:956: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -987,7 +989,7 @@ fi
V_CCOPT="-O2" V_CCOPT="-O2"
else else
echo $ac_n "checking gcc version""... $ac_c" 1>&6 echo $ac_n "checking gcc version""... $ac_c" 1>&6
echo "configure:991: checking gcc version" >&5 echo "configure:993: checking gcc version" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_gcc_vers'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_gcc_vers'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1005,19 +1007,19 @@ fi
fi fi
else else
echo $ac_n "checking that $CC handles ansi prototypes""... $ac_c" 1>&6 echo $ac_n "checking that $CC handles ansi prototypes""... $ac_c" 1>&6
echo "configure:1009: checking that $CC handles ansi prototypes" >&5 echo "configure:1011: checking that $CC handles ansi prototypes" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_cc_ansi_prototypes'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_cc_ansi_prototypes'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1014 "configure" #line 1016 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/types.h> #include <sys/types.h>
int main() { int main() {
int frob(int, char *) int frob(int, char *)
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1021: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_cc_ansi_prototypes=yes ac_cv_lbl_cc_ansi_prototypes=yes
else else
@ -1035,21 +1037,21 @@ fi
hpux*) hpux*)
echo $ac_n "checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)""... $ac_c" 1>&6 echo $ac_n "checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)""... $ac_c" 1>&6
echo "configure:1039: checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)" >&5 echo "configure:1041: checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)" >&5
savedcflags="$CFLAGS" savedcflags="$CFLAGS"
CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS"
if eval "test \"`echo '$''{'ac_cv_lbl_cc_hpux_cc_aa'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_cc_hpux_cc_aa'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1046 "configure" #line 1048 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/types.h> #include <sys/types.h>
int main() { int main() {
int frob(int, char *) int frob(int, char *)
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_cc_hpux_cc_aa=yes ac_cv_lbl_cc_hpux_cc_aa=yes
else else
@ -1093,12 +1095,12 @@ EOF
ultrix*) ultrix*)
echo $ac_n "checking that Ultrix $CC hacks const in prototypes""... $ac_c" 1>&6 echo $ac_n "checking that Ultrix $CC hacks const in prototypes""... $ac_c" 1>&6
echo "configure:1097: checking that Ultrix $CC hacks const in prototypes" >&5 echo "configure:1099: checking that Ultrix $CC hacks const in prototypes" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_cc_const_proto'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_cc_const_proto'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1102 "configure" #line 1104 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/types.h> #include <sys/types.h>
int main() { int main() {
@ -1106,7 +1108,7 @@ struct a { int b; };
void c(const struct a *) void c(const struct a *)
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1110: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1112: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_cc_const_proto=yes ac_cv_lbl_cc_const_proto=yes
else else
@ -1130,7 +1132,7 @@ EOF
fi fi
echo $ac_n "checking for inline""... $ac_c" 1>&6 echo $ac_n "checking for inline""... $ac_c" 1>&6
echo "configure:1134: checking for inline" >&5 echo "configure:1136: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_inline'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1140,7 +1142,7 @@ else
for ac_lbl_inline in inline __inline__ __inline for ac_lbl_inline in inline __inline__ __inline
do do
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1144 "configure" #line 1146 "configure"
#include "confdefs.h" #include "confdefs.h"
#define inline $ac_lbl_inline #define inline $ac_lbl_inline
static inline struct iltest *foo(void); static inline struct iltest *foo(void);
@ -1160,7 +1162,7 @@ int main() {
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_lbl_cc_inline=yes ac_lbl_cc_inline=yes
else else
@ -1188,13 +1190,13 @@ EOF
echo $ac_n "checking for __attribute__""... $ac_c" 1>&6 echo $ac_n "checking for __attribute__""... $ac_c" 1>&6
echo "configure:1192: checking for __attribute__" >&5 echo "configure:1194: checking for __attribute__" >&5
if eval "test \"`echo '$''{'ac_cv___attribute__'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv___attribute__'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1198 "configure" #line 1200 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <stdlib.h> #include <stdlib.h>
@ -1211,7 +1213,7 @@ foo(void)
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1215: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv___attribute__=yes ac_cv___attribute__=yes
else else
@ -1233,12 +1235,12 @@ echo "$ac_t""$ac_cv___attribute__" 1>&6
echo $ac_n "checking for u_int8_t using $CC""... $ac_c" 1>&6 echo $ac_n "checking for u_int8_t using $CC""... $ac_c" 1>&6
echo "configure:1237: checking for u_int8_t using $CC" >&5 echo "configure:1239: checking for u_int8_t using $CC" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_have_u_int8_t'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_have_u_int8_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1242 "configure" #line 1244 "configure"
#include "confdefs.h" #include "confdefs.h"
# include "confdefs.h" # include "confdefs.h"
@ -1251,7 +1253,7 @@ int main() {
u_int8_t i u_int8_t i
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1255: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1257: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_have_u_int8_t=yes ac_cv_lbl_have_u_int8_t=yes
else else
@ -1271,12 +1273,12 @@ EOF
fi fi
echo $ac_n "checking for u_int16_t using $CC""... $ac_c" 1>&6 echo $ac_n "checking for u_int16_t using $CC""... $ac_c" 1>&6
echo "configure:1275: checking for u_int16_t using $CC" >&5 echo "configure:1277: checking for u_int16_t using $CC" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_have_u_int16_t'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_have_u_int16_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1280 "configure" #line 1282 "configure"
#include "confdefs.h" #include "confdefs.h"
# include "confdefs.h" # include "confdefs.h"
@ -1289,7 +1291,7 @@ int main() {
u_int16_t i u_int16_t i
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1295: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_have_u_int16_t=yes ac_cv_lbl_have_u_int16_t=yes
else else
@ -1309,12 +1311,12 @@ EOF
fi fi
echo $ac_n "checking for u_int32_t using $CC""... $ac_c" 1>&6 echo $ac_n "checking for u_int32_t using $CC""... $ac_c" 1>&6
echo "configure:1313: checking for u_int32_t using $CC" >&5 echo "configure:1315: checking for u_int32_t using $CC" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_have_u_int32_t'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_have_u_int32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1318 "configure" #line 1320 "configure"
#include "confdefs.h" #include "confdefs.h"
# include "confdefs.h" # include "confdefs.h"
@ -1327,7 +1329,7 @@ int main() {
u_int32_t i u_int32_t i
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_have_u_int32_t=yes ac_cv_lbl_have_u_int32_t=yes
else else
@ -1348,7 +1350,7 @@ EOF
fi fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
echo "configure:1352: checking how to run the C preprocessor" >&5 echo "configure:1354: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory. # On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then if test -n "$CPP" && test -d "$CPP"; then
CPP= CPP=
@ -1363,13 +1365,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser, # On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. # not just through cpp.
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1367 "configure" #line 1369 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1373: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1375: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
: :
@ -1380,13 +1382,13 @@ else
rm -rf conftest* rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp" CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1384 "configure" #line 1386 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1390: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1392: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
: :
@ -1397,13 +1399,13 @@ else
rm -rf conftest* rm -rf conftest*
CPP="${CC-cc} -nologo -E" CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1401 "configure" #line 1403 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <assert.h> #include <assert.h>
Syntax Error Syntax Error
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1407: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
: :
@ -1431,17 +1433,17 @@ for ac_hdr in sys/ioccom.h sys/sockio.h ifaddrs.h limits.h netinet/if_ether.h
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:1435: checking for $ac_hdr" >&5 echo "configure:1437: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1440 "configure" #line 1442 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1445: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1447: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
@ -1470,12 +1472,12 @@ done
if test "$GCC" = yes ; then if test "$GCC" = yes ; then
echo $ac_n "checking for ANSI ioctl definitions""... $ac_c" 1>&6 echo $ac_n "checking for ANSI ioctl definitions""... $ac_c" 1>&6
echo "configure:1474: checking for ANSI ioctl definitions" >&5 echo "configure:1476: checking for ANSI ioctl definitions" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_gcc_fixincludes'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_gcc_fixincludes'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1479 "configure" #line 1481 "configure"
#include "confdefs.h" #include "confdefs.h"
/* /*
* This generates a "duplicate case value" when fixincludes * This generates a "duplicate case value" when fixincludes
@ -1494,7 +1496,7 @@ switch (0) {
} }
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1498: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1500: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_gcc_fixincludes=yes ac_cv_lbl_gcc_fixincludes=yes
else else
@ -1517,12 +1519,12 @@ fi
for ac_func in ether_hostton strerror strlcpy for ac_func in ether_hostton strerror strlcpy
do do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:1521: checking for $ac_func" >&5 echo "configure:1523: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1526 "configure" #line 1528 "configure"
#include "confdefs.h" #include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes, /* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */ which can conflict with char $ac_func(); below. */
@ -1545,7 +1547,7 @@ $ac_func();
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:1551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_func_$ac_func=yes" eval "ac_cv_func_$ac_func=yes"
else else
@ -1571,7 +1573,7 @@ done
echo $ac_n "checking if --disable-protochain option is specified""... $ac_c" 1>&6 echo $ac_n "checking if --disable-protochain option is specified""... $ac_c" 1>&6
echo "configure:1575: checking if --disable-protochain option is specified" >&5 echo "configure:1577: checking if --disable-protochain option is specified" >&5
# Check whether --enable-protochain or --disable-protochain was given. # Check whether --enable-protochain or --disable-protochain was given.
if test "${enable_protochain+set}" = set; then if test "${enable_protochain+set}" = set; then
enableval="$enable_protochain" enableval="$enable_protochain"
@ -1602,7 +1604,7 @@ if test "${with_pcap+set}" = set; then
fi fi
echo $ac_n "checking packet capture type""... $ac_c" 1>&6 echo $ac_n "checking packet capture type""... $ac_c" 1>&6
echo "configure:1606: checking packet capture type" >&5 echo "configure:1608: checking packet capture type" >&5
if test ! -z "$with_pcap" ; then if test ! -z "$with_pcap" ; then
V_PCAP="$withval" V_PCAP="$withval"
elif test -r /dev/bpf0 ; then elif test -r /dev/bpf0 ; then
@ -1640,12 +1642,12 @@ fi
echo "$ac_t""$V_PCAP" 1>&6 echo "$ac_t""$V_PCAP" 1>&6
echo $ac_n "checking for getifaddrs""... $ac_c" 1>&6 echo $ac_n "checking for getifaddrs""... $ac_c" 1>&6
echo "configure:1644: checking for getifaddrs" >&5 echo "configure:1646: checking for getifaddrs" >&5
if eval "test \"`echo '$''{'ac_cv_func_getifaddrs'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_func_getifaddrs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1649 "configure" #line 1651 "configure"
#include "confdefs.h" #include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes, /* System header to define __stub macros and hopefully few prototypes,
which can conflict with char getifaddrs(); below. */ which can conflict with char getifaddrs(); below. */
@ -1668,7 +1670,7 @@ getifaddrs();
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then if { (eval echo configure:1674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest* rm -rf conftest*
eval "ac_cv_func_getifaddrs=yes" eval "ac_cv_func_getifaddrs=yes"
else else
@ -1706,12 +1708,12 @@ else
# or it might be some other OS, with just SIOCGIFCONF. # or it might be some other OS, with just SIOCGIFCONF.
# #
echo $ac_n "checking whether we have SIOCGLIFCONF""... $ac_c" 1>&6 echo $ac_n "checking whether we have SIOCGLIFCONF""... $ac_c" 1>&6
echo "configure:1710: checking whether we have SIOCGLIFCONF" >&5 echo "configure:1712: checking whether we have SIOCGLIFCONF" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_have_siocglifconf'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_have_siocglifconf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1715 "configure" #line 1717 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <sys/param.h> #include <sys/param.h>
#include <sys/file.h> #include <sys/file.h>
@ -1722,7 +1724,7 @@ int main() {
ioctl(0, SIOCGLIFCONF, (char *)0); ioctl(0, SIOCGLIFCONF, (char *)0);
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1726: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_have_siocglifconf=yes ac_cv_lbl_have_siocglifconf=yes
else else
@ -1764,7 +1766,7 @@ fi
echo $ac_n "checking if --enable-ipv6 option is specified""... $ac_c" 1>&6 echo $ac_n "checking if --enable-ipv6 option is specified""... $ac_c" 1>&6
echo "configure:1768: checking if --enable-ipv6 option is specified" >&5 echo "configure:1770: checking if --enable-ipv6 option is specified" >&5
# Check whether --enable-ipv6 or --disable-ipv6 was given. # Check whether --enable-ipv6 or --disable-ipv6 was given.
if test "${enable_ipv6+set}" = set; then if test "${enable_ipv6+set}" = set; then
enableval="$enable_ipv6" enableval="$enable_ipv6"
@ -1780,7 +1782,7 @@ fi
echo "$ac_t""${enable_ipv6-no}" 1>&6 echo "$ac_t""${enable_ipv6-no}" 1>&6
echo $ac_n "checking whether to build optimizer debugging code""... $ac_c" 1>&6 echo $ac_n "checking whether to build optimizer debugging code""... $ac_c" 1>&6
echo "configure:1784: checking whether to build optimizer debugging code" >&5 echo "configure:1786: checking whether to build optimizer debugging code" >&5
# Check whether --enable-optimizer-dbg or --disable-optimizer-dbg was given. # Check whether --enable-optimizer-dbg or --disable-optimizer-dbg was given.
if test "${enable_optimizer_dbg+set}" = set; then if test "${enable_optimizer_dbg+set}" = set; then
enableval="$enable_optimizer_dbg" enableval="$enable_optimizer_dbg"
@ -1796,7 +1798,7 @@ fi
echo "$ac_t""${enable_optimizer_dbg-no}" 1>&6 echo "$ac_t""${enable_optimizer_dbg-no}" 1>&6
echo $ac_n "checking whether to build parser debugging code""... $ac_c" 1>&6 echo $ac_n "checking whether to build parser debugging code""... $ac_c" 1>&6
echo "configure:1800: checking whether to build parser debugging code" >&5 echo "configure:1802: checking whether to build parser debugging code" >&5
# Check whether --enable-yydebug or --disable-yydebug was given. # Check whether --enable-yydebug or --disable-yydebug was given.
if test "${enable_yydebug+set}" = set; then if test "${enable_yydebug+set}" = set; then
enableval="$enable_yydebug" enableval="$enable_yydebug"
@ -1818,17 +1820,17 @@ dlpi)
do do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:1822: checking for $ac_hdr" >&5 echo "configure:1824: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1827 "configure" #line 1829 "configure"
#include "confdefs.h" #include "confdefs.h"
#include <$ac_hdr> #include <$ac_hdr>
EOF EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } { (eval echo configure:1834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then if test -z "$ac_err"; then
rm -rf conftest* rm -rf conftest*
@ -1855,7 +1857,7 @@ fi
done done
echo $ac_n "checking for /dev/dlpi device""... $ac_c" 1>&6 echo $ac_n "checking for /dev/dlpi device""... $ac_c" 1>&6
echo "configure:1859: checking for /dev/dlpi device" >&5 echo "configure:1861: checking for /dev/dlpi device" >&5
if test -c /dev/dlpi ; then if test -c /dev/dlpi ; then
echo "$ac_t""yes" 1>&6 echo "$ac_t""yes" 1>&6
cat >> confdefs.h <<\EOF cat >> confdefs.h <<\EOF
@ -1866,7 +1868,7 @@ EOF
echo "$ac_t""no" 1>&6 echo "$ac_t""no" 1>&6
dir="/dev/dlpi" dir="/dev/dlpi"
echo $ac_n "checking for $dir directory""... $ac_c" 1>&6 echo $ac_n "checking for $dir directory""... $ac_c" 1>&6
echo "configure:1870: checking for $dir directory" >&5 echo "configure:1872: checking for $dir directory" >&5
if test -d $dir ; then if test -d $dir ; then
echo "$ac_t""yes" 1>&6 echo "$ac_t""yes" 1>&6
cat >> confdefs.h <<EOF cat >> confdefs.h <<EOF
@ -1881,7 +1883,7 @@ EOF
linux) linux)
echo $ac_n "checking Linux kernel version""... $ac_c" 1>&6 echo $ac_n "checking Linux kernel version""... $ac_c" 1>&6
echo "configure:1885: checking Linux kernel version" >&5 echo "configure:1887: checking Linux kernel version" >&5
if test "$cross_compiling" = yes; then if test "$cross_compiling" = yes; then
if eval "test \"`echo '$''{'ac_cv_linux_vers'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_linux_vers'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
@ -1906,12 +1908,12 @@ fi
{ echo "configure: error: version 2 or higher required; see the INSTALL doc for more info" 1>&2; exit 1; } { echo "configure: error: version 2 or higher required; see the INSTALL doc for more info" 1>&2; exit 1; }
fi fi
echo $ac_n "checking if if_packet.h has tpacket_stats defined""... $ac_c" 1>&6 echo $ac_n "checking if if_packet.h has tpacket_stats defined""... $ac_c" 1>&6
echo "configure:1910: checking if if_packet.h has tpacket_stats defined" >&5 echo "configure:1912: checking if if_packet.h has tpacket_stats defined" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_tpacket_stats'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_tpacket_stats'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 1915 "configure" #line 1917 "configure"
#include "confdefs.h" #include "confdefs.h"
# include <linux/if_packet.h> # include <linux/if_packet.h>
@ -1919,7 +1921,7 @@ int main() {
struct tpacket_stats stats struct tpacket_stats stats
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:1923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:1925: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_tpacket_stats=yes ac_cv_lbl_tpacket_stats=yes
else else
@ -1940,6 +1942,10 @@ EOF
fi fi
;; ;;
dag)
V_DEFS="$V_DEFS -DDAG_ONLY"
;;
null) null)
echo "configure: warning: cannot determine packet capture interface" 1>&2 echo "configure: warning: cannot determine packet capture interface" 1>&2
echo "configure: warning: (see the INSTALL doc for more info)" 1>&2 echo "configure: warning: (see the INSTALL doc for more info)" 1>&2
@ -1948,7 +1954,7 @@ null)
esac esac
echo $ac_n "checking whether we have /proc/net/dev""... $ac_c" 1>&6 echo $ac_n "checking whether we have /proc/net/dev""... $ac_c" 1>&6
echo "configure:1952: checking whether we have /proc/net/dev" >&5 echo "configure:1958: checking whether we have /proc/net/dev" >&5
if test -r /proc/net/dev ; then if test -r /proc/net/dev ; then
ac_cv_lbl_proc_net_dev=yes ac_cv_lbl_proc_net_dev=yes
else else
@ -1962,6 +1968,68 @@ EOF
fi fi
echo "$ac_t""$ac_cv_lbl_proc_net_dev" 1>&6 echo "$ac_t""$ac_cv_lbl_proc_net_dev" 1>&6
# Check whether --with-dag or --without-dag was given.
if test "${with_dag+set}" = set; then
withval="$with_dag"
:
fi
ac_cv_lbl_dag_api=no
if test "$with_dag" != no; then
case "$V_PCAP" in
linux|bpf|dag)
;;
*)
{ echo "configure: error: DAG support only available with 'linux' 'bpf' and 'dag' packet capture types" 1>&2; exit 1; }
;;
esac
echo $ac_n "checking whether we have DAG API""... $ac_c" 1>&6
echo "configure:1990: checking whether we have DAG API" >&5
if test -z "$with_dag" -o "$with_dag" = yes; then
dag_root=$srcdir/../dag
else
dag_root=$with_dag
fi
if test -r "$dag_root/tools" -a -r "$dag_root/include"; then
dag_tools_dir="$dag_root/tools"
dag_include_dir="$dag_root/include"
else
dag_tools_dir="$dag_root"
dag_include_dir="$dag_root"
fi
if test -r "$dag_include_dir/dagapi.h" -a -r "$dag_tools_dir/dagapi.o"; then
V_INCLS="$V_INCLS -I $dag_include_dir"
V_LIBS="$V_LIBS $dag_tools_dir/dagapi.o $dag_tools_dir/dagopts.o"
if test "$V_PCAP" != dag ; then
SSRC="pcap-dag.c"
fi
ac_cv_lbl_dag_api=yes
else
ac_cv_lbl_dag_api=no
fi
echo "$ac_t""$ac_cv_lbl_dag_api" 1>&6
if test $ac_cv_lbl_dag_api = no; then
if test ! -z "$with_dag"; then
{ echo "configure: error: DAG API not found under directory $dag_root; use --without-dag" 1>&2; exit 1; }
fi
else
cat >> confdefs.h <<\EOF
#define HAVE_DAG_API 1
EOF
fi
fi
if test "$V_PCAP" = dag -a "$ac_cv_lbl_dag_api" = no; then
{ echo "configure: error: Specifying the capture type as 'dag' requires the DAG API to be present; use --with-dag=DIR" 1>&2; exit 1; }
fi
# Check whether --with-flex or --without-flex was given. # Check whether --with-flex or --without-flex was given.
if test "${with_flex+set}" = set; then if test "${with_flex+set}" = set; then
withval="$with_flex" withval="$with_flex"
@ -1982,7 +2050,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1986: checking for $ac_word" >&5 echo "configure:2054: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_V_LEX'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_V_LEX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2016,7 +2084,7 @@ test -n "$V_LEX" || V_LEX="lex"
if test "$V_LEX" = flex ; then if test "$V_LEX" = flex ; then
# The -V flag was added in 2.4 # The -V flag was added in 2.4
echo $ac_n "checking for flex 2.4 or higher""... $ac_c" 1>&6 echo $ac_n "checking for flex 2.4 or higher""... $ac_c" 1>&6
echo "configure:2020: checking for flex 2.4 or higher" >&5 echo "configure:2088: checking for flex 2.4 or higher" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_flex_v24'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_flex_v24'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2042,7 +2110,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2046: checking for $ac_word" >&5 echo "configure:2114: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_V_YACC'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_V_YACC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2089,7 +2157,7 @@ if test "$V_LEX" = lex ; then
# Some versions of lex can't handle the definitions section of scanner.l . # Some versions of lex can't handle the definitions section of scanner.l .
# Try lexing it and complain if it can't deal. # Try lexing it and complain if it can't deal.
echo $ac_n "checking for capable lex""... $ac_c" 1>&6 echo $ac_n "checking for capable lex""... $ac_c" 1>&6
echo "configure:2093: checking for capable lex" >&5 echo "configure:2161: checking for capable lex" >&5
if eval "test \"`echo '$''{'tcpdump_cv_capable_lex'+set}'`\" = set"; then if eval "test \"`echo '$''{'tcpdump_cv_capable_lex'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2140,19 +2208,19 @@ EOF
sinix*) sinix*)
echo $ac_n "checking if SINIX compiler defines sinix""... $ac_c" 1>&6 echo $ac_n "checking if SINIX compiler defines sinix""... $ac_c" 1>&6
echo "configure:2144: checking if SINIX compiler defines sinix" >&5 echo "configure:2212: checking if SINIX compiler defines sinix" >&5
if eval "test \"`echo '$''{'ac_cv_cc_sinix_defined'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_cc_sinix_defined'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2149 "configure" #line 2217 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
int i = sinix; int i = sinix;
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_cc_sinix_defined=yes ac_cv_cc_sinix_defined=yes
else else
@ -2184,7 +2252,7 @@ esac
# Extract the first word of "ranlib", so it can be a program name with args. # Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2 set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2188: checking for $ac_word" >&5 echo "configure:2256: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2252,12 +2320,12 @@ EOF
fi fi
echo $ac_n "checking if sockaddr struct has sa_len member""... $ac_c" 1>&6 echo $ac_n "checking if sockaddr struct has sa_len member""... $ac_c" 1>&6
echo "configure:2256: checking if sockaddr struct has sa_len member" >&5 echo "configure:2324: checking if sockaddr struct has sa_len member" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_sockaddr_has_sa_len'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_sockaddr_has_sa_len'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2261 "configure" #line 2329 "configure"
#include "confdefs.h" #include "confdefs.h"
# include <sys/types.h> # include <sys/types.h>
@ -2266,7 +2334,7 @@ int main() {
u_int i = sizeof(((struct sockaddr *)0)->sa_len) u_int i = sizeof(((struct sockaddr *)0)->sa_len)
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2270: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_sockaddr_has_sa_len=yes ac_cv_lbl_sockaddr_has_sa_len=yes
else else
@ -2287,12 +2355,12 @@ EOF
fi fi
echo $ac_n "checking if sockaddr_storage struct exists""... $ac_c" 1>&6 echo $ac_n "checking if sockaddr_storage struct exists""... $ac_c" 1>&6
echo "configure:2291: checking if sockaddr_storage struct exists" >&5 echo "configure:2359: checking if sockaddr_storage struct exists" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_has_sockaddr_storage'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_has_sockaddr_storage'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2296 "configure" #line 2364 "configure"
#include "confdefs.h" #include "confdefs.h"
# include <sys/types.h> # include <sys/types.h>
@ -2301,7 +2369,7 @@ int main() {
u_int i = sizeof (struct sockaddr_storage) u_int i = sizeof (struct sockaddr_storage)
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_has_sockaddr_storage=yes ac_cv_lbl_has_sockaddr_storage=yes
else else
@ -2322,12 +2390,12 @@ EOF
fi fi
echo $ac_n "checking if dl_hp_ppa_info_t struct has dl_module_id_1 member""... $ac_c" 1>&6 echo $ac_n "checking if dl_hp_ppa_info_t struct has dl_module_id_1 member""... $ac_c" 1>&6
echo "configure:2326: checking if dl_hp_ppa_info_t struct has dl_module_id_1 member" >&5 echo "configure:2394: checking if dl_hp_ppa_info_t struct has dl_module_id_1 member" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2331 "configure" #line 2399 "configure"
#include "confdefs.h" #include "confdefs.h"
# include <sys/types.h> # include <sys/types.h>
@ -2337,7 +2405,7 @@ int main() {
u_int i = sizeof(((dl_hp_ppa_info_t *)0)->dl_module_id_1) u_int i = sizeof(((dl_hp_ppa_info_t *)0)->dl_module_id_1)
; return 0; } ; return 0; }
EOF EOF
if { (eval echo configure:2341: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if { (eval echo configure:2409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest* rm -rf conftest*
ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=yes ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=yes
else else
@ -2358,7 +2426,7 @@ EOF
fi fi
echo $ac_n "checking if unaligned accesses fail""... $ac_c" 1>&6 echo $ac_n "checking if unaligned accesses fail""... $ac_c" 1>&6
echo "configure:2362: checking if unaligned accesses fail" >&5 echo "configure:2430: checking if unaligned accesses fail" >&5
if eval "test \"`echo '$''{'ac_cv_lbl_unaligned_fail'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_lbl_unaligned_fail'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2463,6 +2531,9 @@ ln -s ${srcdir}/bpf/net net
# Find a good install program. We prefer a C program (faster), # Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or # so one script is as good as another. But avoid the broken or
# incompatible versions: # incompatible versions:
@ -2475,7 +2546,7 @@ ln -s ${srcdir}/bpf/net net
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh. # ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:2479: checking for a BSD compatible install" >&5 echo "configure:2550: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
@ -2685,10 +2756,13 @@ s%@V_LEX@%$V_LEX%g
s%@V_YACC@%$V_YACC%g s%@V_YACC@%$V_YACC%g
s%@RANLIB@%$RANLIB%g s%@RANLIB@%$RANLIB%g
s%@V_CCOPT@%$V_CCOPT%g s%@V_CCOPT@%$V_CCOPT%g
s%@V_DEFS@%$V_DEFS%g
s%@V_INCLS@%$V_INCLS%g s%@V_INCLS@%$V_INCLS%g
s%@V_LIBS@%$V_LIBS%g
s%@V_PCAP@%$V_PCAP%g s%@V_PCAP@%$V_PCAP%g
s%@V_FINDALLDEVS@%$V_FINDALLDEVS%g s%@V_FINDALLDEVS@%$V_FINDALLDEVS%g
s%@V_RANLIB@%$V_RANLIB%g s%@V_RANLIB@%$V_RANLIB%g
s%@SSRC@%$SSRC%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g s%@INSTALL_DATA@%$INSTALL_DATA%g

View File

@ -1,4 +1,4 @@
dnl @(#) $Header: /tcpdump/master/libpcap/configure.in,v 1.98 2003-02-11 06:21:00 guy Exp $ (LBL) dnl @(#) $Header: /tcpdump/master/libpcap/configure.in,v 1.99 2003-07-23 05:29:20 guy Exp $ (LBL)
dnl dnl
dnl Copyright (c) 1994, 1995, 1996, 1997 dnl Copyright (c) 1994, 1995, 1996, 1997
dnl The Regents of the University of California. All rights reserved. dnl The Regents of the University of California. All rights reserved.
@ -6,12 +6,12 @@ dnl
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
dnl dnl
AC_REVISION($Revision: 1.98 $) AC_REVISION($Revision: 1.99 $)
AC_INIT(pcap.c) AC_INIT(pcap.c)
AC_CANONICAL_SYSTEM AC_CANONICAL_SYSTEM
AC_LBL_C_INIT(V_CCOPT, V_INCLS) AC_LBL_C_INIT(V_CCOPT, V_INCLS, V_LIBS)
AC_LBL_C_INLINE AC_LBL_C_INLINE
AC_C___ATTRIBUTE__ AC_C___ATTRIBUTE__
@ -217,6 +217,10 @@ linux)
AC_LBL_TPACKET_STATS AC_LBL_TPACKET_STATS
;; ;;
dag)
V_DEFS="$V_DEFS -DDAG_ONLY"
;;
null) null)
AC_MSG_WARN(cannot determine packet capture interface) AC_MSG_WARN(cannot determine packet capture interface)
AC_MSG_WARN((see the INSTALL doc for more info)) AC_MSG_WARN((see the INSTALL doc for more info))
@ -235,6 +239,59 @@ if test $ac_cv_lbl_proc_net_dev = yes; then
fi fi
AC_MSG_RESULT($ac_cv_lbl_proc_net_dev) AC_MSG_RESULT($ac_cv_lbl_proc_net_dev)
AC_ARG_WITH(dag, [ --with-dag=DIR include DAG support from DIR])
ac_cv_lbl_dag_api=no
if test "$with_dag" != no; then
case "$V_PCAP" in
linux|bpf|dag)
;;
*)
AC_MSG_ERROR(DAG support only available with 'linux' 'bpf' and 'dag' packet capture types)
;;
esac
AC_MSG_CHECKING(whether we have DAG API)
if test -z "$with_dag" -o "$with_dag" = yes; then
dag_root=$srcdir/../dag
else
dag_root=$with_dag
fi
if test -r "$dag_root/tools" -a -r "$dag_root/include"; then
dag_tools_dir="$dag_root/tools"
dag_include_dir="$dag_root/include"
else
dag_tools_dir="$dag_root"
dag_include_dir="$dag_root"
fi
if test -r "$dag_include_dir/dagapi.h" -a -r "$dag_tools_dir/dagapi.o"; then
V_INCLS="$V_INCLS -I $dag_include_dir"
V_LIBS="$V_LIBS $dag_tools_dir/dagapi.o $dag_tools_dir/dagopts.o"
if test "$V_PCAP" != dag ; then
SSRC="pcap-dag.c"
fi
ac_cv_lbl_dag_api=yes
else
ac_cv_lbl_dag_api=no
fi
AC_MSG_RESULT($ac_cv_lbl_dag_api)
if test $ac_cv_lbl_dag_api = no; then
if test ! -z "$with_dag"; then
AC_MSG_ERROR(DAG API not found under directory $dag_root; use --without-dag)
fi
else
AC_DEFINE(HAVE_DAG_API, 1, [define if you have a DAG API])
fi
fi
if test "$V_PCAP" = dag -a "$ac_cv_lbl_dag_api" = no; then
AC_MSG_ERROR(Specifying the capture type as 'dag' requires the DAG API to be present; use --with-dag=DIR)
fi
AC_LBL_LEX_AND_YACC(V_LEX, V_YACC, pcap_) AC_LBL_LEX_AND_YACC(V_LEX, V_YACC, pcap_)
if test "$V_LEX" = lex ; then if test "$V_LEX" = lex ; then
# Some versions of lex can't handle the definitions section of scanner.l . # Some versions of lex can't handle the definitions section of scanner.l .
@ -310,12 +367,15 @@ rm -f net
ln -s ${srcdir}/bpf/net net ln -s ${srcdir}/bpf/net net
AC_SUBST(V_CCOPT) AC_SUBST(V_CCOPT)
AC_SUBST(V_DEFS)
AC_SUBST(V_INCLS) AC_SUBST(V_INCLS)
AC_SUBST(V_LIBS)
AC_SUBST(V_LEX) AC_SUBST(V_LEX)
AC_SUBST(V_PCAP) AC_SUBST(V_PCAP)
AC_SUBST(V_FINDALLDEVS) AC_SUBST(V_FINDALLDEVS)
AC_SUBST(V_RANLIB) AC_SUBST(V_RANLIB)
AC_SUBST(V_YACC) AC_SUBST(V_YACC)
AC_SUBST(SSRC)
AC_PROG_INSTALL AC_PROG_INSTALL

8
inet.c
View File

@ -34,7 +34,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] = static const char rcsid[] =
"@(#) $Header: /tcpdump/master/libpcap/inet.c,v 1.55 2003-02-04 09:51:38 risso Exp $ (LBL)"; "@(#) $Header: /tcpdump/master/libpcap/inet.c,v 1.56 2003-07-23 05:29:20 guy Exp $ (LBL)";
#endif #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -529,7 +529,11 @@ pcap_lookupnet(device, netp, maskp, errbuf)
* has the network address and -mask "0.0.0.0" therefore catching * has the network address and -mask "0.0.0.0" therefore catching
* all traffic. Using NULL for the interface is the same as "any". * all traffic. Using NULL for the interface is the same as "any".
*/ */
if (!device || strcmp(device, "any") == 0) { if (!device || strcmp(device, "any") == 0
#ifdef HAVE_DAG_API
|| strstr(device, "dag") != NULL
#endif
) {
*netp = *maskp = 0; *netp = *maskp = 0;
return 0; return 0;
} }

View File

@ -20,7 +20,7 @@
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] = static const char rcsid[] =
"@(#) $Header: /tcpdump/master/libpcap/pcap-bpf.c,v 1.60 2003-04-17 06:35:34 guy Exp $ (LBL)"; "@(#) $Header: /tcpdump/master/libpcap/pcap-bpf.c,v 1.61 2003-07-23 05:29:21 guy Exp $ (LBL)";
#endif #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -93,6 +93,10 @@ static int odmlockid = 0;
#include "pcap-int.h" #include "pcap-int.h"
#ifdef HAVE_DAG_API
#include "pcap-dag.h"
#endif /* HAVE_DAG_API */
#ifdef HAVE_OS_PROTO_H #ifdef HAVE_OS_PROTO_H
#include "os-proto.h" #include "os-proto.h"
#endif #endif
@ -104,6 +108,12 @@ pcap_stats(pcap_t *p, struct pcap_stat *ps)
{ {
struct bpf_stat s; struct bpf_stat s;
#ifdef HAVE_DAG_API
if (p->md.is_dag) {
return dag_stats(p, ps);
}
#endif /* HAVE_DAG_API */
/* /*
* "ps_recv" counts packets handed to the filter, not packets * "ps_recv" counts packets handed to the filter, not packets
* that passed the filter. This includes packets later dropped * that passed the filter. This includes packets later dropped
@ -135,6 +145,12 @@ pcap_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
int n = 0; int n = 0;
register u_char *bp, *ep; register u_char *bp, *ep;
#ifdef HAVE_DAG_API
if (p->md.is_dag) {
return dag_read(p, cnt, callback, user);
}
#endif /* HAVE_DAG_API */
again: again:
cc = p->cc; cc = p->cc;
if (p->cc == 0) { if (p->cc == 0) {
@ -447,6 +463,12 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms,
u_int v; u_int v;
pcap_t *p; pcap_t *p;
#ifdef HAVE_DAG_API
if (strstr(device, "dag")) {
return dag_open_live(device, snaplen, promisc, to_ms, ebuf);
}
#endif /* HAVE_DAG_API */
#ifdef BIOCGDLTLIST #ifdef BIOCGDLTLIST
bzero(&bdl, sizeof(bdl)); bzero(&bdl, sizeof(bdl));
#endif #endif
@ -719,12 +741,23 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms,
int int
pcap_platform_finddevs(pcap_if_t **alldevsp, char *errbuf) pcap_platform_finddevs(pcap_if_t **alldevsp, char *errbuf)
{ {
#ifdef HAVE_DAG_API
if (dag_platform_finddevs(alldevsp, errbuf) < 0)
return (-1);
#endif /* HAVE_DAG_API */
return (0); return (0);
} }
int int
pcap_setfilter(pcap_t *p, struct bpf_program *fp) pcap_setfilter(pcap_t *p, struct bpf_program *fp)
{ {
#ifdef HAVE_DAG_API
if (p->md.is_dag) {
return dag_setfilter(p, fp);
}
#endif /* HAVE_DAG_API */
/* /*
* It looks that BPF code generated by gen_protochain() is not * It looks that BPF code generated by gen_protochain() is not
* compatible with some of kernel BPF code (for example BSD/OS 3.1). * compatible with some of kernel BPF code (for example BSD/OS 3.1).
@ -747,6 +780,12 @@ pcap_setfilter(pcap_t *p, struct bpf_program *fp)
int int
pcap_set_datalink_platform(pcap_t *p, int dlt) pcap_set_datalink_platform(pcap_t *p, int dlt)
{ {
#ifdef HAVE_DAG_API
if (p->md.is_dag) {
return dag_set_datalink_platform(p, dlt);
}
#endif /* HAVE_DAG_API */
#ifdef BIOCSDLT #ifdef BIOCSDLT
if (ioctl(p->fd, BIOCSDLT, &dlt) == -1) { if (ioctl(p->fd, BIOCSDLT, &dlt) == -1) {
(void) snprintf(p->errbuf, sizeof(p->errbuf), (void) snprintf(p->errbuf, sizeof(p->errbuf),

530
pcap-dag.c Normal file
View File

@ -0,0 +1,530 @@
/*
* pcap-dag.c: Packet capture interface for Endace DAG card.
*
* The functionality of this code attempts to mimic that of pcap-linux as much
* as possible. This code is compiled in several different ways depending on
* whether DAG_ONLY and HAVE_DAG_API are defined. If HAVE_DAG_API is not
* defined it should not get compiled in, otherwise if DAG_ONLY is defined then
* the 'dag_' function calls are renamed to 'pcap_' equivalents. If DAG_ONLY
* is not defined then nothing is altered - the dag_ functions will be
* called as required from their pcap-linux/bpf equivalents.
*
* Author: Richard Littin, Sean Irvine ({richard,sean}@reeltwo.com)
*
* Modifications:
* 2003 May - Jesper Peterson <support@endace.com>
* Code shuffled around to suit fad-xxx.c structure
* Added atexit() handler to stop DAG if application is too lazy
*/
#ifndef lint
static const char rcsid[] =
"@(#) $Header: /tcpdump/master/libpcap/pcap-dag.c,v 1.1 2003-07-23 05:29:21 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <sys/param.h> /* optionally get BSD define */
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "pcap-int.h"
#include <sys/mman.h>
#include <sys/socket.h>
struct mbuf; /* Squelch compiler warnings on some platforms for */
struct rtentry; /* declarations in <net/if.h> */
#include <net/if.h>
#include <dagnew.h>
#include <dagapi.h>
#define MAX_DAG_SNAPLEN 2040
typedef struct pcap_dag_node {
struct pcap_dag_node *next;
pcap_t *p;
} pcap_dag_node_t;
static pcap_dag_node_t *pcap_dags = NULL;
static int atexit_handler_installed = 0;
#ifdef DAG_ONLY
/* This code is reguired when compiling for a DAG device only. */
#include "pcap-dag.h"
/* Replace dag function names with pcap equivalent. */
#define dag_stats pcap_stats
#define dag_read pcap_read
#define dag_open_live pcap_open_live
#define dag_platform_finddevs pcap_platform_finddevs
#define dag_setfilter pcap_setfilter
#define dag_set_datalink_platform pcap_set_datalink_platform
#define dag_platform_close pcap_platform_close
#endif /* DAG_ONLY */
static void delete_pcap_dag(pcap_t *p) {
pcap_dag_node_t *curr = NULL, *prev = NULL;
for (prev = NULL, curr = pcap_dags;
curr != NULL && curr->p != p;
prev = curr, curr = curr->next) {
/* empty */
}
if (curr != NULL && curr->p == p) {
if (prev != NULL) {
prev->next = curr->next;
} else {
pcap_dags = curr->next;
}
}
}
/*
* Performs a graceful shutdown of the DAG card and frees dynamic memory held
* in the pcap_t structure.
*/
void dag_platform_close(pcap_t *p) {
#ifdef linux
if (p != NULL && p->md.is_dag && p->md.device != NULL) {
if(dag_stop(p->fd) < 0)
fprintf(stderr,"dag_stop %s: %s\n", p->md.device, strerror(errno));
if(dag_close(p->fd) < 0)
fprintf(stderr,"dag_close %s: %s\n", p->md.device, strerror(errno));
free(p->md.device);
}
#else
if (p != NULL && p->md.is_dag) {
if(dag_stop(p->fd) < 0)
fprintf(stderr,"dag_stop: %s\n", strerror(errno));
if(dag_close(p->fd) < 0)
fprintf(stderr,"dag_close: %s\n", strerror(errno));
}
#endif
delete_pcap_dag(p);
}
static void atexit_handler(void) {
while (pcap_dags != NULL) {
dag_platform_close(pcap_dags->p);
}
}
static int new_pcap_dag(pcap_t *p) {
pcap_dag_node_t *node = NULL;
if ((node = malloc(sizeof(pcap_dag_node_t))) == NULL) {
return -1;
}
if (!atexit_handler_installed) {
atexit(atexit_handler);
atexit_handler_installed = 1;
}
node->next = pcap_dags;
node->p = p;
return 0;
}
/*
* Get pointer to the ERF header for the next packet in the input
* stream. This function blocks until a packet becomes available.
*/
static dag_record_t *get_next_dag_header(pcap_t *p) {
register dag_record_t *record;
int rlen;
if (p->md.dag_mem_top - p->md.dag_mem_bottom < dag_record_size) {
p->md.dag_mem_top = dag_offset(p->fd, &(p->md.dag_mem_bottom), 0);
}
record = (dag_record_t *)(p->md.dag_mem_base + p->md.dag_mem_bottom);
rlen = ntohs(record->rlen);
while (p->md.dag_mem_top - p->md.dag_mem_bottom < rlen) {
p->md.dag_mem_top = dag_offset(p->fd, &(p->md.dag_mem_bottom), 0);
record = (dag_record_t *)(p->md.dag_mem_base + p->md.dag_mem_bottom);
rlen = ntohs(record->rlen);
}
p->md.dag_mem_bottom += rlen;
return record;
}
/* Size of payload in ATM packets */
#define ATM_CAPTURE_SIZE 48
/* Size of payload of Ethernet packet */
#define ETHERNET_LENGTH(h) min(ntohs((h)->wlen) - 4, ntohs((h)->rlen) - dag_record_size - 2 - (ntohs((h)->wlen) & 0x3))
/* Size of HDLC packet */
#define HDLC_LENGTH(h) min(ntohs((h)->wlen) - 4, ntohs((h)->rlen) - dag_record_size)
#ifndef min
#define min(a, b) ((a) > (b) ? (b) : (a))
#endif
/*
* Swap byte ordering of unsigned long long on a big endian
* machine.
*/
static unsigned long long swapll(unsigned long long ull) {
#if (BYTE_ORDER == BIG_ENDIAN)
return ((ull & 0xff00000000000000LL) >> 56) |
((ull & 0x00ff000000000000LL) >> 40) |
((ull & 0x0000ff0000000000LL) >> 24) |
((ull & 0x000000ff00000000LL) >> 8) |
((ull & 0x00000000ff000000LL) << 8) |
((ull & 0x0000000000ff0000LL) << 24) |
((ull & 0x000000000000ff00LL) << 40) |
((ull & 0x00000000000000ffLL) << 56) ;
#else
return ull;
#endif
}
/*
* Read at most max_packets from the capture stream and call the callback
* for each of them. Returns the number of packets handled or -1 if an
* error occured. A blocking
*/
int dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user) {
u_char *dp = NULL;
int packet_len = 0, caplen = 0;
struct pcap_pkthdr pcap_header;
dag_record_t *header;
register unsigned long long ts;
/* Receive a single packet from the kernel */
header = get_next_dag_header(p);
dp = ((u_char *)header) + dag_record_size;
switch(header->type) {
case TYPE_ATM:
packet_len = ATM_CAPTURE_SIZE;
caplen = ATM_CAPTURE_SIZE;
break;
case TYPE_ETH:
packet_len = ntohs(header->wlen);
caplen = ETHERNET_LENGTH(header);
dp += 2;
break;
case TYPE_HDLC_POS:
packet_len = ntohs(header->wlen);
caplen = HDLC_LENGTH(header);
break;
}
if (caplen > p->snapshot)
caplen = p->snapshot;
/* Run the packet filter if not using kernel filter */
if (p->fcode.bf_insns) {
if (bpf_filter(p->fcode.bf_insns, dp, packet_len, caplen) == 0) {
/* rejected by filter */
return 0;
}
}
/* convert between timestamp formats */
ts = swapll(header->ts);
pcap_header.ts.tv_sec = ts >> 32;
ts = ((ts & 0xffffffffULL) * 1000 * 1000);
ts += (ts & 0x80000000ULL) << 1; /* rounding */
pcap_header.ts.tv_usec = ts >> 32;
if (pcap_header.ts.tv_usec >= 1000000) {
pcap_header.ts.tv_usec -= 1000000;
pcap_header.ts.tv_sec += 1;
}
/* Fill in our own header data */
pcap_header.caplen = caplen;
pcap_header.len = packet_len;
/*
* Count the packet.
*/
p->md.stat.ps_recv++;
/* Call the user supplied callback function */
callback(user, &pcap_header, dp);
return 1;
}
/*
* Get a handle for a live capture from the given DAG device. Passing a NULL
* device will result in a failure. The promisc flag is ignored because DAG
* cards are always promiscuous. The to_ms parameter is also ignored as it is
* not supported in hardware.
*
* See also pcap(3).
*/
pcap_t *dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebuf) {
char conf[30]; /* dag configure string */
pcap_t *handle;
if (device == NULL) {
snprintf(ebuf, PCAP_ERRBUF_SIZE, "device is NULL: %s", pcap_strerror(errno));
return NULL;
}
/* Allocate a handle for this session. */
handle = malloc(sizeof(*handle));
if (handle == NULL) {
snprintf(ebuf, PCAP_ERRBUF_SIZE, "malloc %s: %s", device, pcap_strerror(errno));
return NULL;
}
/* Initialize some components of the pcap structure. */
memset(handle, 0, sizeof(*handle));
if (strstr(device, "/dev") == NULL) {
char * newDev = (char *)malloc(strlen(device) + 6);
newDev[0] = '\0';
strcat(newDev, "/dev/");
strcat(newDev,device);
device = newDev;
}
/* setup device parameters */
if((handle->fd = dag_open((char *)device)) < 0) {
snprintf(ebuf, PCAP_ERRBUF_SIZE, "dag_open %s: %s", device, pcap_strerror(errno));
return NULL;
}
/* set the card snap length as specified by the specified snaplen parameter */
if (snaplen > MAX_DAG_SNAPLEN) {
snaplen = MAX_DAG_SNAPLEN;
}
snprintf(conf, 30, "varlen slen=%d", (snaplen % 4) ? (snaplen + 3) & ~3 : snaplen); /* snap len has to be a multiple of 4 */
fprintf(stderr, "Configuring DAG with '%s'.\n", conf);
if(dag_configure(handle->fd, conf) < 0) {
snprintf(ebuf, PCAP_ERRBUF_SIZE,"dag_configure %s: %s\n", device, pcap_strerror(errno));
return NULL;
}
if((handle->md.dag_mem_base = dag_mmap(handle->fd)) == MAP_FAILED) {
snprintf(ebuf, PCAP_ERRBUF_SIZE,"dag_mmap %s: %s\n", device, pcap_strerror(errno));
return NULL;
}
if(dag_start(handle->fd) < 0) {
snprintf(ebuf, PCAP_ERRBUF_SIZE, "dag_start %s: %s\n", device, pcap_strerror(errno));
return NULL;
}
/*
* Important! You have to ensure bottom is properly
* initialized to zero on startup, it won't give you
* a compiler warning if you make this mistake!
*/
handle->md.dag_mem_bottom = 0;
handle->md.dag_mem_top = 0;
handle->md.is_dag = 1;
handle->snapshot = snaplen;
/*handle->md.timeout = to_ms; */
#ifdef linux
if (device) {
handle->md.device = strdup(device);
}
if (handle->md.device == NULL) {
snprintf(ebuf, PCAP_ERRBUF_SIZE, "str_dup %s: %s\n", device, pcap_strerror(errno));
free(handle);
return NULL;
}
#endif
/* set link type */
/* Check the type through a dagapi call.
*/
switch(dag_linktype(handle->fd)) {
case TYPE_HDLC_POS:
handle->linktype = DLT_CHDLC;
fprintf(stderr, "Set DAG linktype to %d (DLT_CHDLC)\n", handle->linktype);
break;
case TYPE_ETH:
handle->linktype = DLT_EN10MB;
fprintf(stderr, "Set DAG linktype to %d (DLT_EN10MB)\n", handle->linktype);
break;
case TYPE_ATM:
handle->linktype = DLT_ATM_RFC1483;
fprintf(stderr, "Set DAG linktype to %d (DLT_ATM_RFC1483)\n", handle->linktype);
break;
case TYPE_LEGACY:
handle->linktype = DLT_NULL;
fprintf(stderr, "Set DAG linktype to %d (DLT_NULL)\n", handle->linktype);
break;
default:
snprintf(ebuf, PCAP_ERRBUF_SIZE, "dag_open_live %s: unknown linktype %d\n", device, dag_linktype(handle->fd));
return NULL;
}
handle->bufsize = 0;/*handle->snapshot;*/
if (new_pcap_dag(handle) < 0) {
snprintf(ebuf, PCAP_ERRBUF_SIZE, "new_pcap_dag %s: %s\n", device, pcap_strerror(errno));
return NULL;
}
return handle;
}
int dag_stats(pcap_t *p, struct pcap_stat *ps) {
/* This needs to be filled out correctly. Hopefully a dagapi call will
provide all necessary information.
*/
/*p->md.stat.ps_recv = 0;*/
/*p->md.stat.ps_drop = 0;*/
*ps = p->md.stat;
return 0;
}
/*
* Get from "/proc/dag" all interfaces listed there; if they're
* already in the list of interfaces we have, that won't add another
* instance, but if they're not, that'll add them.
*
* We don't bother getting any addresses for them.
*
* We also don't fail if we couldn't open "/proc/dag"; we just leave
* the list of interfaces as is.
*/
int
dag_platform_finddevs(pcap_if_t **devlistp, char *errbuf)
{
FILE *proc_dag_f;
char linebuf[512];
int linenum;
unsigned char *p;
char name[512]; /* XXX - pick a size */
char *q, *saveq;
struct ifreq ifrflags;
int ret = 0;
/* Quick exit if /proc/dag not readable */
proc_dag_f = fopen("/proc/dag", "r");
if (proc_dag_f == NULL)
{
int i, fd;
char dev[16] = "dagx";
for (i = '0'; ret == 0 && i <= '9'; i++) {
dev[3] = i;
if (pcap_add_if(devlistp, dev, 0, NULL, errbuf) == -1) {
/*
* Failure.
*/
ret = -1;
}
}
return (ret);
}
for (linenum = 1;
fgets(linebuf, sizeof linebuf, proc_dag_f) != NULL; linenum++) {
/*
* Skip the first two lines - they're headers.
*/
if (linenum <= 2)
continue;
p = &linebuf[0];
if (*p == '\0' || *p == '\n' || *p != 'D')
continue; /* not a Dag line */
/*
* Get the interface name.
*/
q = &name[0];
while (*p != '\0' && *p != ':') {
if (*p != ' ')
*q++ = tolower(*p++);
else
p++;
}
*q = '\0';
/*
* Add an entry for this interface, with no addresses.
*/
p[strlen(p) - 1] = '\0'; /* get rid of \n */
if (pcap_add_if(devlistp, name, 0, strdup(p + 2), errbuf) == -1) {
/*
* Failure.
*/
ret = -1;
break;
}
}
if (ret != -1) {
/*
* Well, we didn't fail for any other reason; did we
* fail due to an error reading the file?
*/
if (ferror(proc_dag_f)) {
(void)snprintf(errbuf, PCAP_ERRBUF_SIZE,
"Error reading /proc/dag: %s",
pcap_strerror(errno));
ret = -1;
}
}
(void)fclose(proc_dag_f);
return (ret);
}
/*
* Installs the gven bpf filter program in the given pcap structure. There is
* no attempt to store the filter in kernel memory as that is not supported
* with DAG cards.
*/
int dag_setfilter(pcap_t *p, struct bpf_program *fp) {
if (!p)
return -1;
if (!fp) {
strncpy(p->errbuf, "setfilter: No filter specified",
sizeof(p->errbuf));
return -1;
}
/* Make our private copy of the filter */
if (install_bpf_program(p, fp) < 0) {
snprintf(p->errbuf, sizeof(p->errbuf),
"malloc: %s", pcap_strerror(errno));
return -1;
}
p->md.use_bpf = 0;
return (0);
}
int
dag_set_datalink_platform(pcap_t *p, int dlt)
{
return (0);
}

18
pcap-dag.h Normal file
View File

@ -0,0 +1,18 @@
/*
* pcap-dag.c: Packet capture interface for Endace DAG card.
*
* The functionality of this code attempts to mimic that of pcap-linux as much
* as possible. This code is only needed when compiling in the DAG card code
* at the same time as another type of device.
*
* Author: Richard Littin, Sean Irvine ({richard,sean}@reeltwo.com)
*
* @(#) $Header: /tcpdump/master/libpcap/pcap-dag.h,v 1.1 2003-07-23 05:29:21 guy Exp $ (LBL)
*/
int dag_stats(pcap_t *p, struct pcap_stat *ps);
int dag_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
pcap_t *dag_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebuf);
int dag_setfilter(pcap_t *p, struct bpf_program *fp);
void dag_platform_close(pcap_t *p);

View File

@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#) $Header: /tcpdump/master/libpcap/pcap-int.h,v 1.46 2003-04-10 06:07:08 guy Exp $ (LBL) * @(#) $Header: /tcpdump/master/libpcap/pcap-int.h,v 1.47 2003-07-23 05:29:21 guy Exp $ (LBL)
*/ */
#ifndef pcap_int_h #ifndef pcap_int_h
@ -76,6 +76,13 @@ struct pcap_md {
char *device; /* device name */ char *device; /* device name */
struct pcap *next; /* list of open promiscuous sock_packet pcaps */ struct pcap *next; /* list of open promiscuous sock_packet pcaps */
#endif #endif
#ifdef HAVE_DAG_API
int is_dag; /* this is a dag card handle */
void *dag_mem_base; /* DAG card memory base address */
u_int dag_mem_bottom; /* DAG card current memory bottom pointer */
u_int dag_mem_top; /* DAG card current memory top pointer */
#endif
}; };
struct pcap { struct pcap {

View File

@ -24,9 +24,10 @@
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/ */
#ifndef lint #ifndef lint
static const char rcsid[] = static const char rcsid[] =
"@(#) $Header: /tcpdump/master/libpcap/pcap-linux.c,v 1.89 2003-04-09 07:19:49 guy Exp $ (LBL)"; "@(#) $Header: /tcpdump/master/libpcap/pcap-linux.c,v 1.90 2003-07-23 05:29:22 guy Exp $ (LBL)";
#endif #endif
/* /*
@ -79,6 +80,10 @@ static const char rcsid[] =
#include "pcap-int.h" #include "pcap-int.h"
#include "sll.h" #include "sll.h"
#ifdef HAVE_DAG_API
#include "pcap-dag.h"
#endif /* HAVE_DAG_API */
#include <errno.h> #include <errno.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
@ -228,6 +233,12 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms,
int live_open_ok = 0; int live_open_ok = 0;
struct utsname utsname; struct utsname utsname;
#ifdef HAVE_DAG_API
if (strstr(device, "dag")) {
return dag_open_live(device, snaplen, promisc, to_ms, ebuf);
}
#endif /* HAVE_DAG_API */
/* Allocate a handle for this session. */ /* Allocate a handle for this session. */
handle = malloc(sizeof(*handle)); handle = malloc(sizeof(*handle));
@ -403,6 +414,12 @@ pcap_open_live(const char *device, int snaplen, int promisc, int to_ms,
int int
pcap_read(pcap_t *handle, int max_packets, pcap_handler callback, u_char *user) pcap_read(pcap_t *handle, int max_packets, pcap_handler callback, u_char *user)
{ {
#ifdef HAVE_DAG_API
if (handle->md.is_dag) {
return dag_read(handle, max_packets, callback, user);
}
#endif /* HAVE_DAG_API */
/* /*
* Currently, on Linux only one packet is delivered per read, * Currently, on Linux only one packet is delivered per read,
* so we don't loop. * so we don't loop.
@ -655,7 +672,15 @@ pcap_stats(pcap_t *handle, struct pcap_stat *stats)
#ifdef HAVE_TPACKET_STATS #ifdef HAVE_TPACKET_STATS
struct tpacket_stats kstats; struct tpacket_stats kstats;
socklen_t len = sizeof (struct tpacket_stats); socklen_t len = sizeof (struct tpacket_stats);
#endif
#ifdef HAVE_DAG_API
if (handle->md.is_dag) {
return dag_stats(handle, stats);
}
#endif /* HAVE_DAG_API */
#ifdef HAVE_TPACKET_STATS
/* /*
* Try to get the packet counts from the kernel. * Try to get the packet counts from the kernel.
*/ */
@ -748,6 +773,11 @@ pcap_platform_finddevs(pcap_if_t **alldevsp, char *errbuf)
if (pcap_add_if(alldevsp, "any", 0, any_descr, errbuf) < 0) if (pcap_add_if(alldevsp, "any", 0, any_descr, errbuf) < 0)
return (-1); return (-1);
#ifdef HAVE_DAG_API
if (dag_platform_finddevs(alldevsp, errbuf) < 0)
return (-1);
#endif /* HAVE_DAG_API */
return (0); return (0);
} }
@ -763,6 +793,12 @@ pcap_setfilter(pcap_t *handle, struct bpf_program *filter)
int err = 0; int err = 0;
#endif #endif
#ifdef HAVE_DAG_API
if (handle->md.is_dag) {
return dag_setfilter(handle, filter);
}
#endif /* HAVE_DAG_API */
if (!handle) if (!handle)
return -1; return -1;
if (!filter) { if (!filter) {
@ -1428,6 +1464,13 @@ void pcap_close_linux( pcap_t *handle )
struct pcap *p, *prevp; struct pcap *p, *prevp;
struct ifreq ifr; struct ifreq ifr;
#ifdef HAVE_DAG_API
if (handle->md.is_dag) {
/* close actions will be done in dag_platform_close() */
return;
}
#endif /* HAVE_DAG_API */
if (handle->md.clear_promisc) { if (handle->md.clear_promisc) {
/* /*
* We put the interface into promiscuous mode; take * We put the interface into promiscuous mode; take
@ -1950,5 +1993,11 @@ reset_kernel_filter(pcap_t *handle)
int int
pcap_set_datalink_platform(pcap_t *p, int dlt) pcap_set_datalink_platform(pcap_t *p, int dlt)
{ {
#ifdef HAVE_DAG_API
if (p->md.is_dag) {
return dag_set_datalink_platform(p, dlt);
}
#endif /* HAVE_DAG_API */
return (0); return (0);
} }

5
pcap.c
View File

@ -33,7 +33,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] = static const char rcsid[] =
"@(#) $Header: /tcpdump/master/libpcap/pcap.c,v 1.55 2003-06-07 10:26:04 guy Exp $ (LBL)"; "@(#) $Header: /tcpdump/master/libpcap/pcap.c,v 1.56 2003-07-23 05:29:22 guy Exp $ (LBL)";
#endif #endif
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
@ -637,6 +637,9 @@ pcap_close(pcap_t *p)
if (p->fd >= 0) { if (p->fd >= 0) {
#ifdef linux #ifdef linux
pcap_close_linux(p); pcap_close_linux(p);
#endif
#ifdef HAVE_DAG_API
dag_platform_close(p);
#endif #endif
close(p->fd); close(p->fd);
} }