configure.in
上传用户:tjescc
上传日期:2021-02-23
资源大小:419k
文件大小:18k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. dnl
  2. dnl autoconf script for the Nessus libraries
  3. dnl
  4. dnl
  5. dnl Supported options :
  6. dnl
  7. dnl --enable-release
  8. AC_INIT(.root-dir)
  9. AC_REVISION($Revision: 1.141.2.4 $)dnl
  10. PWDD=`pwd`
  11. VERSION=`cat VERSION`
  12. save_IFS="${IFS}"
  13. IFS=.
  14. read NESSUS_MAJOR NESSUS_MINOR NESSUS_PATCH NESSUS_RC <VERSION
  15. IFS="${save_IFS}"
  16. NESSUS_DATE="`date '+%b %d, %Y'`"
  17. expr 0 + $NESSUS_MAJOR + $NESSUS_MINOR + $NESSUS_PATCH + 0 >/dev/null ||
  18. AC_MSG_ERROR([ *** Panic: Corrupt version file])
  19. version=$NESSUS_MAJOR.$NESSUS_MINOR.$NESSUS_PATCH
  20. dnl A tribute to libtool: more fiddling around wirh versions
  21. NESSUS_SUPER=`expr $NESSUS_MAJOR + $NESSUS_MINOR`
  22. dnl Set up the main lines of the config script
  23. AC_CONFIG_HEADER(include/config.h)
  24. AC_PREFIX_DEFAULT("/usr/local")
  25. AC_LANG_C
  26. dnl Set some defaults, enable with keyword 'yes'
  27. use_cipher=yes
  28. GCC_NO_PIPE=no
  29. dnl some compiler option
  30. AC_ARG_ENABLE(gccpipe,[  --enable-gccpipe   use "gcc -pipe" for compilation, where possible],
  31. [case  $enable_gccpipe in
  32.  n*|N*) GCC_NO_PIPE=yes ;;
  33.  y*|Y*) unset GCC_NO_PIPE ;;
  34. esac])
  35. test x$GCC_NO_PIPE = xno && unset GCC_NO_PIPE
  36. dnl Check for several programs
  37. AC_PROG_CC
  38. AC_LIBTOOL_WIN32_DLL
  39. AM_PROG_LIBTOOL
  40. # test, whether the compiler understands the -pipe command
  41. # (thanks to Tatu Illonen: ssh/configure.in)
  42. CC_NOPIPE="$CC"
  43. if test -z "$GCC_NO_PIPE" -a -n "$GCC"; then
  44.   AC_MSG_CHECKING([if the compiler understands -pipe])
  45.   CC="$CC -pipe"
  46.   AC_TRY_COMPILE(,,
  47.     AC_MSG_RESULT(yes),
  48.     CC="$CC_NOPIPE"
  49.     AC_MSG_RESULT(no))
  50. fi
  51. AC_PROG_MAKE_SET
  52. AC_PROG_INSTALL
  53. echo "$INSTALL" | egrep "^./" 2>&1 > /dev/null && 
  54. {
  55.  INSTALL="$PWDD/install-sh"
  56. }
  57. INSTALL_DIR="$INSTALL -d"
  58. test -z "$GCC" || CWARN="-Wall"
  59. dnl Check for extra libraries
  60. AC_HAVE_LIBRARY(resolv, LIBS="-lresolv $LIBS")
  61. # These libraries break stuff under IRIX
  62. if  test "`uname`" != "IRIX" ;
  63. then
  64.  AC_HAVE_LIBRARY(socket, [socket_lib="-lsocket";LIBS="-lsocket $LIBS";])
  65.  AC_HAVE_LIBRARY(nsl, [nsl_lib="-lnsl";LIBS="-lnsl $LIBS";])
  66. fi
  67. dnl User options
  68. AC_ARG_ENABLE(release,[  --enable-release   set the compiler flags to -O6],
  69. CFLAGS="-O6")
  70. bpfshare=""
  71. AC_ARG_ENABLE(debug-store, [  --enable-debug-store Warn the user if a plugin has too many CVE/BID/XRefs],
  72. [if test x$enable_debug_store = xyes ; then
  73. AC_DEFINE(DEBUG_STORE)
  74. fi])
  75. AC_ARG_ENABLE(bpf-sharing, [  --enable-bpf-sharing share one BPF among processes (see README.BPF)],
  76. [if test x$enable_bpf_sharing = xno ; then
  77. bpfshare=no
  78. else
  79. bpfshare=yes
  80. AC_DEFINE(HAVE_DEV_BPFN)
  81. fi])
  82.  
  83.  
  84. test -z "$bpfshare" -a -c /dev/bpf0 -a ! -c /dev/bpf42 && {
  85. AC_DEFINE(HAVE_DEV_BPFN)
  86. bpfshare=yes
  87. }
  88.  
  89. debug_ssl=""
  90. AC_ARG_ENABLE(debug-ssl,[  --enable-debug-ssl   makes OpenSSL produce verbose output],
  91. debug_ssl="-DDEBUG_SSL=1")
  92. nessuspcap=""
  93. AC_ARG_ENABLE(nessuspcap, [  --enable-nessuspcap   use the libpcap that comes with this package],
  94.     nessuspcap="yes", nessuspcap="")
  95.     
  96. if test x$enable_nessuspcap = xno ; then
  97. nessuspcap="no"
  98. fi
  99. if test x$enable_nessuspcap = x ; then
  100. nessuspcap="yes"
  101. fi
  102.     
  103.     
  104. AC_ARG_ENABLE(debug,[  --enable-debug   set the compiler flags to -g],
  105.       debug_cflags="-DDEBUG -g")
  106. AC_ARG_ENABLE(cipher, [ --enable-cipher   crypts the client - server communication],
  107.       [if test x$enable_cipher = xno ; then
  108. use_cipher=no
  109. else
  110. use_cipher=yes
  111. fi])
  112.       
  113. ### use option --with-ssl to compile in the SSL support
  114. ssl=""
  115. sslcflags=""
  116. AC_ARG_WITH(ssl,
  117. [  --with-ssl=[DIR]        enable SSL support using libraries in DIR],
  118. [with_ssl=$withval])
  119. AC_ARG_WITH(egd, 
  120. [  --with-egd=/path   specifies the path to the EGD socket],
  121. [
  122.  egdpath="$withval"
  123.  AC_DEFINE_UNQUOTED(EGD_PATH, "$egdpath")
  124.  ])
  125. AC_C_BIGENDIAN
  126. test "$with_ssl" = "yes" && forcessl="yes"
  127. if test "$with_ssl" = "yes" -o -z "$with_ssl"
  128. then
  129.     # He didn't specify an SSL location.  Let's look at some common
  130.     # directories where SSL has been found in the past and try and auto
  131.     # configure for SSL.  OpenSSL determination will be made later.
  132.     # This will screw up if an OpenSSL install is located in a later
  133.     # directory than an older SSLeay install, but the user should fix that
  134.     # anyways and he can override on the configure line.
  135.     with_ssl=""
  136.     for ac_dir in 
  137.       /usr/local/ssl 
  138.       /usr/ssl 
  139.       /local/ssl 
  140.       /opt/ssl 
  141.       /usr/sfw 
  142.       /usr/freeware 
  143.       ; 
  144.     do
  145.         if test -d "$ac_dir" ; then
  146.             with_ssl=$ac_dir
  147.             break;
  148.         fi
  149.     done
  150.     
  151.    test -z "$with_ssl" && {
  152.     for ac_dir in 
  153.  /usr 
  154.  /usr/local 
  155.  /sw 
  156.  ; 
  157.  do 
  158.    if test -r "$ac_dir/include/openssl/ssl.h" ; then
  159.     with_ssl=$ac_dir
  160. break;
  161.     fi
  162.  done
  163. }
  164. fi
  165. if test -n "$with_ssl" -a "$with_ssl" != "no"
  166. then
  167.   AC_CHECK_LIB(dl, dlopen, withdl="-ldl")
  168.   # With the autoconfigure above, the only time this is going to be
  169.   # true is going to be when we could not find the headers.  If they
  170.   # are not in system standard locations, we are going to be broken.
  171.   if test "$with_ssl" = "yes"
  172.   then
  173.     # Let's just define the standard location for the SSLeay root
  174.     with_ssl="/usr/local/ssl"
  175.   fi
  176.   if test -r $with_ssl/include/openssl/ssl.h
  177.   then
  178.     ### ssl.h found under openssl.  Use openssl configuration preferentially
  179.     echo "Enabling OpenSSL support in $with_ssl"
  180.     if test "$with_ssl" = "/usr"; then
  181.      CEFLAGS="$CEFLAGS -I$with_ssl/include/openssl"
  182.      sslcflags="-I$with_ssl/include/openssl"
  183.     else
  184.      CEFLAGS="$CEFLAGS -I$with_ssl/include -I$with_ssl/include/openssl"
  185.      sslcflags="-I$with_ssl/include -I$with_ssl/include/openssl"
  186.     fi
  187.     ### OpenBSD comes with ssl headers
  188.   elif test -r /usr/include/ssl/ssl.h
  189.   then
  190.     echo "Enabling SSLeay support in $with_ssl"
  191.     sslcflags="-I/usr/include/ssl"
  192.   else
  193.     echo "Enabling SSLeay support in $with_ssl"
  194.     sslcflags="-I$with_ssl/include"
  195.   fi
  196.   
  197.   if test `uname` = "IRIX" -a "$with_ssl" = "/usr/freeware" ;
  198.    then
  199.     ssl="-L$with_ssl/lib32 -lssl -lcrypto $withdl"
  200.    else
  201.     ssl="-L$with_ssl/lib -lssl -lcrypto $withdl"
  202.   fi
  203. else
  204.   with_ssl=""
  205.   AC_ERROR(Could not find OpenSSL and OpenSSL headers on your system)
  206. fi
  207. test -n "$with_ssl" && {
  208. XCFLAGS=$CFLAGS
  209. CFLAGS="$XCFLAGS -I$with_ssl/include -L$with_ssl/lib"
  210. XLDFLAGS=$LDFLAGS
  211. LDFLAGS="-lcrypto"
  212. AC_CHECK_LIB(ssl, RAND_status, AC_DEFINE(HAVE_RAND_STATUS))
  213. CFLAGS=$XCFLAGS
  214. LDFLAGS=$XLDFLAGS
  215. }
  216. test -n "$with_ssl" && {
  217. sslcflags="-DHAVE_SSL $sslcflags"
  218. AC_DEFINE(HAVE_SSL)
  219. test "x$use_cipher" = "xyes" -o -z "$use_cipher" && {
  220. cipher_cflags="-DNESSUS_ON_SSL"
  221. }
  222. }
  223. test -n "$forcessl" -a -z "$with_ssl" && AC_ERROR("OpenSSL not found")
  224. AC_ARG_ENABLE(getoptlong,[  --enable-getoptlong   force using/disbling the internal GNU getopt package],
  225. [case  $enable_getoptlong in
  226.  n*|N*) USE_GETOPT=no ;;
  227.  *)     USE_GETOPT=yes ;;
  228. esac])
  229. AC_ARG_ENABLE(ptmx,[  --enable-ptmx   force using/disabling the /dev/ptmx multiplexer],
  230. [case  $enable_ptmx in
  231.  n*|N*) USE_PTMX=no ;;
  232.  *)     USE_PTMX=yes ;;
  233. esac])
  234. AC_ARG_ENABLE(openpty,[  --enable-openpty   if present, use/disable openpty for creating ptys],
  235. [case  $enable_openpty in
  236.  n*|N*) USE_OPENPTY=no ;;
  237.  *)     USE_OPENPTY=yes ;;
  238. esac])
  239. dnl Check for several headers
  240. AC_HEADER_STDC
  241. AC_HEADER_SYS_WAIT
  242. AC_HEADER_TIME
  243. AC_HEADER_DIRENT
  244. AC_CHECK_HEADERS(linux/msg.h sys/msg.h sys/ipc.h)
  245. AC_CHECK_HEADERS(unistd.h getopt.h string.h strings.h sys/sockio.h sys/socketio.h sys/uio.h)
  246. AC_CHECK_HEADERS(sys/param.h  netinet/in_systm.h)
  247. AC_CHECK_HEADERS(netinet/in.h,,,[#include <sys/types.h>])
  248. AC_CHECK_HEADERS(netinet/in_systm.h,,,[#include <sys/types.h>])
  249. AC_CHECK_HEADERS(netinet/ip.h,,,[#include <sys/types.h>
  250. #include <netinet/in_systm.h>
  251. #include <netinet/in.h>])
  252. AC_CHECK_HEADERS(netinet/ip_icmp.h,,,[#include <sys/types.h>
  253. #include <netinet/in_systm.h>
  254. #include <netinet/in.h>
  255. #include <netinet/ip.h>])
  256. AC_CHECK_HEADERS(netinet/ip.h netinet/udp.h netinet/protocols.h netinet/ip_udp.h netinet/ip_tcp.h netinet/tcpip.h ,,,[#include <sys/types.h>
  257. #include <netinet/in.h>
  258. #include <netinet/ip_var.h>
  259. #include <netinet/udp.h>
  260. #include <netinet/tcp.h>])
  261. AC_CHECK_HEADERS(sys/socket.h sys/resource.h)
  262. AC_CHECK_HEADERS(net/if.h,,,[#include <sys/socket.h>])
  263. AC_CHECK_HEADERS(sys/ioctl.h)
  264. AC_CHECK_HEADERS(rpc/rpc.h dlfcn.h sys/un.h memory.h ctype.h errno.h)
  265. AC_CHECK_HEADERS(sys/types.h stdlib.h stdio.h pthread.h sys/filio.h pwd.h)
  266. AC_CHECK_HEADERS(assert.h netdb.h arpa/inet.h setjmp.h)
  267. AC_CHECK_HEADERS(poll.h sys/poll.h fcntl.h signal.h sys/termio.h)
  268. AC_CHECK_HEADERS(sys/stat.h stat.h sys/mman.h termio.h termios.h sgtty.h)
  269. AC_CHECK_HEADERS(ptem.h sys/ptem.h ldterm.h sys/ldterm.h stropts.h values.h)
  270. AC_CHECK_HEADERS(sys/param.h sys/sysctl.h limits.h)
  271. dnl ./configure fails to determine the existence of some 
  272. dnl headers under IRIX
  273. case "$host" in
  274.  *-irix*)
  275.     AC_DEFINE(HAVE_SYS_SOCKET_H)
  276.     AC_DEFINE(HAVE_NETINET_IP_H)
  277.     AC_DEFINE(HAVE_NETINET_TCP_H)
  278.     ;;
  279.  *)
  280.     ;;
  281. esac
  282.     
  283. case "$host" in
  284.  *-hpux*)
  285.    AC_DEFINE(HPUX)
  286.    ;;
  287. esac
  288. dnl Check for several functions
  289. AC_FUNC_ALLOCA
  290. AC_CHECK_FUNCS(sigaction sysctl setproctitle setitimer)
  291. AC_CHECK_FUNCS(lstat memmove gettimeofday gethrtime getrusage rand)
  292. AC_CHECK_FUNCS(strchr memcpy select poll unlockpt)
  293. AC_CHECK_FUNCS(vsnprintf snprintf vasnprintf vasprintf asprintf asnprintf)
  294. AC_CHECK_FUNCS(bzero bcopy setsid)
  295. AC_CHECK_FUNCS(addr2ascii inet_neta lrand48 setitimer sendmsg recvmsg)
  296. dnl check for getopt, or assume it (not) present
  297. case $USE_GETOPT in yes|no)
  298.   AC_MSG_CHECKING(for getopt_long to assume by config argument)
  299. esac
  300. if test x$USE_GETOPT = xyes ; then
  301.   AC_MSG_RESULT(yes)
  302.   AC_DEFINE(ENABLE_GETOPT_LONG)
  303. elif test x$USE_GETOPT = xno ; then
  304.   AC_MSG_RESULT(no)
  305. else AC_CHECK_FUNCS(getopt_long)
  306. fi
  307. # disable openpty() upon request, only
  308. if test x$USE_OPENPTY != xno -a x$USE_PTMX != xyes ; then
  309.   AC_CHECK_LIB(util,openpty,LIBS="-lutil $LIBS")
  310.   save_LDFLAGS=$LDFLAGS
  311.   LDFLAGS="$LDFLAGS $LIBS"
  312.   AC_CHECK_FUNCS(openpty,FOUND_OPENPTY=yes)
  313.   LDFLAGS=$save_LDFLAGS
  314.   # undef the request for openpty as it is not available
  315.   if test x$FOUND_OPENPTY != xyes ;then
  316.     USE_OPENPTY=no
  317.   fi
  318. fi
  319. dnl check for pty multiplexer device
  320. if test x$USE_PTMX = x ; then
  321.   AC_MSG_CHECKING(for "/dev/ptmx" as a character device)
  322.   test -c "/dev/ptmx"
  323. else
  324.   AC_MSG_CHECKING(for "/dev/ptmx" to exist by config argument)
  325.   test x$USE_PTMX = xyes
  326. fi
  327. if test $? = 0 ; then
  328.   if test x$USE_OPENPTY = xyes ; then
  329.     AC_MSG_RESULT([unsing openpty(), instead])
  330.   else
  331.     AC_MSG_RESULT(yes)
  332.     AC_DEFINE(HAVE_DEV_PTMX)
  333.     HAVE_DEV_PTMX=yes
  334.   fi
  335. else AC_MSG_RESULT(no)
  336. fi
  337. dnl check for pty multiplexer libraries, needed
  338. test x$HAVE_DEV_PTMX = xyes &&
  339. AC_CHECK_FUNCS(grantpt ptsname,,test x$USE_PTMX = xyes && AC_ERROR([
  340.  *** You loose: /dev/ptmx needs to be supported by grantpt() and ptsname().
  341. ]))
  342. AC_CHECK_FUNC(inet_aton, AC_DEFINE(HAVE_INET_ATON))
  343. AC_CHECK_LIB(resolv, inet_aton, AC_DEFINE(HAVE_INET_ATON))
  344. AC_CHECK_LIB(nsl, inet_aton, AC_DEFINE(HAVE_INET_ATON))
  345. llib="";
  346. AC_CHECK_LIB(l, yylex, llib=-ll)
  347. test -z "$llib" &&
  348. {
  349.  AC_CHECK_LIB(fl, yylex, llib=-lfl)
  350. }
  351. test -z "$llib" &&
  352. {
  353.  AC_CHECK_LIB(l, lex_init, llib=-ll)
  354.  test -z "$llib" &&
  355.  {
  356.   AC_CHECK_LIB(fl, lex_init, llib=-lfl)
  357.  }
  358. }
  359. pcap_flag="-lpcap-nessus"
  360. pcap_dir="libpcap-nessus"
  361. BUILD_PCAP=""
  362. if test "x$nessuspcap" = "x" ;
  363. then
  364.  AC_HAVE_LIBRARY(pcap, BUILD_PCAP="", BUILD_PCAP=libpcap-nessus.la)
  365. else
  366.  if  test "x$nessuspcap" = "xyes" ;
  367.   then
  368.    BUILD_PCAP=libpcap-nessus.la
  369.   else if test "x$nessuspcap" = "xno" ; 
  370.     then
  371.       AC_HAVE_LIBRARY(pcap, BUILD_PCAP="", AC_MSG_ERROR("Your system lacks libpcap. Use ./configure --enable-nessuspcap"))
  372.     fi
  373.   fi
  374. fi
  375. if test "x$BUILD_PCAP" = "x" ;
  376. then
  377.  syspcap="-DSYSTEM_PCAP"
  378.  pcap_flag="-lpcap"
  379.  pcap_dir=""
  380.  unset pcap_install
  381.  unset pcap_make
  382.  unset pcap_clean
  383.  unset pcap_distclean
  384. else
  385.  syspcap=""
  386.  pcap_flag="-lpcap-nessus"
  387.  pcap_install="pcap-install"
  388.  pcap_make="pcap-make"
  389.  pcap_clean="pcap-clean"
  390.  pcap_distclean="pcap-distclean"
  391. fi
  392. case "$host" in
  393.  *-cygwin*)
  394.     AC_DEFINE(_CYGWIN_)
  395.     AC_HAVE_LIBRARY(wpcap, , AC_MSG_ERROR("Your system lacks the libwpcap"))
  396.     AC_HAVE_LIBRARY(Packet, , AC_MSG_ERROR("Your system lacks the libPacket")) 
  397.     AC_HAVE_LIBRARY(ws2_32, with_ws2_32="-lws2_32")
  398.     syspcap="-DSYSTEM_PCAP"
  399.     pcap_flag="-lwpcap -lPacket"
  400.     pcap_dir=""
  401.     BUILD_PCAP=""
  402.     pcap_install=""
  403.     pcap_make=""
  404.     pcap_clean=""
  405.     pcap_distclean=""
  406.     ;;
  407.  *)
  408.     ;;
  409. esac   
  410. dnl This test is from the configure.in of Unix Network Programming second
  411. dnl edition example code by W. Richard Stevens
  412. dnl ##################################################################
  413. dnl Check if sockaddr{} has sa_len member.
  414. dnl
  415. AC_CACHE_CHECK(if sockaddr{} has sa_len member, ac_cv_sockaddr_has_sa_len,
  416.         AC_TRY_COMPILE([
  417. #               include <sys/types.h>
  418. #               include <sys/socket.h>],
  419.                 [unsigned int i = sizeof(((struct sockaddr *)0)->sa_len)],
  420.         ac_cv_sockaddr_has_sa_len=yes,
  421.         ac_cv_sockaddr_has_sa_len=no))
  422. if test $ac_cv_sockaddr_has_sa_len = yes ; then
  423.         AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
  424. fi
  425. AC_CACHE_CHECK(if struct ifmap exists, ac_cv_ifmap,
  426.         AC_TRY_COMPILE([
  427. #               include <sys/types.h>
  428. #               include <sys/socket.h>
  429. # include <net/if.h>],
  430.                 [unsigned int i = sizeof(struct ifmap)],
  431.         ac_cv_have_ifmap=yes,
  432.         ac_cv_have_ifmap=no))
  433. if test $ac_cv_have_ifmap = yes ; then
  434.         AC_DEFINE(HAVE_STRUCT_IFMAP)
  435. fi
  436. AC_CHECK_TYPE(time_t,int)
  437. AC_TYPE_PID_T
  438. AC_TYPE_SIZE_T
  439. AC_TYPE_UID_T
  440. darwin=`uname`
  441. test "$darwin" = "Darwin" && {
  442. AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
  443. AC_TRY_COMPILE([
  444. #include <stdlib.h>
  445. #include <stdio.h>
  446. #include <sys/types.h>
  447. #include <sys/socket.h>
  448. #include <netinet/in.h>
  449. #include <arpa/inet.h>
  450. #include <arpa/nameser_compat.h>
  451. #include <resolv.h>
  452. ], [static int i; i = 0;],
  453.   [AC_MSG_RESULT(yes)
  454.    HAVE_TIMEVAL=yes
  455.    AC_DEFINE(USE_ARPA_NAMESER_COMPAT_H)],
  456.   [AC_MSG_RESULT(no)
  457.    ])
  458. }
  459. dnl this routine has been adopted from the GNU emacs20 distrubution
  460. AC_MSG_CHECKING(for struct timeval)
  461. AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME
  462. #include <sys/time.h>
  463. #include <time.h>
  464. #else
  465. #ifdef HAVE_SYS_TIME_H
  466. #include <sys/time.h>
  467. #else
  468. #include <time.h>
  469. #endif
  470. #endif], [static struct timeval x; x.tv_sec = x.tv_usec;],
  471.   [AC_MSG_RESULT(yes)
  472.    HAVE_TIMEVAL=yes
  473.    AC_DEFINE(HAVE_TIMEVAL)],
  474.   [AC_MSG_RESULT(no)
  475.    HAVE_TIMEVAL=no])
  476. AC_MSG_CHECKING(if optind is defined in a library already)
  477. AC_TRY_COMPILE([#include <stdio.h>], [extern int optind;],
  478.   [AC_MSG_RESULT(yes)
  479.    AC_DEFINE(HAVE_OPTIND)],
  480.   [AC_MSG_RESULT(no)
  481.   ])
  482. AC_MSG_CHECKING(if msg_accrights exists in msghdr)
  483. AC_TRY_COMPILE([#include <stdio.h>
  484. #include <stdlib.h>
  485. #include <sys/types.h>
  486. #include <sys/socket.h>], [int main() { struct msghdr msg; msg.msg_accrights = 0;}],
  487.   [AC_MSG_RESULT(yes)
  488.    AC_DEFINE(HAVE_ACCRIGHTS_IN_MSGHDR)],
  489.   [AC_MSG_RESULT(no)
  490.   ])
  491. AC_MSG_CHECKING(if msg_control exists in msghdr)
  492. AC_TRY_COMPILE([#include <stdio.h>
  493. #include <stdlib.h>
  494. #include <sys/types.h>
  495. #include <sys/socket.h>], [int main() { struct msghdr msg; msg.msg_control = 0;}],
  496.   [AC_MSG_RESULT(yes)
  497.    AC_DEFINE(HAVE_CONTROL_IN_MSGHDR)],
  498.   [AC_MSG_RESULT(no)
  499.   ])
  500. dnl Check for the number of arguments for gettimeofday (), this routine
  501. dnl has been adopted from the GNU emacs20 distrubution
  502. if test "x$HAVE_TIMEVAL" = xyes; then
  503. AC_MSG_CHECKING([whether gettimeofday can't accept two arguments])
  504. AC_TRY_LINK([
  505. #ifdef TIME_WITH_SYS_TIME
  506. #include <sys/time.h>
  507. #include <time.h>
  508. #else
  509. #ifdef HAVE_SYS_TIME_H
  510. #include <sys/time.h>
  511. #else
  512. #include <time.h>
  513. #endif
  514. #endif
  515.   ],
  516.   [
  517.   struct timeval time;
  518.   struct timezone dummy;
  519.   gettimeofday (&time, &dummy);
  520. ],
  521.   [AC_MSG_RESULT(no)],
  522.   [AC_MSG_RESULT(yes)
  523.    AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)])
  524. fi
  525. dnl Define several paths
  526. AC_SYS_LONG_FILE_NAMES
  527. EXTRA=$LIBS
  528. case "$host" in
  529.   *-darwin*)
  530.     AC_DEFINE(DARWIN)
  531.     ;;
  532.   *-netbsd*)
  533.     AC_DEFINE(NETBSD)
  534.     ;;
  535.   *-openbsd*)
  536.     AC_DEFINE(OPENBSD)
  537.     ;;
  538.   *-sgi-irix5*)
  539.     AC_DEFINE(IRIX)
  540.     ;;
  541.   *-sgi-irix6*)
  542.     AC_DEFINE(IRIX)
  543.     ;;
  544.   *-solaris2.0*)  
  545.     AC_DEFINE(SOLARIS)
  546.     ;;
  547.   *-solaris2.1*)
  548.     AC_DEFINE(SOLARIS)
  549.     ;;
  550.   *-solaris2.2*)
  551.     AC_DEFINE(SOLARIS)
  552.     ;;
  553.   *-solaris2.3*)
  554.     AC_DEFINE(SOLARIS)
  555.     ;;
  556.   *-solaris2.4*)
  557.     AC_DEFINE(SOLARIS)
  558.     ;;
  559.   *-solaris2.5.1)
  560.     AC_DEFINE(SOLARIS)
  561.     ;;
  562.   *-solaris*)
  563.     AC_DEFINE(SOLARIS)
  564.     ;;
  565.   *-sunos4*)
  566.     AC_DEFINE(SUNOS)
  567.     ;;
  568.   *-linux*)
  569.    
  570.     AC_DEFINE(LINUX)
  571.     ;;
  572.   *-freebsd*)
  573.     AC_DEFINE(FREEBSD)
  574.     ;;
  575.   *-bsdi*)
  576.     AC_DEFINE(BSDI)
  577.     ;;
  578. esac
  579. case "$host" in
  580.     *-freebsd*|*-bsdi*|*-netbsd*)
  581.     AC_DEFINE(BSD_BYTE_ORDERING)
  582. esac
  583. test -n "$ssl" -a -d /usr/kerberos && {
  584.    sslcflags="-I/usr/kerberos/include $sslcflags"
  585. ssl="-L/usr/kerberos/lib $ssl"
  586. AC_CONFIG_SUBDIRS($pcap_dir)
  587. dnl Final step : substitute what we want to
  588. AC_SUBST(CC_NOPIPE)
  589. AC_SUBST(PWD)
  590. AC_SUBST(PWDD)
  591. AC_SUBST(CFLAGS)
  592. AC_SUBST(CWALL)
  593. AC_SUBST(CWARN)
  594. AC_SUBST(INSTALL_DIR)
  595. AC_SUBST(INSTALL)
  596. AC_SUBST(EXTRA)
  597. AC_SUBST(debug_cflags)
  598. AC_SUBST(cipher_cflags)
  599. AC_SUBST(pcap_install)
  600. AC_SUBST(pcap_make)
  601. AC_SUBST(pcap_clean)
  602. AC_SUBST(pcap_distclean)
  603. AC_SUBST(syspcap)
  604. AC_SUBST(with_ws2_32)
  605. AC_SUBST(ssl)
  606. AC_SUBST(sslcflags)
  607. AC_SUBST(llib)
  608. AC_SUBST(version)
  609. AC_SUBST(egdpath)
  610. AC_SUBST(debug_ssl)
  611. AC_SUBST(NESSUS_MAJOR)
  612. AC_SUBST(NESSUS_MINOR)
  613. AC_SUBST(NESSUS_SUPER)
  614. AC_SUBST(NESSUS_PATCH)
  615. AC_SUBST(NESSUS_DATE)
  616. AC_SUBST(BUILD_PCAP)
  617. AC_SUBST(pcap_flag)
  618. AC_SUBST(VERSION)
  619. AC_SUBST(ac_configure_args)
  620. dnl And we put everything in THREE files
  621. AC_OUTPUT(nessus.tmpl nessus-config.pre include/libvers.h uninstall-nessus)
  622. chmod +x uninstall-nessus
  623. test  "$use_cipher" = "yes" -a -z "$with_ssl"  &&
  624. {
  625.  AC_MSG_WARN([*** As SSL support is disabled, the communication between   the server and the client will not be ciphered])
  626. AC_MSG_RESULT([
  627. If you installed an older version of Nessus in the past you should run
  628. ./uninstall-nessus as root first.
  629. This script will remove the old libraries and binaries left by the older
  630. version but will keep your configuration untouched])
  631. test -z "$bpfshare" -a -c /dev/bpf0 -a ! -c /dev/bpf40 &&
  632. AC_MSG_RESULT([
  633. *** You appear to be running a BPF-enabled operating system. 
  634. (BPF stands for 'Berkeley Packet Filter')
  635. BPFs are used to capture incoming packets without using the operating system. 
  636. Nessus uses those for some of its security checks and port scanners.
  637. However, you seem to not have enough bpfs, (we recommand that you get about 
  638. 100 of them) so Nessus might miss some hosts or produce inaccurate port scans.
  639. If you can not create more bpfs, then you may want to enable the experimental
  640. bpf sharing daemon, by re-running this configure script with the option
  641. --enable-bpf-sharing
  642. Please read README.BPF before continuing])
  643. exit 0