| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881 | 
dnl $Id$AC_PREREQ([2.69])dnl Set version info here!AC_INIT([tcpreplay],[4.2.5],    [https://github.com/appneta/tcpreplay/issues],    [tcpreplay],    [http://tcpreplay.sourceforge.net/])AC_CONFIG_SRCDIR([src/tcpreplay.c])AC_CONFIG_HEADERS([src/config.h])AC_CONFIG_AUX_DIR(config)AM_MAINTAINER_MODEAM_WITH_DMALLOCdnl People building from GitHub need the same version of Autogen as I'm usingdnl or specify --disable-local-liboptsMAINTAINER_AUTOGEN_VERSION=5.18.4AC_CONFIG_MACRO_DIR([m4])TCPREPLAY_VERSION=$PACKAGE_VERSIONdnl Release is only used for the RPM spec fileTCPREPLAY_RELEASE=1AC_SUBST(TCPREPLAY_VERSION)AC_SUBST(TCPREPLAY_RELEASE)USER_CFLAGS=$CFLAGSCFLAGS="-Wall -std=gnu99 ${CFLAGS}"dnl Determine OSAC_CANONICAL_BUILDAC_CANONICAL_HOSTAC_CANONICAL_TARGETAC_SUBST(host)AC_SUBST(build)AC_SUBST(target)CROSS_ARCH=CROSS_LD=build_arch=$(echo $MACHTYPE | cut -d'-' -f1)if test "$cross_compiling" = "yes" ; then    CROSS_ARCH="ARCH=$host_cpu"    CROSS_LD="LD=$LD"fiAC_SUBST(CROSS_ARCH)AC_SUBST(CROSS_LD)dnl ============================================dnl Some libraries are in /usr/lib/i386-linux-gnudnl but host is i686-linux-gnudnl ============================================MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH) 2> /dev/null || ${host_cpu}-${host_os}dnl ============================================dnl MacOSX build and runtime environment optionsdnl ============================================AC_ARG_WITH(macosx-sdk,    AS_HELP_STRING([--with-macosx-sdk],        [Use a specific SDK for building.])    [                          Usage:     --with-macosx-sdk=<version>                          e. g.: --with-macosx-sdk=10.8    ],,)dnl ===========================dnl Check OS X SDK and compilerdnl ===========================case "$host_os" in    darwin*) # Mac OS X or iOS    # If no --with-macosx-sdk option is given, look for one    # The intent is that for "most" Mac-based developers, a suitable    # SDK will be found automatically without any configure options.    # For developers with a current Xcode, the lowest-numbered SDK    # higher than or equal to the minimum required should be found.    # To find a list of available version run `xcodebuild -showsdks`    AC_MSG_CHECKING([what macOS compiler to use])    for _macosx_sdk in $with_macosx_sdk 10.8 10.9 10.10 10.11 10.12 10.13 10.14 10.15 10.16.10.17 10.18 10.19 10.20 11.0 11.1 11.2 11.3 11.4 11.5; do        MACOSX_SDK_PATH=$(xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null)        if test -d "$MACOSX_SDK_PATH"; then            with_macosx_sdk="${_macosx_sdk}"            break        else            MACOSX_SDK_PATH="$(xcode-select -print-path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"            if test -d "$MACOSX_SDK_PATH"; then                with_macosx_sdk="${_macosx_sdk}"                break            fi        fi    done    if test -d "$MACOSX_SDK_PATH"; then        CC="$(xcrun -find clang) -m64 -isysroot $MACOSX_SDK_PATH"        INSTALL_NAME_TOOL=$(xcrun -find install_name_tool)        AR=$(xcrun -find ar)        NM=$(xcrun -find nm)        STRIP=$(xcrun -find strip)        LIBTOOL=$(xcrun -find libtool)        RANLIB=$(xcrun -find ranlib)        AC_MSG_RESULT([$CC])    else        AC_MSG_RESULT([legacy])    fi    ;;esacAC_SUBST(MACOSX_SDK_PATH)AC_SUBST(LIBTOOL) # Note that the OS X libtool command is unrelated to GNU libtooldnl ============================================dnl PF_RING library optiondnl ============================================AC_ARG_WITH(pfring-lib,    AS_HELP_STRING([--with-pfring-lib],        [Use a specific PF_RING static library when using PF_RING libpcap.])    [                          Usage:     --with-pfring-lib=<library>                          e. g.: --with-pfring-lib=/usr/lib/libpfring_zc_x86_64.a    ],,)have_cygwin=noAC_MSG_CHECKING([for cygwin development environment])if test $(echo $target | grep -c cygwin) -gt 0 ; then    AC_DEFINE([HAVE_WIN32], [1], [Windows/Cygwin])    AC_MSG_RESULT(yes)    have_cygwin=yeselse    AC_MSG_RESULT(no)fiAM_INIT_AUTOMAKE([foreign])AM_SILENT_RULES([yes])dnl Checks for programs.AC_PROG_INSTALLAC_PROG_LIBTOOLAM_PROG_CC_C_OAC_PROG_CC_STDCAC_PROG_CXXAC_PROG_CPPAC_PROG_LN_SLT_INITAC_PROG_AWKAC_PROG_SEDAC_PROG_MAKE_SETAC_EXEEXTAC_PATH_PROG(PRINTF, printf)AC_PATH_PROG(ECHO, echo)AC_PATH_PROG(CUT, cut)AC_PATH_PROG(AUTOGEN, autogen)AC_PATH_PROG(GROFF, groff)AC_PATH_PROG(depmod, depmod, /sbin/depmod, $PATH:/sbin)AC_PATH_PROG(insmod, insmod, /sbin/insmod, $PATH:/sbin)AC_PATH_PROG(rmmod, rmmod, /sbin/rmmod, $PATH:/sbin)dnl check autogen versionAUTOGEN_VERSION="unknown - man pages will not be built"if test -n "${AUTOGEN}" ; then    AC_MSG_CHECKING(for autogen version >= 5.18.x)    ${AUTOGEN} -v >autogen.version    AUTOGEN_VERSION=$(cat autogen.version | ${SED} 's|.* \([[0-9\.]]\{5,\}\).*|\1|')    AUTOGEN_MAJOR=$(echo ${AUTOGEN_VERSION} | ${CUT} -d '.' -f 1)    AUTOGEN_MINOR=$(echo ${AUTOGEN_VERSION} | ${CUT} -d '.' -f 2)    if ( test ${AUTOGEN_MAJOR} -eq 5 && test ${AUTOGEN_MINOR} -lt 18 ) || test ${AUTOGEN_MAJOR} -lt 5 ; then        AC_MSG_RESULT(no)        AC_MSG_WARN([${AUTOGEN} is too old (${AUTOGEN_VERSION}) for building from source code. Please upgrade to 5.18.4)])    else        AC_MSG_RESULT(yes)    fi    rm -f autogen.version    dnl Compare the installed version with the maintainer version if building from GitHub and not using system libopts    if test ! -f src/tcpreplay_opts.c && test "x$enable_local_libopts" = "xyes" ; then        if test $MAINTAINER_AUTOGEN_VERSION != $AUTOGEN_VERSION ; then            AC_MSG_ERROR([Your version of autogen ($AUTOGEN_VERSION) != libopts tear off ($MAINTAINER_AUTOGEN_VERSION)  Either install the correct version or specify --disable-local-libopts])        fi    fielse    if test ! -f src/tcpreplay_opts.c ; then        AC_MSG_ERROR([Please install GNU autogen $MAINTAINER_AUTOGEN_VERSION if you are building from GitHub. To avoid this message download source from http://tcpreplay.appneta.com/wiki/installation.html])    fifiAC_DEFINE([AUTOGEN_VERSION], [${AUTOGEN_VERSION}], [What version of autogen is installed on this system])if test "x$enable_local_libopts" = "xyes" ; then    AC_MSG_NOTICE([Using included libopts tearoff])else    AC_MSG_NOTICE([Using system libopts])fiAC_HEADER_STDCAC_HEADER_MAJORdnl Checks for typedefs, structures, and compiler characteristics.AC_CHECK_HEADER_STDBOOLAC_C_INLINEAC_TYPE_INT16_TAC_TYPE_INT32_TAC_TYPE_INT64_TAC_TYPE_INT8_TAC_TYPE_OFF_TAC_TYPE_PID_TAC_TYPE_SIZE_TAC_TYPE_SSIZE_TAC_TYPE_UINT16_TAC_TYPE_UINT32_TAC_TYPE_UINT64_TAC_TYPE_UINT8_TAC_HEADER_TIMEAC_C_CONSTAC_C_INLINEAC_SYS_LARGEFILEdnl Check for functionsAC_FUNC_FSEEKOdnl Check for types.AC_CHECK_TYPE(u_int8_t, uint8_t)AC_CHECK_TYPE(u_int16_t, uint16_t)AC_CHECK_TYPE(u_int32_t, uint32_t)AC_CHECK_TYPE(u_int64_t, uint64_t)dnl OS X SDK 10.11 throws lots of unnecessary macro warningscase $host in    *-apple-darwin*)        AC_MSG_CHECKING(for $CC -Wno-macro-redefined)        OLD_CFLAGS=$CFLAGS        CFLAGS="$CFLAGS -Wno-macro-redefined"        wno_macro_redefined=""        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>            int main(int argc, char *argv[]) { return(0); }]])],            [ AC_MSG_RESULT(yes)              wno_macro_redefined="-Wno-macro-redefined" ],            [ AC_MSG_RESULT(no) ])        CFLAGS="$OLD_CFLAGS $wno_macro_redefined"    ;;esacdnl Older versions of GCC don't support these optionsAC_MSG_CHECKING(for $CC -Wextra support)OLD_CFLAGS=$CFLAGSCFLAGS="$CFLAGS -Wextra -Werror"wextra=""AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>    int main(int argc, char *argv[]) { return(0); }]])],    [ AC_MSG_RESULT(yes)      wextra="-Wextra" ],    [ AC_MSG_RESULT(no) ])CFLAGS="$OLD_CFLAGS $wextra"AC_MSG_CHECKING(for $CC -Wno-variadic-macros support)OLD_CFLAGS=$CFLAGSCFLAGS="$CFLAGS -Wno-variadic-macros -Werror"wno_variadic_macros=""AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>    int main(int argc, char *argv[]) { return(0); }]])],    [ AC_MSG_RESULT(yes)      wno_variadic_macros="-Wno-variadic-macros" ],    [ AC_MSG_RESULT(no) ])CFLAGS="$OLD_CFLAGS $wno_variadic_macros"AC_MSG_CHECKING(for $CC -Wfatal-errors support)OLD_CFLAGS=$CFLAGSCFLAGS="$CFLAGS -Wfatal-errors -Werror"wfatal_errors=""AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>    int main(int argc, char *argv[]) { return(0); }]])],    [ AC_MSG_RESULT(yes)      wfatal_errors="-Wfatal-errors" ],    [ AC_MSG_RESULT(no) ])CFLAGS="$OLD_CFLAGS $wfatal_errors"AC_MSG_CHECKING(for $CC -Wno-format-contains-nul support)OLD_CFLAGS=$CFLAGSCFLAGS="$CFLAGS -Wno-format-contains-nul -Werror"wno_format_contains_nul=""AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>    int main(int argc, char *argv[]) { return(0); }]])],    [ AC_MSG_RESULT(yes)      wno_format_contains_nul="-Wno-format-contains-nul" ],    [ AC_MSG_RESULT(no) ])CFLAGS="$OLD_CFLAGS $wno_format_contains_nul"dnl Check for other header filesAC_CHECK_HEADERS([fcntl.h stddef.h sys/socket.h  arpa/inet.h sys/time.h signal.h string.h strings.h sys/types.h stdint.h sys/select.h netinet/in.h netinet/in_systm.h poll.h sys/poll.h unistd.h sys/param.h inttypes.h libintl.h sys/file.h sys/ioctl.h sys/systeminfo.h])AC_HEADER_STDBOOLdnl OpenBSD has special requirementsAC_CHECK_HEADERS([sys/sysctl.h net/route.h], [], [], [[#if HAVE_SYS_PARAM_H#include <sys/param.h>#endif#if HAVE_SYS_TYPES_H#include <sys/types.h>#endif#if HAVE_SYS_SOCKET_H#include <sys/socket.h>#endif]])dnl Checks for libraries.AC_CHECK_LIB(socket, socket)AC_CHECK_LIB(nsl, gethostbyname)AC_CHECK_LIB(rt, nanosleep)AC_CHECK_LIB(resolv, resolv)dnl Checks for library functions.AC_FUNC_FORKAC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINKAC_FUNC_MALLOCAC_FUNC_MEMCMPAC_TYPE_SIGNALAC_FUNC_VPRINTFAC_FUNC_MKTIMEAC_FUNC_MMAPAC_FUNC_REALLOCAC_CHECK_MEMBERS([struct timeval.tv_sec])AC_CHECK_FUNCS([alarm atexit bzero dup2 gethostbyname getpagesize gettimeofday ctime inet_ntoa memmove memset munmap pow putenv realpath regcomp strdup select socket strcasecmp strchr strcspn strdup strerror strtol strncpy strtoull poll ntohll mmap snprintf vsnprintf strsignal strpbrk strrchr strspn strstr strtoul])dnl Look for strlcpy since some BSD's have itAC_CHECK_FUNCS([strlcpy],have_strlcpy=true,have_strlcpy=false)AM_CONDITIONAL(SYSTEM_STRLCPY, [test x$have_strlcpy = xtrue])AC_C_BIGENDIANAM_CONDITIONAL([WORDS_BIGENDIAN], [ test x$ac_cv_c_bigendian = xyes ])dnl Enable debugging in code/compiler optionsdebug=nodebug_flag=NDEBUGdebug_run_time_flag=AC_ARG_ENABLE(debug,    AC_HELP_STRING([--enable-debug], [Enable debugging code and support for the -d option]),    [ if test x$enableval = xyes; then        debug=yes        CFLAGS="${USER_CFLAGS} -g -O0 -std=gnu99 -Wall $wextra $wfatal_errors $wno_variadic_macros $wno_format_contains_nul"# We may also want to add:#         -Wformat-security -Wswitch-default -Wunused-paramter -Wpadded"        debug_flag=DEBUG        debug_run_time_flag=--dbug=1        AC_DEFINE([DEBUG], [1], [Enable debugging code and support for the -d option])    fi])AC_SUBST(debug_flag)AC_SUBST(debug_run_time_flag)dnl Enable extra debugging in code/compiler options - may slow down performanceextra_debug=noextra_debug_flag=NEXTRA_DBUGAC_ARG_ENABLE(extra-debug,    AC_HELP_STRING([--enable-extra-debug], [Enable additional debugging code (may affect performance)]),    [ if test x$enableval = xyes; then        extra_debug=yes        extra_debug_flag=EXTRA_DEBUG        AC_DEFINE([EXTRA_DEBUG], [1], [Enable additional debugging code (may affect performance)])    fi])AC_SUBST(extra_debug_flag)dnl Enable timestamp_trace in code/compiler optionstimestamp_trace=noAC_ARG_ENABLE(timestamp-trace,    AC_HELP_STRING([--timestamp-trace], [Enable dumping of trace timestamps at the end of a test]),    [ if test x$enableval = xyes; then        timestamp_trace=yes        CFLAGS="${USER_CFLAGS} -DTIMESTAMP_TRACE"        AC_SUBST(timestamp_trace_flag)        AC_DEFINE([TIMESTAMP_TRACE], [1], [Enable dumping of trace timestamps at the end of a test])    fi])AC_ARG_ENABLE(dmalloc,    AC_HELP_STRING([--enable-dmalloc], [Enable linking to dmalloc for better memory debugging]),    [ if test x$enableval = xyes ; then        dmalloc=yes        AC_DEFINE([ENABLE_DMALLOC], [1], [Enable dmalloc])        AC_DEFINE([DMALLOC_FUNC_CHECK], [1], [Enable dmalloc function arg checking])        CFLAGS="${CFLAGS} -I/opt/local/include"        DMALLOC_LIB="/opt/local/lib/libdmalloc.a"        AC_SUBST(DMALLOC_LIB)    fi])AC_ARG_ENABLE(pedantic,    AC_HELP_STRING([--enable-pedantic], [Enable gcc's -pedantic option]),    [ if test x$enableval = xyes; then        CFLAGS="$CFLAGS -pedantic"      fi ])dnl Enable EfenseAC_ARG_ENABLE(efence,    AC_HELP_STRING([--enable-efence], [Enable Electric Fence memory debugger]),    [ if test x$enableval = xyes; then          CFLAGS="$CFLAGS -lefence"          AC_DEFINE([EFENCE], [1], [Enable Electric Fence memory debugger])      fi])dnl Enable GprofAC_ARG_ENABLE(gprof,    AC_HELP_STRING([--enable-gprof], [Enable GNU Profiler]),    [ if test x$enableval = xyes; then          if test $debug = yes; then              CFLAGS="$CFLAGS -pg"          else              # GPROF requires gdb              CFLAGS="$CFLAGS -ggdb -pg -fprofile-arcs"          fi          AC_DEFINE([GPROF], [1], [Enable GNU Profiler])      fi])dnl Enable libpcap auto discovery via pcap-configenable_pcap_config=noAC_ARG_ENABLE(pcapconfig,    AC_HELP_STRING([--enable-pcapconfig], [Enable automatic libpcap config, reverting to system scanning]),    [        if test $enableval = yes; then            enable_pcap_config=yes            AC_MSG_NOTICE([Enabling libpcap discovery via pcap_config])        else            enable_pcap_config=no            AC_MSG_NOTICE([Disabling libpcap discovery via pcap_config])        fi    ],    [        AC_MSG_NOTICE([Bypassing libpcap discovery via pcap_config])    ])dnl Use 64bits for packet countersuse64bit_counters=yesAC_ARG_ENABLE(64bits,    AC_HELP_STRING([--disable-64bits], [Do not use 64bit packet counters]),    [         AC_MSG_NOTICE([Using u_int32_t for packet counters])    ],    [         AC_DEFINE([ENABLE_64BITS], [1], [Use 64bit packet counters])         AC_MSG_NOTICE([Using u_int64_t for packet counters])    ])# If we're running gcc add '-D_U_="__attribute__((unused))"' to CFLAGS as well,# so we can use _U_ to flag unused function arguments and not get warnings# about them. Otherwise, add '-D_U_=""', so that _U_ used to flag an unused# function argument will compile with non-GCC compilers.#if test "x$GCC" = "xyes" ; then    CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS"else    CFLAGS="-D_U_=\"\" $CFLAGS"fiAC_ARG_ENABLE(force-bpf,    AC_HELP_STRING([--enable-force-bpf], [Force using BPF for sending packets]),    [ AC_DEFINE([FORCE_INJECT_BPF], [1], [Force using BPF for sending packet])])AC_ARG_ENABLE(force-pf,    AC_HELP_STRING([--enable-force-pf], [Force using Linux's PF_PACKET for sending packets]),    [ AC_DEFINE([FORCE_INJECT_PF], [1], [Force using Linux's PF_PACKET for sending packets])])AC_ARG_ENABLE(force-libdnet,    AC_HELP_STRING([--enable-force-libdnet], [Force using libdnet for sending packets]),    [ AC_DEFINE([FORCE_INJECT_LIBDNET], [1], [Force using libdnet for sending packets])])AC_ARG_ENABLE(force-inject,    AC_HELP_STRING([--enable-force-inject], [Force using libpcap's pcap_inject() for sending packets]),    [ AC_DEFINE([FORCE_INJECT_PCAP_INJECT],[1], [Force using libpcap's pcap_inject() for sending packets])])AC_ARG_ENABLE(force-sendpacket,    AC_HELP_STRING([--enable-force-sendpacket], [Force using libpcap's pcap_sendpacket() for sending packets]),    [ AC_DEFINE([FORCE_INJECT_PCAP_SENDPACKET], [1], [Force using libpcap's pcap_sendpacket() for sending packets])])dnl Static link librariesstatic_link=nodynamic_link=yesAC_ARG_ENABLE(static-link,    AC_HELP_STRING([--enable-static-link], [Use static libraries ( .a  or .A.tbd ) - default no]),    [    if test $enableval = yes; then        static_link=yes        dynamic_link=no    fi    ])dnl Dynamic link librariesAC_ARG_ENABLE(dynamic-link,    AC_HELP_STRING([--enable-dynamic-link], [Use shared libraries ( .so .dylib or .tbd ) - default yes]),    [    if test $enableval = no; then        dynamic_link=no        static_link=yes    elif test $static_link = yes; then        AC_MSG_ERROR([Cannot specify both --enable-dynamic-link and --enable-static-link])    fi    ])if test $static_link = yes; then    AC_DEFINE([ENABLE_STATIC_LINK], [1], [Use static libraries ( .a or .A.tbd )])else    AC_DEFINE([ENABLE_DYNAMIC_LINK], [1], [Use shared libraries ( .so .dylib or .tbd )])fidnl Check for inet_aton and inet_ptonAC_CHECK_FUNC(inet_aton,    AC_DEFINE([HAVE_INET_ATON], [1], [Do we have inet_aton?])    inet_aton=yes,    inet_aton=no)AC_CHECK_FUNC(inet_pton,    AC_DEFINE([HAVE_INET_PTON], [1], [Do we have inet_pton?])    inet_pton=yes,    inet_pton=no)AC_CHECK_FUNC(inet_ntop,    AC_DEFINE([HAVE_INET_NTOP], [1], [Do we have inet_ntop?])    inet_ntop=yes,    inet_ntop=no)if test "$inet_ntop" = "no" -a "$inet_pton" = "no" ; then    AC_MSG_ERROR([We need either inet_ntop or inet_pton])fiAC_CHECK_FUNC(inet_addr,    AC_DEFINE([HAVE_INET_ADDR], [1], [Do we have inet_addr?])    inet_addr=yes,    inet_addr=no)if test x$inet_addr = no ; then    AC_MSG_ERROR([We need inet_addr.  See bug 26])fidnl #####################################################dnl Checks for tuntap device supportdnl #####################################################have_tuntap=noAC_ARG_ENABLE([tuntap],  AS_HELP_STRING([--disable-tuntap], [Disable tuntap support]), [:],  [case "$build_os" in    linux*)      AC_CHECK_HEADER([linux/if_tun.h], [have_tuntap=yes])      ;;    freebsd*)      AC_CHECK_HEADER([net/if_tun.h], [have_tuntap=yes])      ;;  esac])if test $have_tuntap = yes ; then    AC_DEFINE([HAVE_TUNTAP], [1],            [Do we have TUNTAP device support?])fidnl #####################################################dnl Checks for libpcapdnl #####################################################foundpcap=nopf_ring_found=nopf_ring_lib=${with_pfring_lib}using_pcap_config=noAC_MSG_CHECKING(for libpcap)AC_ARG_WITH(libpcap,    AC_HELP_STRING([--with-libpcap=DIR],        [Use libpcap in DIR]),[    testdir=$withval    for incl in ${testdir}/include/pcap.h ${testdir}/pcap.h ${testdir}/pcap/pcap.h; do        if ! test -f "${incl}"; then            continue        fi        LPCAPINC=${incl}        LPCAPINCDIR=${testdir}        if test $dynamic_link = yes; then            for ext in .dylib .so .tbd ; do                for dir in . lib lib64 lib/${host_cpu}-${host_os} ${host_cpu}-${host_os} lib/${MULTIARCH} ${MULTIARCH}; do                    sharefile=$(ls ${testdir}/$dir/libpcap${ext}* 2> /dev/null | sort | head -n1)                    if test -n "${sharefile}"; then                        LPCAPLIB="-L$(dirname ${sharefile}) -lpcap"                        foundpcap=$testdir                        break                    fi                done                if ! test $foundpcap = no; then                    break                fi            done        else            dnl            dnl If dynamic library not found, try static            dnl            for ext in ${libext} .a .A.tbd ; do                for dir in . lib lib64 lib/${host_cpu}-${host_os} ${host_cpu}-${host_os} lib/${MULTIARCH} ${MULTIARCH}; do                    staticfile=$(ls ${testdir}/$dir/libpcap${ext} 2> /dev/null | sort | head -n1)                    if test -n "${staticfile}"; then                        LPCAPLIB="${staticfile}"                        foundpcap=${testdir}                        break                    fi                done                if ! test $foundpcap = no; then                    ## could be PF_RING                    #                    #  library is static and in PF_RING build tree                    #                    #  Need access to libpfring library                    #  and must find an associated libpfring.a                    if test -n "${with_pfring_lib}"; then                        if test -f ${with_pfring_lib}; then                            pf_ring_lib=${with_pfring_lib}                            pf_ring_found=yes                        else                            AC_MSG_ERROR(["Unable to find PF_RING library ${with_pfring_lib}"])                        fi                    else                        ## search locally for most likely PF_RING library                        for lib in ${foundpcap}/../lib/libs/libpfring_zc_${host_cpu}.a \                                ${foundpcap}/../lib/libs/libpfring_dna_${host_cpu}.a \                                ${foundpcap}/../lib/libs/libpfring_zero_${host_cpu}.a \                                ${foundpcap}/../lib/libs/libpfring_nt_${host_cpu}.a \                                ${foundpcap}/../lib/libpfring.a; do                            if test -f "${lib}"; then                                pf_ring_lib=${lib}                                pf_ring_found=yes                                break                            fi                        done                    fi                    break                fi            done        fi        if test $foundpcap = no; then            AC_ERROR(["Unable to find matching library for header file in ${testdir}"])        fi        break    done],[    #    # Look for pcap-config.    #    # I wish this option could be the default, but it is only enabled with --enable-pcapconfig    #    # The issue is that libpcap is one of those libraries that is nearly impossible to set up    # properly across all platforms. The 'pcap-config' script is shipped with new versions of libpcap,    # and was created to address portability issues. Unfortunately, the script is not updated properly    # outside of the base distribution. Examples: PF_RING requires 'pthreads', 'numa' and 'rt', but    # this is not reflect that in the script. OS X Xcode 10.11 SDK creates its own very broken    # 'pcap-config' script that only occassionally works for dynamic defintions, and defintely    # does not work for static.    #    # The ability to enable this script exists for corner cases where libpcap distributions starts    # using even more libraries than I am currently not aware of. Originally, you only had to worry    # about 'nl', but now we have to be prepared to add 'nl-3', 'nl-genl-3' and 'dbus-1' to make    # libpcap fucntional. In the future, there may be more.    #    # (sigh)    #    # So, in the future if libpcap changes and stops working, try setting --enable-pcapconfig. It    # it may work for you.    if test $enable_pcap_config = yes; then        AC_PATH_TOOL(PCAP_CONFIG, pcap-config)            if test -n "$PCAP_CONFIG"; then            #            # Found - use it to get the include flags for            # libpcap and the flags to link with libpcap.            #            # Please read section 11.6 "Shell Substitutions"            # in the autoconf manual before doing anything            # to this that involves quoting.  Especially note            # the statement "There is just no portable way to use            # double-quoted strings inside double-quoted back-quoted            # expressions (pfew!)."            #            if test $dynamic_link = yes; then                LPCAPLIB=$($PCAP_CONFIG --libs)            else                LPCAPLIB=$($PCAP_CONFIG --libs --static)            fi            CFLAGS="$CFLAGS $($PCAP_CONFIG --cflags)"            if test -n "$LPCAPLIB"; then                foundpcap=yes                using_pcap_config=yes            else                AC_WARN([Unable to find libpcap using pcap-config])            fi        fi    fi    if test ! $foundpcap = yes; then        #        # Not found; look for pcap.        #        for testdir in /usr/local /opt/local /usr /wpdpack $MACOSX_SDK_PATH/usr /usr/local/opt/libpcap ; do            if test -f "${testdir}/include/pcap.h"; then                LPCAPINC="${testdir}/include/pcap.h"                LPCAPINCDIR="${testdir}/include"                if test $dynamic_link = yes; then                    for ext in .dylib .so .tbd; do                        for dir in . lib lib64 ${host_cpu} lib/${host_cpu} ${host_cpu}-${host_os} lib/${host_cpu}-${host_os} ${MULTIARCH} lib/${MULTIARCH}; do                            sharefile=$(ls "${testdir}/$dir/libpcap${ext}" 2> /dev/null | sort | head -n1)                            if test -n "${sharefile}"; then                                LPCAPLIB="-L$(dirname ${sharefile}) -lpcap"                                foundpcap=$testdir                                break                            fi                        done                        if ! test $foundpcap = no; then                            break                        fi                    done                fi                if test $foundpcap = no ; then                    dnl                    dnl If dynamic library not found, try static                    dnl                    for ext in ${libext} .a .A.tbd ; do                        for dir in . lib lib64 lib/${host_cpu}-${host_os} ${host_cpu}-${host_os} lib/${MULTIARCH} ${MULTIARCH}; do                            staticfile=$(ls "${testdir}/$dir/libpcap${ext}" 2> /dev/null | sort | head -n1)                            if test -n "${staticfile}"; then                                LPCAPLIB="${staticfile}"                                foundpcap=$testdir                                break                            fi                        done                        if ! test $foundpcap = no; then                            break                        fi                    done                fi                if test $foundpcap = no -a -f "${testdir}/lib/libwpcap.${libext}" ; then                    LPCAPLIB="${testdir}/lib/libwpcap.${libext}"                    AC_DEFINE([HAVE_WINPCAP], [1], [Do we have WinPcap?])                    foundpcap=$testdir                fi            fi            if ! test $foundpcap = no; then                break            fi        done    fi    ])if test $foundpcap = no ; then    AC_MSG_RESULT(no)    AC_ERROR(libpcap not found)else    AC_MSG_RESULT($foundpcap)fi# libpcap can require libnlAC_SEARCH_LIBS([nl_handle_alloc], [nl],        [AC_MSG_NOTICE([Unable to find nl library - may be needed by libpcap])])#### If not automatically configured,## check for newer and full-featured libpcap's##if ! test $using_pcap_config = yes; then    ## newer libpcap requires dbus and latest nl (e.g. -lnl-genl-3 -lnl-3  -ldbus-1)    AC_CHECK_LIB(nl, nl_cache_alloc, [nl_found=yes])    AC_CHECK_LIB(nl-genl-3, genl_connect, [nl_genl_3_found=yes])    AC_CHECK_LIB(nl-3, nl_cache_alloc, [nl_3_found=yes])    AC_CHECK_LIB(dbus-1, dbus_malloc, [dbus_1_found=yes])    if test "$nl_found" = "yes"; then        LPCAPLIB="$LPCAPLIB -lnl"    fi    if test "$nl_genl_3_found" = "yes"; then        LPCAPLIB="$LPCAPLIB -lnl-genl-3"    fi    if test "$nl_3_found" = "yes"; then        LPCAPLIB="$LPCAPLIB -lnl-3"    fi    if test "$dbus_1_found" = "yes"; then        LPCAPLIB="$LPCAPLIB -ldbus-1"    fi    ## See if prereqs for PF_RING exist    AC_CHECK_LIB(numa, numa_available, [numa_found=yes])    AC_CHECK_LIB(pthread, pthread_create, [pthread_found=yes])    if test $pf_ring_found = yes; then        if ! test "${numa_found}" = "yes"; then            AC_MSG_ERROR([PF_RING requires libnuma and/or libnuma-dev])        fi        if ! test "${pthread_found}" = "yes"; then            AC_MSG_ERROR([PF_RING requires libpthread])        fi        LPCAPLIB="$LPCAPLIB ${pf_ring_lib} -lnuma -lpthread -lrt"    fifiOLDLIBS="$LIBS"if test -n "$LPCAPINCDIR"; then    OLDCFLAGS="$CFLAGS -I$LPCAPINCDIR"    CFLAGS="$CFLAGS -I$LPCAPINCDIR"else    OLDCFLAGS="$CFLAGS"    LPCAPINCDIR=$(echo $CFLAGS | sed -e 's/^\-I//')    LPCAPINC="$LPCAPINCDIR/pcap.h"fiLIBS="$LPCAPLIB"AC_SEARCH_LIBS([pcap_get_pfring_id], [pcap], AC_DEFINE([HAVE_PF_RING_PCAP], [1], [Do we have PF_RING libpcap support?]))## Does libpcap work with selected libraries?AC_SEARCH_LIBS([pcap_close], [pcap],    , AC_ERROR([Unable to link libpcap in ${foundpcap}]),)AC_SUBST(LPCAPINC)AC_SUBST(LPCAPLIB)dnl Check to see what version of libpcapdnl this code has been reduced a lot, but probably still could bednl reduced quite a bit more if we chose tooAC_MSG_CHECKING(for libpcap version)dnl 0.9.6 (which is still thinks it is 0.9.5 due to a bug) introduces an importantdnl fix for OSX.  See: http://tcpreplay.synfin.net/trac/ticket/167AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <string.h>#include <stdlib.h>#include <stdio.h>#include "$LPCAPINC"#define PCAP_TEST "0.9.6"]], [[/* * simple proggy to test the version of libpcap * returns zero if version >= 0.9.6 * or one otherwise */    if (strncmp(pcap_lib_version(), PCAP_TEST, 5) >= 0) {        printf("%s ", pcap_lib_version());        exit(0);    }    exit(1);]])], [libpcap_version_096=yes], [libpcap_version_096=no], [libpcap_version_096=yes])AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <string.h>#include <stdlib.h>#include <stdio.h>#include "$LPCAPINC"#define PCAP_TEST "0.8"]], [[/* * simple proggy to test the version of libpcap * returns zero if version >= 0.8.0 * or one otherwise */    if (strncmp(pcap_lib_version(), PCAP_TEST, 3) >= 0)        exit(0);    /* winpcap? */    if (strncmp(pcap_lib_version(), "WinPcap", 7) == 0)        exit(0);    exit(1);]])], [libpcap_ver8=yes], [libpcap_ver8=no], [libpcap_ver8=yes])AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <string.h>#include <stdlib.h>#include <stdio.h>#include "$LPCAPINC"#define PCAP_TEST "0.7.2"extern const char pcap_version[[]]; /* double up since autoconf escapes things */]], [[/* * simple proggy to test the version of libpcap * returns zero if version >= 0.7.2 * or one otherwise */    if (strncmp(pcap_version, PCAP_TEST, 5) >= 0)            exit(0);    exit(1);]])], [libpcap_ver7=yes], [libpcap_ver7=no], [libpcap_ver7=yes])if test x$libpcap_ver8 = xyes ; then    AC_MSG_RESULT(>= 0.8.0)elif test x$libpcap_ver7 = xyes ; then    AC_MSG_RESULT(>= 0.7.2)else    AC_MSG_ERROR([Libpcap versions < 0.7.2 are not supported    Please upgrade to version 0.7.2 or better])filibpcap_version=unknownif test x$libpcap_version_096 = xyes ; then    libpcap_version=">= 0.9.6"elif test x$libpcap_ver8 = xyes ; then    libpcap_version=">= 0.8.0"elif test x$libcap_ver7 = xyes ; then    libpcap_version=">= 0.7.0"fidnl Check for pcap_setnonblock()AC_MSG_CHECKING(for pcap_setnonblock)AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"]],[[    pcap_t *p;    char *errbuf;    pcap_setnonblock(p, 1, errbuf);    exit(0);]])], [    have_pcap_setnonblock=yes    AC_MSG_RESULT(yes)], [    have_pcap_setnonblock=no    AC_MSG_RESULT(no)])if test $have_pcap_setnonblock = yes ; then    AC_DEFINE([HAVE_PCAP_SETNONBLOCK], [1],              [Does libpcap have pcap_setnonblock?])fidnl Check to see if we've got pcap_datalink_val_to_name()AC_MSG_CHECKING(for pcap_datalink_val_to_description)AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"]],[[    if (strcmp(pcap_datalink_val_to_description(1), "Ethernet (10Mb)") == 0)        exit(0);    exit(1);]])],[    have_dlt_to_desc=yes    AC_MSG_RESULT(yes)], [    have_dlt_to_desc=no    AC_MSG_RESULT(no)])if test $have_dlt_to_desc = yes ; then    AC_DEFINE([HAVE_DLT_VAL_TO_DESC], [1],              [Does libpcap have pcap_datalink_val_to_description?])fidnl Check for pcap_get_selectable_fd()AC_MSG_CHECKING(for pcap_get_selectable_fd)AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"]], [[    int f;    pcap_t *p;    f = pcap_get_selectable_fd(p);    exit(0);]])], [    have_pcap_get_selectable_fd=yes    AC_MSG_RESULT(yes)], [    have_pcap_get_selectable_fd=no    AC_MSG_RESULT(no)])if test x$have_pcap_get_selectable_fd = xyes ; then    AC_DEFINE([HAVE_PCAP_GET_SELECTABLE_FD], [1],        [Does libpcap have pcap_get_selectable_fd?])fidnl Important: winpcap apparently defines functions in it's header filesdnl which aren't actually in the library.  Totally fucked up.  Hence, wednl must actually LINK the code, not just compile it.dnl Check to see if we've got pcap_dump_fopen()AC_MSG_CHECKING(for pcap_dump_fopen)AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"]],[[    pcap_dumper_t *dump;    pcap_t *pcap;    FILE *foo;    dump = pcap_dump_fopen(pcap, foo);]])],[    have_pcap_dump_fopen=yes    AC_MSG_RESULT(yes)], [    have_pcap_dump_fopen=no    AC_MSG_RESULT(no)])if test $have_pcap_dump_fopen = yes ; then    AC_DEFINE([HAVE_PCAP_DUMP_FOPEN], [1],              [Does libpcap have pcap_dump_fopen?])else    AC_MSG_NOTICE([--verbose mode requires libpcap >= 0.9.0])fihave_pcap_inject=nodnl Check to see if we've got pcap_inject()AC_MSG_CHECKING(for pcap_inject sending support)AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"]],[[    pcap_t *pcap;    char *buf;    pcap_inject(pcap, (void *)buf, 0);]])],[    have_pcap_inject=yes    AC_MSG_RESULT(yes)], [    have_pcap_inject=no    AC_MSG_RESULT(no)])if test $have_pcap_inject = yes ; then    AC_DEFINE([HAVE_PCAP_INJECT], [1], [Does libpcap have pcap_inject?])fihave_pcap_sendpacket=nodnl Check to see if we've got pcap_sendpacket()AC_MSG_CHECKING(for pcap_sendpacket sending support)AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"]],[[    pcap_t *pcap;    u_char *buf;    pcap_sendpacket(pcap, buf, 0);]])],[    have_pcap_sendpacket=yes    AC_MSG_RESULT(yes)], [    have_pcap_sendpacket=no    AC_MSG_RESULT(no)])if test $have_pcap_sendpacket = yes ; then    AC_DEFINE([HAVE_PCAP_SENDPACKET], [1], [Does libpcap have pcap_sendpacket?])fihave_pcap_breakloop=noAC_MSG_CHECKING(for pcap_breakloop)AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"]],[[    pcap_t *pcap;    pcap_sendpacket(pcap);]])],[    have_pcap_breakloop=yes    AC_MSG_RESULT(yes)], [    have_pcap_breakloop=no    AC_MSG_RESULT(no)])if test $have_pcap_breakloop = yes ; then    AC_DEFINE([HAVE_PCAP_BREAKLOOP], [1], [Does libpcap have pcap_breakloop?])fihave_pcap_version=nodnl Check to see if we have pcap_version[]AC_MSG_CHECKING(for pcap_version[])AC_TRY_LINK([#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"extern char pcap_version[];],[    printf("%s", pcap_version);],[    AC_DEFINE([HAVE_PCAP_VERSION],[1], [Does libpcap have pcap_version[]])    AC_MSG_RESULT(yes)],[    AC_MSG_RESULT(no)])have_pcap_snapshot=nodnl Check for pcap_snapshot()AC_MSG_CHECKING(for pcap_snapshot)AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>#include <stdlib.h>#include <string.h>#include "$LPCAPINC"]],[[    pcap_t *p;    int len;    len = pcap_snapshot(p);    exit(0);]])], [    have_pcap_snapshot=yes    AC_MSG_RESULT(yes)], [    have_pcap_snapshot=no    AC_MSG_RESULT(no)])if test $have_pcap_snapshot = yes ; then    AC_DEFINE([HAVE_PCAP_SNAPSHOT], [1],              [Does libpcap have pcap_snapshot?])fi# Tcpbridge requires libpcap and pcap_sendpacket()enable_tcpbridge=noif test x$foundpcap != xno -a x$have_pcap_sendpacket = xyes ; then    # if we have pcap_sendpacket() then we can build tcpbridge on non-BPF systems    if test x$have_bpf = xno; then        AC_DEFINE(ENABLE_TCPBRIDGE, [1], [Compile tcpbridge])        enable_tcpbridge=yes        AC_MSG_NOTICE([Building tcpbridge])    # BPF systems need to also have pcap_setnonblock()    elif test x$have_pcap_setnonblock = xyes ; then        AC_DEFINE(ENABLE_TCPBRIDGE, [1], [Compile tcpbridge])        enable_tcpbridge=yes        AC_MSG_NOTICE([Building tcpbridge])    else        AC_MSG_WARN([Unable to build tcpbridge.  Try installing latest libpcap!])    fifiAM_CONDITIONAL(COMPILE_TCPBRIDGE, [test x$enable_tcpbridge = xyes ])# tcpliveplay requires linux OS to function properlyenable_tcpliveplay=nocase $host in    *-*-linux*)    AC_DEFINE(ENABLE_TCPLIVEPLAY, [1], [Compile tcpliveplay])    enable_tcpliveplay=yes    AC_MSG_NOTICE([Building tcpliveplay])    ;;    *)    AC_MSG_WARN([Unable to build tcpliveplay.  This tool is only enabled on linux environments.])    ;;esacAM_CONDITIONAL(COMPILE_TCPLIVEPLAY, [test x$enable_tcpliveplay = xyes ])dnl #####################################################dnl Check for netmap supportdnl #####################################################have_netmap=noenable_netmap=notrynetmapdir=AC_MSG_CHECKING(for netmap socket sending support)AC_ARG_WITH(netmap,    AC_HELP_STRING([--with-netmap=DIR], [Use netmap in DIR]),    [trynetmapdir=$withval])NETMAP_SEARCH_DIRS=if test "$cross_compiling" = yes; then    if test "x$trynetmapdir" != "x"; then        NETMAP_SEARCH_DIRS=$trynetmapdir    fielse    NETMAP_SEARCH_DIRS="$trynetmapdir /opt/netmap /usr/src/netmap-release /usr/src/netmap /usr/local/src/netmap-release /usr/local/src/netmap /usr/include"fifor testdir in $NETMAP_SEARCH_DIRS; do    if test -f "${testdir}/sys/net/netmap.h" ; then        NETMAPINC="${testdir}/sys/net/netmap.h"        NETMAPUSERINC="${testdir}/sys/net/netmap_user.h"        NETMAPINCDIR="${testdir}/sys"        have_netmap="yes $testdir"        enable_netmap=yes    else        if test -f "${testdir}/net/netmap.h" ; then            NETMAPINC="${testdir}/net/netmap.h"            NETMAPUSERINC="${testdir}/net/netmap_user.h"            NETMAPINCDIR="${testdir}"            have_netmap="yes $testdir"            enable_netmap=yes        fi    fi    if test "$have_netmap" != no ; then        NETMAPFLAGS="-DHAVE_NETMAP"        OLDCFLAGS="$CFLAGS -I$NETMAPINCDIR"        CFLAGS="$CFLAGS -DNETMAP_WITH_LIBS -DND -I$NETMAPINCDIR"        AC_SUBST(NETMAPINC)        AC_SUBST(NETMAPUSERINC)        AC_SUBST(NETMAPINCDIR)        AC_SUBST(NETMAPFLAGS)        AC_DEFINE([HAVE_NETMAP], [1],               [Do we have netmap support?])        have_netmap="yes $testdir"        enable_netmap=yes        break;    fidoneAC_MSG_RESULT($have_netmap)AM_CONDITIONAL(COMPILE_NETMAP, [test x$enable_netmap = xyes ])dnl ###########################################################dnl Check for nm_open() function available in netmap version 5dnl Also check for other version-specific netmap definitions and structuresdnl ###########################################################if test "x$NETMAPINCDIR" != "x"; then    OLDCPPFLAGS="$CPPFLAGS"    CPPFLAGS="$CPPFLAGS -DNETMAP_WITH_LIBS -DND -I$NETMAPINCDIR"    AC_CHECK_HEADERS(stdio.h net/netmap_user.h)    have_nm_open=no    have_nm_nr_reg_mask=no    have_nm_nr_flags=no    have_nmring_head_tail=no    if test "$have_netmap" != no ; then        dnl check for nm_open()        AC_CHECK_DECL([nm_open],[have_nm_open=yes], , [[            #include <stdio.h>            #include "${NETMAPUSERINC}"        ]])        dnl check for #define NR_REG_MASK        AC_MSG_CHECKING(for netmap NR_REG_MASK definition)        AC_COMPILE_IFELSE(            [AC_LANG_PROGRAM([[                    #include <stdint.h>                    #include <sys/socket.h>                    #include <net/if.h>                    #include <net/netmap.h>                ]],                [[                    #ifdef NR_REG_MASK                        /* OK */                    #else                        # error NR_REG_MASK not found                    #endif                ]])            ],            [have_nm_nr_reg_mask=yes],            [])        AC_MSG_RESULT($have_nm_nr_reg_mask)        dnl check for nr_flags in struct nmreq        AC_MSG_CHECKING(for netmap nr_flags definition)        AC_COMPILE_IFELSE(            [AC_LANG_PROGRAM([[                    #include <stdint.h>                    #include <sys/socket.h>                    #include <net/if.h>                    #include <net/netmap.h>                ]],                [[                    struct nmreq nmr;                    nmr.nr_flags = 0;                ]])            ],            [have_nm_nr_flags=yes],            [])        AC_MSG_RESULT($have_nm_nr_flags)        dnl check for head/tail in struct netmap_ring        AC_MSG_CHECKING(for netmap ring head/tail definitions)        AC_COMPILE_IFELSE(            [AC_LANG_PROGRAM([[                    #include <stdint.h>                    #include <sys/socket.h>                    #include <net/if.h>                    #include <net/netmap.h>                ]],                [[                    struct netmap_ring r;                    r.head = r.tail = 0;                ]])            ],            [have_nmring_head_tail=yes],            [])        AC_MSG_RESULT($have_nmring_head_tail)    fi    if test "$have_nm_open" = yes ; then        AC_DEFINE([HAVE_NETMAP_NM_OPEN], [1], [Does netmap have nm_open function?])    fi    if test "$have_nm_nr_reg_mask" = yes ; then        AC_DEFINE([HAVE_NETMAP_NR_REG], [1], [Does netmap have NR_REG_MASK defined?])    fi    if test "$have_nm_nr_flags" = yes ; then        AC_DEFINE([HAVE_NETMAP_NR_FLAGS], [1], [Does netmap struct nmreq have nr_flags defined?])    fi    if test "$have_nmring_head_tail" = yes ; then        AC_DEFINE([HAVE_NETMAP_RING_HEAD_TAIL], [1], [Does structure netmap_ring have head/tail defined?])    fi    CPPFLAGS="$OLDCPPFLAGS"fihave_pf=nodnl Check for linux PF_PACKET supportAC_MSG_CHECKING(for PF_PACKET socket sending support)AC_TRY_COMPILE([#include <sys/socket.h>#include <netpacket/packet.h>#include <net/ethernet.h>     /* the L2 protocols */#include <netinet/in.h>       /* htons */],[    int pf_socket;    pf_socket = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));],[    AC_DEFINE([HAVE_PF_PACKET], [1],            [Do we have Linux PF_PACKET socket support?])    AC_MSG_RESULT(yes)    have_pf=yes],[    AC_MSG_RESULT(no)])have_tx_ring=nodnl Check for older Linux TX_RING supportAC_MSG_CHECKING(for TX_RING socket sending support)AC_TRY_COMPILE([#include <sys/socket.h>#include <netpacket/packet.h>#include <net/ethernet.h>     /* the L2 protocols */#include <netinet/in.h>       /* htons */#include <linux/if_packet.h>],[    int test;    test = TP_STATUS_WRONG_FORMAT],[    AC_DEFINE([HAVE_TX_RING], [1],            [Do we have Linux TX_RING socket support?])    AC_MSG_RESULT(yes)    have_tx_ring=yes],[    AC_MSG_RESULT(no)])AC_CHECK_HEADERS([net/bpf.h], [have_bpf=yes], [have_bpf=no])if test $have_bpf = yes ; then    AC_DEFINE([HAVE_BPF], [1],            [Do we have BPF device support?])fidnl ##################################################dnl # Check for libdnet, but only if not Cygwin!dnl ##################################################founddnet=nohave_libdnet=nolibdnet_version=enable_fragroute=notrydnetdir=/usr/localif test $have_cygwin = no ; then    AC_MSG_CHECKING(for libdnet)    AC_ARG_WITH(libdnet,        AC_HELP_STRING([--with-libdnet=DIR], [Use libdnet in DIR]),        [trydnetdir=$withval])    for testdir in $trydnetdir /usr/local /opt/local $MACOSX_SDK_PATH/usr /usr ; do        if test -x ${testdir}/bin/dnet-config -a $founddnet = no ; then            LDNETINC="$($testdir/bin/dnet-config --cflags)"            LDNETLIB="$($testdir/bin/dnet-config --libs)"            libdnet_version="$($testdir/bin/dnet-config --version)"            founddnet=$testdir        fi    done    if test $founddnet = no ; then        AC_MSG_RESULT(no)        AC_MSG_WARN([libdnet not found, disabling fragroute feature])    else        AC_MSG_RESULT($founddnet)        enable_fragroute=yes        have_libdnet=yes        AC_DEFINE([HAVE_LIBDNET], [1], [Do we have libdnet?])        dnl Debian uses dumbnet.h instead of dnet.h due to naming conflict        old_cflags=$CFLAGS        CFLAGS=$LDNETINC        AC_CHECK_HEADERS([dumbnet.h dnet.h])        CFLAGS=$old_cflags    fielse    AC_MSG_NOTICE([Skipping libdnet check under Cygwin for compatibility reasons])fiAC_SUBST(LDNETINC)AC_SUBST(LDNETLIB)AC_DEFINE_UNQUOTED([LIBDNET_VERSION], "$libdnet_version", [Version of libdnet])AM_CONDITIONAL(COMPILE_FRAGROUTE, [test x$founddnet != xno])if test x$founddnet != xno ; then    AC_DEFINE(ENABLE_FRAGROUTE, [1], [Enable fragroute module])fidnl Make sure we have a valid packet injection mechanisimif test $have_bpf = no -a $have_pcap_inject = no -a $have_pcap_sendpacket = no \    -a $have_libdnet = no -a $have_pf = no ; then    AC_MSG_ERROR([Unable to find a supported method to send packets.  Please upgrade your libpcap or enable libdnet])fidnl Older versions of libpcap are missing some DLT typesdnl If doesn't exist, we'll define them in src/common/fakepcap.hAC_MSG_CHECKING(for DLT_LINUX_SLL in libpcap)AC_TRY_COMPILE([#include "$LPCAPINC"],               [ int foo;                 foo = DLT_LINUX_SLL ],                [ AC_DEFINE([HAVE_DLT_LINUX_SLL], [1],                            [Does pcap.h include a header with DLT_LINUX_SLL?])                  AC_MSG_RESULT(yes)                ],                AC_MSG_RESULT(no)               )AC_MSG_CHECKING(for DLT_C_HDLC in libpcap)AC_TRY_COMPILE([#include "$LPCAPINC"],               [ int foo;                 foo = DLT_C_HDLC ],                [ AC_DEFINE([HAVE_DLT_C_HDLC], [1],                            [Does pcap.h include a header with DLT_C_HDLC?])                  AC_MSG_RESULT(yes)                ],                AC_MSG_RESULT(no)               )PCAP_BPF_H_FILE="$LPCAPINCDIR/pcap-bpf.h"AC_MSG_CHECKING(for $PCAP_BPF_H_FILE)AC_TRY_COMPILE([#include <sys/types.h>                #include <sys/time.h>                #include <stdint.h>                #include "$PCAP_BPF_H_FILE"],               [ int foo;                 foo = BPF_MAJOR_VERSION; ],               [ AC_DEFINE([INCLUDE_PCAP_BPF_HEADER], [1],                           [What is the path (if any) to the pcap-bpf.h                            header?])                 AC_MSG_RESULT(yes)                 AC_SUBST(PCAP_BPF_H_FILE)               ],               AC_MSG_RESULT(no)               )foundbpfheader=noAC_MSG_CHECKING(for libpcap bpf header)for testfile in $LPCAPINCDIR/pcap/bpf.h $LPCAPINCDIR/pcap-bpf.h ; do    if test -f "${testfile}" -a $foundbpfheader = no ; then        AC_TRY_COMPILE([            #include <sys/types.h>            #include <sys/time.h>            #include <stdint.h>            #include "$testfile"],            [                int foo;                foo = BPF_MAJOR_VERSION;            ],            [                foundbpfheader=yes                PCAP_BPF_H_FILE=$testfile                AC_SUBST(PCAP_BPF_H_FILE)                AC_DEFINE([INCLUDE_PCAP_BPF_HEADER], [1],                        [What is the path (if any) to the libpcap bpf header file?])                AC_MSG_RESULT($testfile)            ],            AC_MSG_RESULT(no)            )    fidonednl ## Test for netmap-libpcaphave_pcap_netmap=noif test $foundpcap != no ; then    PCAP_NETMAP_C_FILE="$LPCAPINCDIR/pcap-netmap.c"    if test -f "${PCAP_NETMAP_C_FILE}" ; then        AC_DEFINE([HAVE_LIBPCAP_NETMAP], [1],                                   [Does this version of libpcap support netmap?])        AC_MSG_RESULT(yes)        have_pcap_netmap=yes    fifidnl restore LIBS & CFLAGSLIBS="$OLDLIBS"CFLAGS="$OLDCFLAGS"dnl ##################################################dnl # Check for pcapnavdnl ##################################################pcapnav_ver=nopcncfg=noAC_ARG_WITH(pcapnav-config,    AC_HELP_STRING([--with-pcapnav-config=FILE], [Use given pcapnav-config]),    [ AC_MSG_CHECKING(for pcapnav-config)    if test -x $withval ; then        pcncfg=$withval        AC_MSG_RESULT($pcncfg)    elif test x$withval = xno ; then        AC_MSG_RESULT(no)    else        AC_MSG_RESULT([Can't find pcapnav-config: disabling offset jump feature])    fi ],    [ AC_PATH_PROG(pcncfg,[pcapnav-config], [no] ) ])if test $pcncfg != no ; then    LNAVLIB=$($pcncfg --libs)    LNAV_CFLAGS=$($pcncfg --cflags)    PCAPNAV_VERSION=$($pcncfg --version)    AC_SUBST(LNAVLIB)    AC_SUBST(LNAV_CFLAGS)    AC_DEFINE_UNQUOTED(PCAPNAV_VERSION, "$PCAPNAV_VERSION",                       [libpcapnav's version?])dnl Check to see what version of libpcapnavdnl this code has been reduced a lot, but probably still could bednl reduced quite a bit more if we chose too    AC_MSG_CHECKING(for libpcapnav version)    AC_TRY_RUN([#include <string.h>#define PCAPNAV_TEST "0.4"/* * simple proggy to test the version of libpcapnav * returns zero if version >= 0.4 * or one otherwise */intmain (int argc, char *argv[]){    if (strncmp(PCAPNAV_VERSION, PCAPNAV_TEST, 3) >= 0)        exit(0);    exit(1);}           ],            libpcapnav_ver=yes            AC_MSG_RESULT(>= 0.4),            libpcapnav_ver=no            AC_MSG_RESULT(< 0.4),            libpcapnav_ver=no    )if test x$libpcapnav_ver = xno ; then    AC_MSG_WARN([Libpcapnav versions < 0.4 are not supported.    Please upgrade to version 0.4 or better.    Disabling offset jump feature.])else    AC_DEFINE([HAVE_PCAPNAV], [1], [Do we have libpcapnav?])fifi # checking pcapnav versiondnl (shamelessly ripped off from libpcap)dnl Checks to see if unaligned memory accesses faildnldnl     FORCE_ALIGN (DEFINED)dnlAC_MSG_CHECKING(for requires strict byte alignment)AC_CACHE_VAL(unaligned_cv_fail,        [case "$host_cpu" in        # XXX: should also check that they don't do weird things (like on arm)        alpha*|arm*|hp*|mips*|sparc*|ia64)                unaligned_cv_fail=yes                ;;        *)        cat >conftest.c <<EOF        #include <sys/types.h>        #include <sys/wait.h>        #include <stdio.h>        unsigned char a[[5]] = { 1, 2, 3, 4, 5 };        main() {            unsigned int i;            pid_t pid;            int status;            /* avoid "core dumped" message */            pid = fork();            if (pid <  0)                exit(2);            if (pid > 0) {                /* parent */                pid = waitpid(pid, &status, 0);                if (pid < 0)                        exit(3);                exit(!WIFEXITED(status));            }            /* child */            i = *(unsigned int *)&a[[1]];            printf("%d\n", i);            exit(0);        }EOF        ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \            conftest.c $LIBS >/dev/null 2>&1        if test ! -x conftest ; then            dnl failed to compile for some reason            unaligned_cv_fail=yes        else            ./conftest >conftest.out            if test ! -s conftest.out ; then                unaligned_cv_fail=yes            else                unaligned_cv_fail=no            fi        fi        rm -f conftest* core core.conftest        ;;        esac    ])AC_MSG_RESULT($unaligned_cv_fail)if test $unaligned_cv_fail = yes ; then    AC_DEFINE([FORCE_ALIGN], [1], [Are we strictly aligned?])fidnl ##################################################dnl # Check for tcpdump.dnl ##################################################tcpdump_path=noAC_ARG_WITH(tcpdump,    AC_HELP_STRING([--with-tcpdump=FILE], [Path to tcpdump binary]),    [ if test -x $withval ; then          tcpdump_path=$withval          AC_MSG_RESULT([Using tcpdump in $tcpdump_path])      else          AC_MSG_RESULT([Error: $withval does not exist or is not executable])      fi ],    [ AC_PATH_PROG(tcpdump_path, tcpdump, "no", [$PATH:/usr/sbin:/sbin:/usr/local/sbin]) ])if test "$tcpdump_path" = "no"; then    AC_MSG_WARN([Unable to find tcpdump.  Please specify --with-tcpdump.                 Disabling --verbose])else    AC_DEFINE([HAVE_TCPDUMP], [1], [Do we have tcpdump?])    AC_DEFINE_UNQUOTED(TCPDUMP_BINARY, "$tcpdump_path", [The tcpdump binary initially used])fiAM_CONDITIONAL([ENABLE_TCPDUMP], test "$tcpdump_path" != "no" -a x$have_pcap_dump_fopen = xyes)if test x$tcpdump_path != xno -a x$have_pcap_dump_fopen = xyes ; then    AC_DEFINE([ENABLE_VERBOSE], [1], [Do we have tcpdump and pcap_dump_fopen()?])else    AC_MSG_WARN([Your version of libpcap is too old for --verbose support])fidnl No 'make test' when cross compileAC_MSG_CHECKING(for 'make test' profile)if test "$host" != "$build" ; then    AC_MSG_WARN(Unable to do tests when cross-compiling)fidnl Allows user to choose which nic to use for testing purposesAC_ARG_WITH(testnic,    AC_HELP_STRING([--with-testnic=NIC], [Select which network card to use for testing]),    [ nic1=$withval      nic2=$withval      AC_MSG_RESULT([Using --with-testnic=$withval])],    [dnl There's a bug in OS X which causes pcap_findalldevs() to make the wifi NIC to disassociatednl so under OSX we disable the interface list featuredisable_pcap_findalldevs=noosx_frameworks=nodnl these need to be dynamic based on OScase $host in    *-*-linux*)    nic1=eth0    nic2=eth0    AC_DEFINE([HAVE_LINUX], [1], [Building Linux])    AC_MSG_RESULT(Linux)    ;;    *-*-solaris*)    nic1=hme0    nic2=hme0    AC_DEFINE([HAVE_SOLARIS], [1], [Building Solaris])    AC_MSG_RESULT(Solaris)    ;;    *-*-sunos*)    nic1=hme0    nic2=hme0    AC_DEFINE([HAVE_SUNOS], [1], [Building SunOS])    AC_MSG_RESULT(SunOS)    ;;    *-apple-darwin*)    nic1=en0    nic2=en0    if test x$libpcap_version_096 = xno ; then        disable_pcap_findalldevs=yes    fi    osx_frameworks=yes    AC_DEFINE([HAVE_DARWIN], [1], [Building Apple/Darwin])    AC_MSG_RESULT(Apple OS X)    ;;    *-*-openbsd*)    nic1=xl0    nic2=xl0    AC_DEFINE([HAVE_OPENBSD], [1], [Building Open BSD])    AC_MSG_RESULT(OpenBSD)    ;;    *-*-freebsd*)    nic1=em0    nic2=em0    AC_DEFINE([HAVE_FREEBSD], [1], [Building Free BSD])    AC_MSG_RESULT(FreeBSD)    ;;    *-*-cygwin)    AC_MSG_RESULT(Win32/Cygwin)    nic1=%0    nic2=%0    AC_DEFINE([HAVE_CYGWIN], [1], [Building Cygwin])    ;;    *)    AC_MSG_RESULT([$host is unknown!  Using first non-loopback interface])    nic1=%0    nic2=%0    ;;esac])AM_CONDITIONAL([ENABLE_OSX_FRAMEWORKS], test "$osx_frameworks" = "yes")AC_ARG_WITH(testnic2,    AC_HELP_STRING([--with-testnic2=NIC2], [Select an optional 2nd network card to use for testing]),    [ nic2=$withval ])AC_MSG_NOTICE([Using $nic1 for 1st test network interface card])AC_MSG_NOTICE([Using $nic2 for 2nd test network interface card])AC_SUBST(nic1)AC_SUBST(nic2)AC_MSG_CHECKING([if it's ok to use pcap_findalldevs()])if test x$disable_pcap_findalldevs = xno ; then    AC_DEFINE([ENABLE_PCAP_FINDALLDEVS], [1], [Enable use of pcap_findalldevs()])    AC_MSG_RESULT(yes)else    AC_MSG_RESULT(no)fidnl tcpreplay has (so far) been relying on leading-edge autogen.dnl Therefore, by default:dnl - use the version we ship withdnl - do not install itdnl - build a static copy (AC_DISABLE_SHARED - implicitly done earlier)case "${enable_local_libopts+set}" in set) ;; *) enable_local_libopts=yes ;;esaccase "${enable_libopts_install+set}" in set) ;; *) enable_libopts_install=no ;;esacLIBOPTS_CHECK(libopts)AC_CONFIG_FILES([Makefile           doxygen.cfg           lib/Makefile           docs/Makefile           src/Makefile           src/tcpedit/Makefile           src/fragroute/Makefile           src/common/Makefile           src/defines.h           test/Makefile           test/config           scripts/Makefile])AC_OUTPUT# Configuration resultsAC_MSG_RESULT(##########################################################################             TCPREPLAY Suite Configuration Results (${TCPREPLAY_VERSION})##########################################################################libpcap:                    ${foundpcap} (${libpcap_version})PF_RING libpcap             ${pf_ring_found}   ${pf_ring_lib}libdnet:                    ${founddnet}   ${libdnet_version}autogen:                    ${AUTOGEN} (${AUTOGEN_VERSION})Use libopts tearoff:        ${enable_local_libopts}64bit counter support:      ${use64bit_counters}tcpdump binary path:        ${tcpdump_path}fragroute support:          ${enable_fragroute}tcpbridge support:          ${enable_tcpbridge}tcpliveplay support:        ${enable_tcpliveplay}Supported Packet Injection Methods (*):Linux TX_RING:              ${have_tx_ring}Linux PF_PACKET:            ${have_pf}BSD BPF:                    ${have_bpf}libdnet:                    ${have_libdnet}pcap_inject:                ${have_pcap_inject}pcap_sendpacket:            ${have_pcap_sendpacket} **pcap_netmap                 ${have_pcap_netmap}Linux/BSD netmap:           ${have_netmap}Tuntap device support:      ${have_tuntap}* In order of preference; see configure --help to override** Required for tcpbridge)case $host in    *-apple-darwin*)    AC_MSG_WARN([Apple OS X versions prior to 10.5 (Leopard) have a serious problem!Please see: http://tcpreplay.synfin.net/trac/ticket/142 for more details])    ;;    *-*-cygwin)        AC_MSG_WARN([Windows/Cygwin support is still somewhat experimental.Please report any bugs! https://github.com/appneta/tcpreplay/issues])    ;;esac
 |