summaryrefslogtreecommitdiffstats
path: root/contrib/libpcap/configure.in
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2012-05-14 05:12:56 +0000
committerdelphij <delphij@FreeBSD.org>2012-05-14 05:12:56 +0000
commita3451bb93bbf335a8f6b5feb9b80b256b0e304fe (patch)
tree158e6045ed438c41ac8de6cb27ac3c73cdc6643a /contrib/libpcap/configure.in
parenta17ebbd192e814c313397aefc289ab32a0ece772 (diff)
parente11c3f548e0bd184480800016b8567824dc35516 (diff)
downloadFreeBSD-src-a3451bb93bbf335a8f6b5feb9b80b256b0e304fe.zip
FreeBSD-src-a3451bb93bbf335a8f6b5feb9b80b256b0e304fe.tar.gz
Merge from vendor branch: update libpcap to 1.2.1.
MFC after: 2 weeks
Diffstat (limited to 'contrib/libpcap/configure.in')
-rwxr-xr-xcontrib/libpcap/configure.in399
1 files changed, 204 insertions, 195 deletions
diff --git a/contrib/libpcap/configure.in b/contrib/libpcap/configure.in
index 794da27..6a146ca 100755
--- a/contrib/libpcap/configure.in
+++ b/contrib/libpcap/configure.in
@@ -103,6 +103,8 @@ dnl and set "HAVE_SYS_IOCCOM_H" if we have it, otherwise
dnl "AC_LBL_FIXINCLUDES" wouldn't work on some platforms such as Solaris.
dnl
AC_CHECK_HEADERS(sys/ioccom.h sys/sockio.h limits.h paths.h)
+AC_CHECK_HEADERS(linux/types.h)
+AC_CHECK_HEADERS(linux/if_packet.h netpacket/packet.h netpacket/if_packet.h)
AC_CHECK_HEADERS(net/pfvar.h, , , [#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>])
@@ -152,7 +154,7 @@ needsnprintf=no
AC_CHECK_FUNCS(vsnprintf snprintf,,
[needsnprintf=yes])
if test $needsnprintf = yes; then
- AC_LIBOBJ(snprintf)
+ AC_LIBOBJ([snprintf])
fi
#
@@ -410,23 +412,6 @@ dlpi)
;;
linux)
- AC_MSG_CHECKING(Linux kernel version)
- if test "$cross_compiling" = yes; then
- AC_CACHE_VAL(ac_cv_linux_vers,
- ac_cv_linux_vers=unknown)
- else
- AC_CACHE_VAL(ac_cv_linux_vers,
- ac_cv_linux_vers=`uname -r 2>&1 | \
- sed -n -e '$s/.* //' -e '$s/\..*//p'`)
- fi
- AC_MSG_RESULT($ac_cv_linux_vers)
- if test $ac_cv_linux_vers = unknown ; then
- AC_MSG_ERROR(cannot determine linux version when cross-compiling)
- fi
- if test $ac_cv_linux_vers -lt 2 ; then
- AC_MSG_ERROR(version 2 or higher required; see the INSTALL doc for more info)
- fi
-
#
# Do we have the wireless extensions?
#
@@ -445,15 +430,46 @@ linux)
with_libnl=$withval,,)
if test x$with_libnl != xno ; then
- AC_CHECK_LIB(nl, nl_handle_alloc,
- LIBS="-lnl $LIBS"
- AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]),
- if test x$with_libnl = xyes ; then
- AC_MSG_ERROR([libnl support requested but libnl not found])
- fi
- )
+ #
+ # Try libnl 2.x first.
+ #
+ AC_CHECK_LIB(nl, nl_socket_alloc,
+ [
+ #
+ # Yes, we have libnl 2.x.
+ #
+ LIBS="-lnl-genl -lnl $LIBS"
+ AC_DEFINE(HAVE_LIBNL,1,[if libnl exists])
+ AC_DEFINE(HAVE_LIBNL_2_x,1,[if libnl exists and is version 2.x])
+ ],
+ [
+ #
+ # No, we don't; do we have libnl 1.x?
+ #
+ AC_CHECK_LIB(nl, nl_handle_alloc,
+ [
+ #
+ # Yes.
+ #
+ LIBS="-lnl $LIBS"
+ AC_DEFINE(HAVE_LIBNL,1,[if libnl exists])
+ ],
+ [
+ #
+ # No, we don't have libnl at all.
+ #
+ if test x$with_libnl = xyes ; then
+ AC_MSG_ERROR([libnl support requested but libnl not found])
+ fi
+ ])
+ ])
fi
+ AC_CHECK_HEADERS(linux/ethtool.h,,,
+ [
+AC_INCLUDES_DEFAULT
+#include <linux/types.h>
+ ])
AC_LBL_TPACKET_STATS
AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI
;;
@@ -727,7 +743,7 @@ if test "$want_dag" != no; then
if test -z "$dag_tools_dir"; then
dag_tools_dir="$dag_root/tools"
- fi
+ fi
if test -r $dag_include_dir/dagapi.h; then
ac_cv_lbl_dag_api=yes
@@ -736,130 +752,8 @@ if test "$want_dag" != no; then
fi
if test $ac_cv_lbl_dag_api = yes; then
-
- AC_MSG_CHECKING([dagapi.o])
- dagapi_obj=no
- if test -r $dag_tools_dir/dagapi.o; then
- # 2.4.x.
- dagapi_obj=$dag_tools_dir/dagapi.o
- elif test -r $dag_lib_dir/dagapi.o; then
- # 2.5.x.
- dagapi_obj=$dag_lib_dir/dagapi.o
- elif test -r $dag_lib_dir/libdag.a; then
- # 2.5.x.
- ar x $dag_lib_dir/libdag.a dagapi.o 2>/dev/null
- if test -r ./dagapi.o; then
- dagapi_obj=./dagapi.o
- else
- ar x $dag_lib_dir/libdag.a libdag_la-dagapi.o 2>/dev/null
- if test -r ./libdag_la-dagapi.o; then
- dagapi_obj=./libdag_la-dagapi.o
- fi
- fi
- fi
-
- if test $dagapi_obj = no; then
- AC_MSG_RESULT([no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)])
- ac_cv_lbl_dag_api=no
- else
- AC_MSG_RESULT([yes ($dagapi_obj)])
- fi
-fi
-
-if test $ac_cv_lbl_dag_api = yes; then
-
- AC_MSG_CHECKING([dagopts.o])
- dagopts_obj=no
- if test -r $dag_tools_dir/dagopts.o; then
- # 2.4.x.
- dagopts_obj=$dag_tools_dir/dagopts.o
- elif test -r $dag_lib_dir/dagopts.o; then
- # 2.5.x.
- dagopts_obj=$dag_lib_dir/dagopts.o
- elif test -r $dag_lib_dir/libdag.a; then
- # 2.5.x.
- ar x $dag_lib_dir/libdag.a dagopts.o 2>/dev/null
- if test -r ./dagopts.o; then
- dagopts_obj=./dagopts.o
- else
- ar x $dag_lib_dir/libdag.a libdag_la-dagopts.o 2>/dev/null
- if test -r ./libdag_la-dagopts.o; then
- dagopts_obj=./libdag_la-dagopts.o
- fi
- fi
- fi
-
- if test $dagopts_obj = no; then
- AC_MSG_RESULT([no (checked $dag_lib_dir $dag_tools_dir $dag_lib_dir/libdag.a)])
- ac_cv_lbl_dag_api=no
- else
- AC_MSG_RESULT([yes ($dagopts_obj)])
- fi
-fi
-
-if test $ac_cv_lbl_dag_api = yes; then
- # Under 2.5.x only we need to add dagreg.o.
- if test -r $dag_include_dir/dagreg.h; then
- AC_MSG_CHECKING([dagreg.o])
- dagreg_obj=no
- if test -r $dag_lib_dir/dagreg.o; then
- # Object file is ready and waiting.
- dagreg_obj=$dag_lib_dir/dagreg.o
- elif test -r $dag_lib_dir/libdag.a; then
- # Extract from libdag.a.
- ar x $dag_lib_dir/libdag.a dagreg.o 2>/dev/null
- if test -r ./dagreg.o; then
- dagreg_obj=./dagreg.o
- else
- ar x $dag_lib_dir/libdag.a libdag_la-dagreg.o 2>/dev/null
- if test -r ./libdag_la-dagreg.o; then
- dagreg_obj=./libdag_la-dagreg.o
- fi
- fi
- fi
-
- if test $dagreg_obj = no; then
- AC_MSG_RESULT([no (checked $dag_lib_dir $dag_lib_dir/libdag.a)])
- ac_cv_lbl_dag_api=no
- else
- AC_MSG_RESULT([yes ($dagreg_obj)])
- fi
- fi
-fi
-
-if test $ac_cv_lbl_dag_api = yes; then
- # Under 2.5.x only we need to add dagutil.o.
- if test -r $dag_include_dir/dagutil.h; then
- AC_MSG_CHECKING([dagutil.o])
- dagutil_obj=no
- if test -r $dag_lib_dir/dagutil.o; then
- # Object file is ready and waiting.
- dagutil_obj=$dag_lib_dir/dagutil.o
- elif test -r $dag_lib_dir/libdag.a; then
- # Extract from libdag.a.
- ar x $dag_lib_dir/libdag.a dagutil.o 2>/dev/null
- if test -r ./dagutil.o; then
- dagutil_obj=./dagutil.o
- else
- ar x $dag_lib_dir/libdag.a libdag_la-dagutil.o 2>/dev/null
- if test -r ./libdag_la-dagutil.o; then
- dagutil_obj=./libdag_la-dagutil.o
- fi
- fi
- fi
-
- if test $dagutil_obj = no; then
- AC_MSG_RESULT([no (checked $dag_lib_dir $dag_lib_dir/libdag.a)])
- ac_cv_lbl_dag_api=no
- else
- AC_MSG_RESULT([yes ($dagutil_obj)])
- fi
- fi
-fi
-
-if test $ac_cv_lbl_dag_api = yes; then
V_INCLS="$V_INCLS -I$dag_include_dir"
- ADDLARCHIVEOBJS="$ADDLARCHIVEOBJS $dagapi_obj $dagopts_obj $dagreg_obj $dagutil_obj"
+
if test $V_PCAP != dag ; then
SSRC="pcap-dag.c"
fi
@@ -874,11 +768,19 @@ if test $ac_cv_lbl_dag_api = yes; then
AC_DEFINE(HAVE_DAG_GET_ERF_TYPES, 1, [define if you have dag_get_erf_types()])])
AC_CHECK_LIB([dag],[dag_get_stream_erf_types], [
AC_DEFINE(HAVE_DAG_GET_STREAM_ERF_TYPES, 1, [define if you have dag_get_stream_erf_types()])])
+
LDFLAGS=$saved_ldflags
if test "$dag_streams" = 1; then
AC_DEFINE(HAVE_DAG_STREAMS_API, 1, [define if you have streams capable DAG API])
LIBS="$LIBS -ldag"
+ LDFLAGS="$LDFLAGS -L$dag_lib_dir"
+
+ AC_CHECK_LIB([vdag],[vdag_set_device_info], [ac_dag_have_vdag="1"], [ac_dag_have_vdag="0"])
+ if test "$ac_dag_have_vdag" = 1; then
+ AC_DEFINE(HAVE_DAG_VDAG, 1, [define if you have vdag_set_device_info()])
+ LIBS="$LIBS -lpthread"
+ fi
fi
AC_DEFINE(HAVE_DAG_API, 1, [define if you have the DAG API])
@@ -1169,6 +1071,46 @@ aix*)
darwin*)
DYEXT="dylib"
V_CCOPT="$V_CCOPT -fno-common"
+ AC_ARG_ENABLE(universal,
+ AC_HELP_STRING([--disable-universal],[don't build universal on OS X]))
+ if test "$enable_universal" != "no"; then
+ case "$host_os" in
+
+ darwin9.*)
+ #
+ # Leopard. Build for 32-bit PowerPC, 64-bit
+ # PowerPC, x86, and x86-64, with 32-bit PowerPC
+ # first. (That's what Apple does.)
+ #
+ V_CCOPT="$V_CCOPT -arch ppc -arch ppc64 -arch i386 -arch x86_64"
+ LDFLAGS="$LDFLAGS -arch ppc -arch ppc64 -arch i386 -arch x86_64"
+ ;;
+
+ darwin10.*)
+ #
+ # Snow Leopard. Build for x86-64, x86, and
+ # 32-bit PowerPC, with x86-64 first. (That's
+ # what Apple does, even though Snow Leopard
+ # doesn't run on PPC, so PPC libpcap runs under
+ # Rosetta, and Rosetta doesn't support BPF
+ # ioctls, so PPC programs can't do live
+ # captures.)
+ #
+ V_CCOPT="$V_CCOPT -arch x86_64 -arch i386 -arch ppc"
+ LDFLAGS="$LDFLAGS -arch x86_64 -arch i386 -arch ppc"
+ ;;
+
+ darwin11.*)
+ #
+ # Lion. Build for x86-64 and x86, with x86-64
+ # first. (That's probably what Apple does,
+ # given that Rosetta is gone.)
+ #
+ V_CCOPT="$V_CCOPT -arch x86_64 -arch i386"
+ LDFLAGS="$LDFLAGS -arch x86_64 -arch i386"
+ ;;
+ esac
+ fi
;;
hpux9*)
@@ -1234,7 +1176,7 @@ irix*)
MAN_MISC_INFO=5
;;
-linux*|freebsd*|netbsd*|openbsd*|dragonfly*)
+linux*|freebsd*|netbsd*|openbsd*|dragonfly*|kfreebsd*|gnu*)
DYEXT="so"
#
@@ -1283,6 +1225,7 @@ solaris*)
esac
AC_PROG_RANLIB
+AC_CHECK_TOOL([AR], [ar])
AC_LBL_DEVEL(V_CCOPT)
@@ -1325,48 +1268,103 @@ dnl check for USB sniffing support
AC_MSG_CHECKING(for USB sniffing support)
case "$host_os" in
linux*)
- AC_DEFINE(PCAP_SUPPORT_USB, 1, [target host supports USB sniffing])
- USB_SRC=pcap-usb-linux.c
- AC_MSG_RESULT(yes)
- ac_usb_dev_name=`udevinfo -q name -p /sys/class/usb_device/usbmon 2>/dev/null`
- if test $? -ne 0 ; then
- ac_usb_dev_name="usbmon"
- fi
- AC_DEFINE_UNQUOTED(LINUX_USB_MON_DEV, "/dev/$ac_usb_dev_name", [path for device for USB sniffing])
- AC_MSG_NOTICE(Device for USB sniffing is /dev/$ac_usb_dev_name)
- AC_CHECK_HEADERS(linux/usbdevice_fs.h)
- if test "$ac_cv_header_linux_usbdevice_fs_h" = yes; then
- #
- # OK, does it define bRequestType? Older versions of the kernel
- # define fields with names like "requesttype, "request", and
- # "value", rather than "bRequestType", "bRequest", and
- # "wValue".
- #
- AC_MSG_CHECKING(if usbdevfs_ctrltransfer struct has bRequestType member)
- AC_CACHE_VAL(ac_cv_usbdevfs_ctrltransfer_has_bRequestType,
- AC_TRY_COMPILE([
+ AC_DEFINE(PCAP_SUPPORT_USB, 1, [target host supports USB sniffing])
+ USB_SRC=pcap-usb-linux.c
+ AC_MSG_RESULT(yes)
+ ac_usb_dev_name=`udevinfo -q name -p /sys/class/usb_device/usbmon 2>/dev/null`
+ if test $? -ne 0 ; then
+ ac_usb_dev_name="usbmon"
+ fi
+ AC_DEFINE_UNQUOTED(LINUX_USB_MON_DEV, "/dev/$ac_usb_dev_name", [path for device for USB sniffing])
+ AC_MSG_NOTICE(Device for USB sniffing is /dev/$ac_usb_dev_name)
+ #
+ # Do we have a version of <linux/compiler.h> available?
+ # If so, we might need it for <linux/usbdevice_fs.h>.
+ #
+ AC_CHECK_HEADERS(linux/compiler.h)
+ if test "$ac_cv_header_linux_compiler_h" = yes; then
+ #
+ # Yes - include it when testing for <linux/usbdevice_fs.h>.
+ #
+ AC_CHECK_HEADERS(linux/usbdevice_fs.h,,,[#include <linux/compiler.h>])
+ else
+ AC_CHECK_HEADERS(linux/usbdevice_fs.h)
+ fi
+ if test "$ac_cv_header_linux_usbdevice_fs_h" = yes; then
+ #
+ # OK, does it define bRequestType? Older versions of the kernel
+ # define fields with names like "requesttype, "request", and
+ # "value", rather than "bRequestType", "bRequest", and
+ # "wValue".
+ #
+ AC_MSG_CHECKING(if usbdevfs_ctrltransfer struct has bRequestType member)
+ AC_CACHE_VAL(ac_cv_usbdevfs_ctrltransfer_has_bRequestType,
+ AC_TRY_COMPILE([
AC_INCLUDES_DEFAULT
#ifdef HAVE_SYS_BITYPES_H
#include <sys/bitypes.h>
#endif
-# include <linux/usbdevice_fs.h>],
- [u_int i = sizeof(((struct usbdevfs_ctrltransfer *)0)->bRequestType)],
- ac_cv_usbdevfs_ctrltransfer_has_bRequestType=yes,
- ac_cv_usbdevfs_ctrltransfer_has_bRequestType=no))
- AC_MSG_RESULT($ac_cv_usbdevfs_ctrltransfer_has_bRequestType)
- if test $ac_cv_usbdevfs_ctrltransfer_has_bRequestType = yes ; then
- AC_DEFINE(HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE,1,
- [if struct usbdevfs_ctrltransfer has bRequestType])
- fi
- fi
- ;;
+#ifdef HAVE_LINUX_COMPILER_H
+#include <linux/compiler.h>
+#endif
+#include <linux/usbdevice_fs.h>],
+ [u_int i = sizeof(((struct usbdevfs_ctrltransfer *)0)->bRequestType)],
+ ac_cv_usbdevfs_ctrltransfer_has_bRequestType=yes,
+ ac_cv_usbdevfs_ctrltransfer_has_bRequestType=no))
+ AC_MSG_RESULT($ac_cv_usbdevfs_ctrltransfer_has_bRequestType)
+ if test $ac_cv_usbdevfs_ctrltransfer_has_bRequestType = yes ; then
+ AC_DEFINE(HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE,1,
+ [if struct usbdevfs_ctrltransfer has bRequestType])
+ fi
+ fi
+ ;;
*)
- AC_MSG_RESULT(no)
- ;;
+ AC_MSG_RESULT(no)
+ ;;
esac
AC_SUBST(PCAP_SUPPORT_USB)
AC_SUBST(USB_SRC)
+dnl check for netfilter sniffing support
+AC_MSG_CHECKING(whether the platform could support netfilter sniffing)
+case "$host_os" in
+linux*)
+ AC_MSG_RESULT(yes)
+ #
+ # Life's too short to deal with trying to get this to compile
+ # if you don't get the right types defined with
+ # __KERNEL_STRICT_NAMES getting defined by some other include.
+ #
+ # Check whether the includes Just Work. If not, don't turn on
+ # netfilter support.
+ #
+ AC_MSG_CHECKING(whether we can compile the netfilter support)
+ AC_CACHE_VAL(ac_cv_netfilter_can_compile,
+ AC_TRY_COMPILE([
+AC_INCLUDES_DEFAULT
+#include <sys/socket.h>
+#include <linux/types.h>
+
+#include <linux/netlink.h>
+#include <linux/netfilter/nfnetlink.h>
+#include <linux/netfilter/nfnetlink_log.h>],
+ [],
+ ac_cv_netfilter_can_compile=yes,
+ ac_cv_netfilter_can_compile=no))
+ AC_MSG_RESULT($ac_cv_netfilter_can_compile)
+ if test $ac_cv_netfilter_can_compile = yes ; then
+ AC_DEFINE(PCAP_SUPPORT_NETFILTER, 1,
+ [target host supports netfilter sniffing])
+ NETFILTER_SRC=pcap-netfilter-linux.c
+ fi
+ ;;
+*)
+ AC_MSG_RESULT(no)
+ ;;
+esac
+AC_SUBST(PCAP_SUPPORT_NETFILTER)
+AC_SUBST(NETFILTER_SRC)
+
AC_ARG_ENABLE([bluetooth],
[AC_HELP_STRING([--enable-bluetooth],[enable Bluetooth support @<:@default=yes, if support available@:>@])],
,enable_bluetooth=yes)
@@ -1375,18 +1373,18 @@ if test "x$enable_bluetooth" != "xno" ; then
dnl check for Bluetooth sniffing support
case "$host_os" in
linux*)
- AC_CHECK_HEADER(bluetooth/bluetooth.h,
- [
+ AC_CHECK_HEADER(bluetooth/bluetooth.h,
+ [
AC_DEFINE(PCAP_SUPPORT_BT, 1, [target host supports Bluetooth sniffing])
- BT_SRC=pcap-bt-linux.c
- AC_MSG_NOTICE(Bluetooth sniffing is supported)
+ BT_SRC=pcap-bt-linux.c
+ AC_MSG_NOTICE(Bluetooth sniffing is supported)
],
AC_MSG_NOTICE(Bluetooth sniffing is not supported; install bluez-lib devel to enable it)
- )
- ;;
+ )
+ ;;
*)
- AC_MSG_NOTICE(no Bluetooth sniffing support implemented for $host_os)
- ;;
+ AC_MSG_NOTICE(no Bluetooth sniffing support implemented for $host_os)
+ ;;
esac
AC_SUBST(PCAP_SUPPORT_BT)
AC_SUBST(BT_SRC)
@@ -1416,15 +1414,26 @@ if test "x$enable_can" != "xno" ; then
AC_SUBST(CAN_SRC)
fi
+dnl check for hardware timestamp support
+case "$host_os" in
+linux*)
+ AC_CHECK_HEADERS([linux/net_tstamp.h])
+ ;;
+*)
+ AC_MSG_NOTICE(no hardware timestamp support implemented for $host_os)
+ ;;
+esac
+
AC_PROG_INSTALL
AC_CONFIG_HEADER(config.h)
AC_OUTPUT(Makefile pcap-filter.manmisc pcap-linktype.manmisc
- pcap-savefile.manfile pcap.3pcap pcap_compile.3pcap
- pcap_datalink.3pcap pcap_dump_open.3pcap
- pcap_list_datalinks.3pcap pcap_open_dead.3pcap
- pcap_open_offline.3pcap)
+ pcap-tstamp.manmisc pcap-savefile.manfile pcap.3pcap
+ pcap_compile.3pcap pcap_datalink.3pcap pcap_dump_open.3pcap
+ pcap_list_datalinks.3pcap pcap_list_tstamp_types.3pcap
+ pcap_open_dead.3pcap pcap_open_offline.3pcap
+ pcap_set_tstamp_type.3pcap)
if test -f .devel ; then
make depend
OpenPOWER on IntegriCloud