configure: fallback to libpcap on Windows

If npcap/wpcap is not found on Windows, try libpcap. This allows
Suricata to build without NPCap on Windows, however live capture won't
be available.
pull/6870/head
Jason Ish 4 years ago committed by Victor Julien
parent 154e4eb395
commit 31ba4fd152

@ -278,7 +278,6 @@
e_magic_file="" e_magic_file=""
e_magic_file_comment="#" e_magic_file_comment="#"
PCAP_LIB_NAME="pcap"
case "$host" in case "$host" in
*-*-*freebsd*) *-*-*freebsd*)
LUA_LIB_NAME="lua-5.1" LUA_LIB_NAME="lua-5.1"
@ -308,14 +307,14 @@
*-*-mingw32*|*-*-msys) *-*-mingw32*|*-*-msys)
CFLAGS="${CFLAGS} -DOS_WIN32" CFLAGS="${CFLAGS} -DOS_WIN32"
WINDOWS_PATH="yes" WINDOWS_PATH="yes"
PCAP_LIB_NAME="wpcap"
AC_DEFINE([HAVE_NON_POSIX_MKDIR], [1], [mkdir is not POSIX compliant: single arg]) AC_DEFINE([HAVE_NON_POSIX_MKDIR], [1], [mkdir is not POSIX compliant: single arg])
RUST_LDADD=" -lws2_32 -liphlpapi -lwbemuuid -lOle32 -lOleAut32 -lUuid -luserenv -lshell32 -ladvapi32 -lgcc_eh -lbcrypt" RUST_LDADD=" -lws2_32 -liphlpapi -lwbemuuid -lOle32 -lOleAut32 -lUuid -luserenv -lshell32 -ladvapi32 -lgcc_eh -lbcrypt"
TRY_WPCAP="yes"
;; ;;
*-*-cygwin) *-*-cygwin)
LUA_LIB_NAME="lua" LUA_LIB_NAME="lua"
WINDOWS_PATH="yes" WINDOWS_PATH="yes"
PCAP_LIB_NAME="wpcap" TRY_WPCAP="yes"
;; ;;
*-*-solaris*) *-*-solaris*)
AC_MSG_WARN([support for Solaris/Illumos/SunOS is experimental]) AC_MSG_WARN([support for Solaris/Illumos/SunOS is experimental])
@ -1176,38 +1175,36 @@
#define _DEFAULT_SOURCE 1 #define _DEFAULT_SOURCE 1
]]) ]])
LIBPCAP="" have_wpcap=""
PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:]) if test "$TRY_WPCAP" = "yes"; then
AC_CHECK_LIB(${PCAP_LIB_NAME}, pcap_open_live,, LIBPCAP="no") AC_CHECK_LIB(wpcap, pcap_activate, [], have_wpcap="no")
if test "$LIBPCAP" = "no"; then if test "$have_wpcap" = "no"; then
echo echo ""
echo " ERROR! libpcap library not found, go get it" echo " Warning: NPCap was not found. Live capture will not be available."
echo " from http://www.tcpdump.org or your distribution:" echo ""
echo else
echo " Ubuntu: apt-get install libpcap-dev" PCAP_LIB_NAME="wpcap"
echo " Fedora: dnf install libpcap-devel" have_wpcap="yes"
echo " CentOS/RHEL: yum install libpcap-devel" fi
echo
exit 1
fi fi
# pcap_activate and pcap_create only exists in libpcap >= 1.0 if test "$have_wpcap" != "yes"; then
LIBPCAPVTEST="" AC_CHECK_LIB(pcap, pcap_open_dead, [], [
#To prevent duping the lib link we reset LIBS after this check. Setting action-if-found to NULL doesn't seem to work echo
#see: http://blog.flameeyes.eu/2008/04/29/i-consider-ac_check_lib-harmful echo " ERROR! libpcap library not found, go get it"
TMPLIBS="${LIBS}" echo " from http://www.tcpdump.org or your distribution:"
AC_CHECK_LIB(${PCAP_LIB_NAME}, pcap_activate,, LPCAPVTEST="no") echo
if test "$LPCAPVTEST" = "no"; then echo " Ubuntu: apt-get install libpcap-dev"
echo echo " Fedora: dnf install libpcap-devel"
echo " ERROR! libpcap library too old, need at least 1+, " echo " CentOS/RHEL: yum install libpcap-devel"
echo " go get it from http://www.tcpdump.org or your distribution:" echo
echo exit 1
echo " Ubuntu: apt-get install libpcap-dev" ])
echo " Fedora: dnf install libpcap-devel" PCAP_LIB_NAME="pcap"
echo " CentOS/RHEL: yum install libpcap-devel"
echo
exit 1
fi fi
PKG_CHECK_MODULES([PCAP],libpcap,[CPPFLAGS="${CPPFLAGS} ${PCAP_CFLAGS}" LIBS="${LIBS} ${PCAP_LIBS}"],[:])
AC_PATH_PROG(HAVE_PCAP_CONFIG, pcap-config, "no") AC_PATH_PROG(HAVE_PCAP_CONFIG, pcap-config, "no")
if test "$HAVE_PCAP_CONFIG" = "no" -o "$cross_compiling" = "yes"; then if test "$HAVE_PCAP_CONFIG" = "no" -o "$cross_compiling" = "yes"; then
AC_MSG_RESULT(no pcap-config is use) AC_MSG_RESULT(no pcap-config is use)
@ -1215,7 +1212,6 @@
PCAP_CFLAGS="$(pcap-config --defines) $(pcap-config --cflags)" PCAP_CFLAGS="$(pcap-config --defines) $(pcap-config --cflags)"
AC_SUBST(PCAP_CFLAGS) AC_SUBST(PCAP_CFLAGS)
fi fi
LIBS="${TMPLIBS}"
#Appears as if pcap_set_buffer_size is linux only? #Appears as if pcap_set_buffer_size is linux only?
LIBPCAPSBUFF="" LIBPCAPSBUFF=""

Loading…
Cancel
Save