dnl Process this file with autoconf to produce a configure script. dnl AC_INIT(agent/mibgroup/ucd-snmp/extensible.c) AC_CONFIG_HEADER(config.h) dnl dnl save the configure arguments dnl AC_DEFINE_UNQUOTED(CONFIGURE_OPTIONS,"$ac_configure_args") dnl dnl Compilation setup dnl AC_ARG_WITH(cc, [ Compiler Options: --with-cc=CC use CC to compile (default=gcc).], [CC=$with_cc;export CC]) AC_ARG_WITH(ar, [ --with-ar=AR use AR as the archiver.], [AR=$with_ar; export AR]) AC_ARG_WITH(endianness, [ --with-endianness=big|little define endianness of target platform when cross-compiling.], [if test $with_endianness != "big" -a $with_endianness != "little" ; then AC_MSG_ERROR([Endianness must be big or little, not \"$with_endianness\".]); fi ]) AC_ARG_WITH(cflags, [ --with-cflags=CFLAGS use CFLAGS as compile time arguments.], [CFLAGS=$with_cflags; export CFLAGS]) AC_ARG_WITH(ldflags, [ --with-ldflags=LDFLAGS use LDFLAGS as link time arguments to ld.], [LDFLAGS=$with_ldflags; export LDFLAGS]) AC_ARG_WITH(libs, [ --with-libs=LIBS use LIBS as link time arguments to ld.], [LIBS=$with_libs; export LIBS]) AC_ARG_ENABLE(silent-libtool, [ --enable-silent-libtool Pass --silent to libtool.], LIBTOOLFLAGS=--silent) AC_SUBST(LIBTOOLFLAGS) AC_ARG_ENABLE(mini_agent, [ --enable-mini-agent Build a minimal agent.], mini_agent="yes",mini_agent="no") AC_ARG_ENABLE(ipv6, [ --enable-ipv6 Generate IPv6 ready version.], [if test "x$enable_ipv6" = "xyes"; then AC_DEFINE(INET6) fi]) AC_ARG_ENABLE(debugging, [ --enable-debugging Outputs extra debugging information at all times. Normally, you should not enable this, but instead use the -D flag of the commands, which toggles debbuging output at runtime. --disable-debugging Disallows debugging code to be built in. This might provide some speed benefits.], AC_DEFINE(SNMP_ALWAYS_DEBUG)) AC_ARG_ENABLE(developer, [ --enable-developer Turns on super-duper-extra-compile-warnings when using gcc.], developer=yes) if test "x$enable_debugging" = "xno"; then AC_DEFINE(SNMP_NO_DEBUGGING) fi AC_ARG_WITH(dmalloc, [ --with-dmalloc=PATH Use dmalloc library (www.dmalloc.com)], if test "x$withval" = "xyes"; then AC_ADD_SEARCH_PATH(/usr/local) LIBS="$LIBS -ldmalloc" AC_DEFINE(HAVE_DMALLOC_H) elif test -d "$withval"; then AC_ADD_SEARCH_PATH($withval) LIBS="$LIBS -ldmalloc" AC_DEFINE(HAVE_DMALLOC_H) fi ) AC_SUBST(HAVE_DMALLOC_H) AC_ARG_WITH(efence, [ --with-efence Look for and use libefence (malloc).], use_efence="$withval") tryrsaref=no AC_ARG_WITH(rsaref, [ --with-rsaref=PATH Look for librsaref in PATH/lib.], if test "x$withval" = "xyes"; then tryrsaref=yes elif test "x$withval" = "xno"; then tryrsaref=no elif test -d "$withval"; then AC_ADD_SEARCH_PATH($withval) tryrsaref=yes fi, ) tryopenssl=defaultyes askedopenssl=no AC_ARG_WITH(openssl, [ --with-openssl=PATH Look for openssl in PATH/lib.], if test "x$withval" = "xyes"; then tryopenssl=yes askedopenssl=yes elif test "x$withval" = "xno"; then tryopenssl=no elif test -d "$withval"; then AC_ADD_SEARCH_PATH($withval) tryopenssl=yes askedopenssl=yes fi, ) if test "x$tryopenssl" = "xdefaultyes"; then AC_ADD_SEARCH_PATH(/usr/local/ssl) tryopenssl=yes fi AC_ARG_ENABLE(privacy, [ --disable-privacy Don't compile in support for privacy.]) if test "x$enable_privacy" != "xno"; then AC_DEFINE(SCAPI_AUTHPRIV) fi AC_ARG_ENABLE(internal-md5, [ --enable-internal-md5 Use the internal MD5 support.], AC_DEFINE(USE_INTERNAL_MD5)) AC_ARG_WITH(opaque-special-types, [ --without-opaque-special-types Don't use special opaque encodings. SNMP normally cannot handle floating numbers, nor large 64 bit integers well. By default, the ucd-snmp package compiles in support for these extra datatypes (in a legal way)]) AC_ARG_WITH(mibdirs, [ --with-mibdirs=\"dir1:dir2:\" Default directories to look for mibs. (Default: \$HOME/.snmp/mibs:DATADIR/snmp/mibs)], [DEFAULT_MIBDIRS="$with_mibdirs" AC_DEFINE_UNQUOTED(DEFAULT_MIBDIRS,"$with_mibdirs")]) AC_ARG_WITH(mibs, [ --with-mibs=\"item1:item2:\" Default mib IDs to read. (The default list is \"IP-MIB:IF-MIB: TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB\" with the addition of any mibs used by the mib modules the agent is configured with)], DEFAULT_MIBS="$with_mibs") AC_ARG_WITH(mibfiles, [ --with-mibfiles=\"file1:file2\" Default mib files to load. (Default: none. uses IDs above instead.)], AC_DEFINE_UNQUOTED(DEFAULT_MIBFILES,"$with_mibfiles")) AC_ARG_ENABLE(testing-code, [ --enable-testing-code Enables some code sections that should only be used for testing of certain SNMP functionalities. This should *not* be turned on for production use. Ever.], AC_DEFINE(SNMP_TESTING_CODE)) AC_ARG_ENABLE(reentrant, [ --enable-reentrant Enables locking functions that protect library resources in some multi-threading environments. This does not guarantee thread-safe operation. Currently an experimental setting.], with_res_locks="yes",with_res_locks="no") AC_ARG_WITH(root-access, [ Configuring the agent: --without-root-access The snmpd agent won't require root access to run it. The information it returns in the mib-II tree may not be correct, however.]) AC_ARG_WITH(dummy-values, [ --with-dummy-values Provide 'placeholder' dummy values where the necessary information is not available. This is technically not compliant with the SNMP specifications, but was how the agent operated for versions < 4.0.]) AC_ARG_WITH(persistent-directory, [ --with-persistent-directory=\"directory\" Default directory for persistent data storage.],ac_cv_user_prompt_PERSISTENT_DIRECTORY="$with_persistent_directory") AC_ARG_WITH(sys_contact, [ --with-sys-contact=\"who@where\" Default system contact. (Default: LOGIN@DOMAINNAME)], ac_cv_user_prompt_SYS_CONTACT="$with_sys_contact") AC_ARG_WITH(sys_location, [ --with-sys-location=\"location\" Default system location. (Default: Unknown)], ac_cv_user_prompt_SYS_LOC="$with_sys_location") AC_ARG_WITH(logfile, [ --with-logfile=\"location\" Default log file location for snmpd.], ac_cv_user_prompt_LOGFILE="$with_logfile") dnl This can't be within AC_ARG_WITH. I don't want to read autoconf m4 dnl to find out why. AC_SUBST(WRAPLIBS) AC_ARG_WITH(mib_modules, [ --with-mib-modules=\"item1 ...\" Compile with additional mib modules (Space separated list).]) AC_ARG_WITH(out_mib_modules, [ --with-out-mib-modules=\"list\" Compile without these mib modules. Default mib modules compiled into the agent (which can be removed): mibII: support for the mib-II tree. snmpv3: support for the snmpv3 mib modules. ucd_snmp: ucd-snmp specific extensions. agentx: (see below) notification: mibs supporting specification of trap destinations. Optional mib modules that can be built into the agent include: host: host resources mib support. (beta level code for linux, hpux, solaris, bsdi) smux: smux support to allow subagents to attach to snmpd. misc/ipfwacc: accounting rules IP firewall information (linux). ipfwchains/ipfwchains: firewall chains under ipfw for linux. (Download separately from the ucd-snmp ftp site.) ucd-snmp/diskio: Table of io-devices and how much data they have read/written. (only tested on Solaris) target: Support for the SNMP WGs TARGET-MIB. (note: this is required for the notification mib above, and hence is usually included). tunnel: Linux TUNNEL-MIB support (ifTable extension) AgentX support: (warning: beta code) agentx/subagent: allows the agent to run as either a snmp agent or as an agentX sub-agent. agentx/master: makes the agent run as an agentX master agent as well as a normal snmp agent. agentx: includes both agentx/master and agentx/client. Optional modules for C coders to look at and/or include as extension examples: examples/ucdDemoPublic: SNMPv3 interoperability testing mib. examples/example: example C code extension.]) dnl dnl Catch common mistakes in configure options dnl AC_ARG_WITH(mib_module,, AC_MSG_ERROR([ Invalid option. Use --with-mib-modules instead ]) ) AC_ARG_WITH(out_mib_module,,AC_MSG_ERROR([ Invalid option. Use --with-out-mib-modules instead ]) ) dnl dnl otherwise prompted information dnl AC_ARG_WITH(defaults, [ Miscellaneous: --with-defaults Use defaults for prompted values.], defaults="yes",defaults="no") dnl Only define if specifically chosen as --without (i.e., default to true). if test "x$with_root_access" = "xno"; then AC_DEFINE(NO_ROOT_ACCESS) fi dnl Define unless specifically suppressed (i.e., option defaults to false). if test "x$with_dummy_values" != "xyes"; then AC_DEFINE(NO_DUMMY_VALUES) fi dnl Only define if specifically chosen as --without (i.e., default to true). if test "x$with_opaque_special_types" != "xno"; then AC_DEFINE(OPAQUE_SPECIAL_TYPES) fi dnl overflow problems with hpux's sh dnl taken from Perl's Configure script AC_MSG_CHECKING(if I need to feed myself to ksh) if test -f /hp-ux -a -f /bin/ksh; then if (PATH=.; alias -x) >/dev/null 2>&1; then AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) if test "x$1" = "x"; then exec /bin/ksh $0 else exec /bin/ksh $0 "$@" fi fi else AC_MSG_RESULT(no) fi if test "x$developer" != "xno" -a -f $srcdir/remove-files; then dnl turn on the developer flag when taken from a CVS checkout (not a release) developer="yes" fi dnl disable --enable-shared by default in cvs/developer cases. if test "x$developer" = "xyes"; then AC_DISABLE_SHARED fi AC_PROG_CC AC_PROG_CPP AC_AIX AC_EXEEXT dnl libtool stuff for shared/static libraries. AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_PROG_LIBTOOL dnl Checks for programs. AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PATH_PROG(PSPROG,ps) AC_PATH_PROG(PERLPROG,perl) AC_CHECK_PROGS(WHOAMI, whoami logname, whoami) AC_CHECK_PROGS(SED,sed gsed) AC_CHECK_PROG(AUTOCONF, autoconf) AC_CHECK_PROG(AUTOHEADER, autoheader) if test "x$test ac_cv_prog_AUTOCONF" = "x"; then AUTOCONF=":" AC_SUBST(AUTOCONF) fi if test "x$test ac_cv_prog_AUTOHEADER" = "x"; then AUTOHEADER=":" AC_SUBST(AUTOHEADER) fi AC_PATH_PROG(UNAMEPROG,uname) AC_DEFINE_UNQUOTED(UNAMEPROG,"$UNAMEPROG") AC_C_CONST dnl get version number. AC_MSG_CHECKING(for ucd-snmp version number) VERSION=`cat $srcdir/version.h | sed 's/";//;s/.*"//;s/pre/0./;'` AC_SUBST(VERSION) AC_MSG_RESULT($VERSION) dnl super type checking AC_MSG_CHECKING(for developer gcc flags) if test "x$developer" = "xyes" -a "x$ac_cv_prog_gcc" = "xyes"; then devflags="-Wall -Wstrict-prototypes -Wwrite-strings -Wcast-qual -Wno-char-subscripts" CFLAGS="$CFLAGS $devflags" else devflags="none" fi AC_MSG_RESULT($devflags) dnl system check AC_CANONICAL_SYSTEM changequote(, ) PARTIALTARGETOS=`echo $target_os | sed 's/[-._].*//'` CFLAGS="$CFLAGS -D$PARTIALTARGETOS" changequote([, ]) dnl dnl check for special includes and pick one dnl AC_MSG_CHECKING(for system include file) changequote(, ) filebase=$target_os dnl ignore binary format indication filebase=`echo $filebase | sed 's/elf//'` filebase=`echo $filebase | sed 's/aout//'` filebase=`echo $filebase | sed 's/ecoff//'` filebase=`echo $filebase | sed 's/coff//'` while test "x$filebase" != "x$last" -a ! -f $srcdir/s/$filebase.h do last=$filebase filebase=`echo $filebase | sed 's/[-._][^-._]*$//'` if test "x$filebase" = "x$last"; then filebase=`echo $filebase | sed 's/[0-9]*$//'` fi done if test "x$filebase" = "x$last"; then filebase="generic" fi ac_cv_SYSTEM_INCLUDE_FILE="s/$filebase.h" changequote([, ]) AC_MSG_RESULT($ac_cv_SYSTEM_INCLUDE_FILE) AC_DEFINE_UNQUOTED(SYSTEM_INCLUDE_FILE, "$ac_cv_SYSTEM_INCLUDE_FILE") dnl second part, the CPU type. AC_MSG_CHECKING(for machine-type include file) changequote(, ) filebase=$target_cpu while test "x$filebase" != "x$last" -a ! -f $srcdir/m/$filebase.h do last=$filebase filebase=`echo $filebase | sed 's/[-._][^-._]*$//'` done if test "x$filebase" = "x$last"; then filebase="generic" fi ac_cv_MACHINE_INCLUDE_FILE="m/$filebase.h" AC_MSG_RESULT($ac_cv_MACHINE_INCLUDE_FILE) changequote([, ]) AC_DEFINE_UNQUOTED(MACHINE_INCLUDE_FILE, "$ac_cv_MACHINE_INCLUDE_FILE") AC_PATH_PROG(CCPATH,$CC) dnl watch out for /usr/ucb/cc on solaris, it doesn't work with this package. case $target_os in bsdi*) if test "x$CCPATH" = "x/usr/ucb/cc" -o "x$CCPATH" = "x/usr/bin/cc"; then AC_MSG_ERROR([ *** The BSDI /usr/ucb/cc compiler does not work with this package. *** Please run configure with --with-cc=gcc ]) fi ;; solaris*) if test "x$CCPATH" = "x/usr/ucb/cc"; then AC_MSG_ERROR([ *** The solaris /usr/ucb/cc compiler does not work with this package. *** Please put a different compiler in your path first or run *** configure with --with-cc=XX, where XX is the compiler you want to use. ]) fi ;; esac AC_MSG_CHECKING(for additional cpp flags) dnl gcc extra CPPFLAGS if test "x$GCC" = "xyes" -a "x$CPP" = "x$CC -E"; then dnl extra cpp flags for gnu c compiler to allow .in file extensions. EXTRACPPFLAGS="-x c" else EXTRACPPFLAGS="" fi dnl Solaris extra cpp flags. if test "x$GCC" != "xyes"; then case $target_os in solaris*) EXTRACPPFLAGS="$EXTRACPPFLAGS -Xs" ;; esac fi AC_SUBST(EXTRACPPFLAGS) AC_MSG_RESULT($EXTRACPPFLAGS) dnl Prefixes must begin with "/" if test "x$prefix" = "xNONE"; then prefix=/usr/local fi fch=`echo $prefix | sed 's/\(.\).*/\1/'` if test $fch != "/" ; then prefix=`pwd`/$prefix echo "adjusting prefix to $prefix" fi if test "x$exec_prefix" = "xNONE"; then exec_prefix=$prefix fi fch=`echo $exec_prefix | sed 's/\(.\).*/\1/'` if test $fch != "/" ; then exec_prefix=`pwd`/$exec_prefix echo "adjusting exec_prefix to $exec_prefix" fi dnl Set SNMPLIBPATH & SNMPSHAREPATH SNMPLIBPATH="" tmpset="$libdir/snmp" while test "x$tmpset" != "x$SNMPLIBPATH"; do SNMPLIBPATH="$tmpset" eval tmpset="$tmpset" done AC_DEFINE_UNQUOTED(SNMPLIBPATH,"$SNMPLIBPATH") AC_DEFINE_UNQUOTED(SNMPDLMODPATH,"$SNMPLIBPATH/dlmod") SNMPSHAREPATH="" tmpset="$datadir/snmp" while test "x$tmpset" != "x$SNMPSHAREPATH"; do SNMPSHAREPATH="$tmpset" eval tmpset="$tmpset" done AC_DEFINE_UNQUOTED(SNMPSHAREPATH,"$SNMPSHAREPATH") if test "x$DEFAULT_MIBDIRS" = "x"; then AC_DEFINE_UNQUOTED(DEFAULT_MIBDIRS,"\$HOME/.snmp/mibs:$SNMPSHAREPATH/mibs") fi SNMPCONFPATH="" tmpset="$sysconfdir/snmp" while test "x$tmpset" != "x$SNMPCONFPATH"; do SNMPCONFPATH="$tmpset" eval tmpset="$tmpset" done AC_DEFINE_UNQUOTED(SNMPCONFPATH,"$SNMPCONFPATH") AC_SUBST(SNMPCONFPATH) dnl guess IPv6 stack type. if test "x$enable_ipv6" = "xyes"; then v6type=unknown v6lib=none v6trylibc=no AC_MSG_CHECKING([ipv6 stack type]) for i in v6d toshiba kame inria zeta linux-glibc linux-inet6; do case $i in v6d) AC_EGREP_CPP(yes, [dnl #include #ifdef __V6D__ yes #endif], [v6type=$i; v6lib=v6; v6libdir=/usr/local/v6/lib; CFLAGS="-I/usr/local/v6/include $CFLAGS"]) ;; toshiba) AC_EGREP_CPP(yes, [dnl #include #ifdef _TOSHIBA_INET6 yes #endif], [v6type=$i; v6lib=inet6; v6libdir=/usr/local/v6/lib; CFLAGS="-DINET6 $CFLAGS"]) ;; kame) AC_EGREP_CPP(yes, [dnl #include #ifdef __KAME__ yes #endif], [v6type=$i; v6lib=inet6; v6libdir=/usr/local/v6/lib; v6trylibc=yes; CFLAGS="-DINET6 $CFLAGS"]) ;; inria) AC_EGREP_CPP(yes, [dnl #include #ifdef IPV6_INRIA_VERSION yes #endif], [v6type=$i; v6lib=dummy; v6libdir=none; v6trylibc=yes; CFLAGS="-DINET6 $CFLAGS"]) ;; zeta) AC_EGREP_CPP(yes, [dnl #include #ifdef _ZETA_MINAMI_INET6 A yes #endif], [v6type=$i; v6lib=inet6; v6libdir=/usr/local/v6/lib; CFLAGS="-DINET6 $CFLAGS"]) ;; linux-glibc) AC_EGREP_CPP(yes, [dnl #include #if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC_ > 2)) yes #endif], [v6type=$i; v6lib=dummy; v6libdir=none; v6trylibc=yes; CFLAGS="-DINET6 $CFLAGS"]) ;; linux-inet6) if test -d /usr/inet6; then v6type=$i v6lib=inet6 v6libdir=/usr/inet6/lib CFLAGS="-DINET6 $CFLAGS" fi ;; esac if test "$v6type" != "unknown"; then break fi done if test "$v6lib" != "none"; then if test -d $v6libdir -a -f $v6libdir/lib$v6lib.a; then LIBS="-L$v6libdir -l$v6lib $LIBS" enable_ipv6="yes" AC_MSG_RESULT(["$v6type, $enable_ipv6, using lib$v6lib"]) elif test "$v6trylibc" = "yes"; then enable_ipv6="yes" AC_MSG_RESULT(["$v6type, $enable_ipv6, using libc"]) else AC_MSG_ERROR(no IPv6 library lib$v6lib.a found.) exit 1 fi else enable_ipv6="no" AC_MSG_RESULT(["$v6type, $enable_ipv6"]) fi fi dnl dnl Maybe add library extensions for thread mutex locking. dnl if test "x$with_res_locks" = "xyes"; then AC_DEFINE(NS_REENTRANT) EOF case $target_os in aix*) CC_RUNTIME_ARG="$CC_RUNTIME_ARG -lpthreads" ;; *) ;; esac fi AC_MSG_CHECKING(whether we have to build PIC code) echo "$with_mib_modules" | grep "ucd-snmp/dlmod" >/dev/null if test $? -eq 0 ; then DLLIBS="-ldl" LIB_CFLAGS="$LIB_CFLAGS $SHLIB_CFLAGS" AC_MSG_RESULT(yes) else DLLIBS="" AC_MSG_RESULT(no) fi dnl dnl Do hairy agent module processing. dnl changequote(, ) AC_MSG_CHECKING(for and configuring mib modules to use) mibdir="agent/mibgroup" module_list="" module_list_code="" new_with_mib_modules=`echo $with_mib_modules | sed 's/,/ /g;'` new_with_out_mib_modules=`echo $with_out_mib_modules | sed 's/,/ /g;'` new_module_list="mibII ucd_snmp snmpv3mibs notification agentx $new_with_mib_modules" default_mibs=IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB if test "x$mini_agent" = "xyes"; then new_with_out_mib_modules="mibII $new_with_out_mib_modules" new_module_list="snmpv3mibs mibII/snmp_mib mibII/system_mib mibII/sysORTable examples/ucdDemoPublic mibII/vacm_vars $new_with_mib_modules" default_mibs=SNMPv2-MIB:RFC1213-MIB default_mibs_install=" " fi if test "x$enable_ipv6" = "xyes"; then new_module_list="$new_module_list mibII/ipv6" fi dnl Create include file list for snmp_vars.h to use. if test ! -d agent; then mkdir agent fi if test ! -d agent/mibgroup; then mkdir agent/mibgroup fi for i in $mibdir/mib_module_includes.h $mibdir/mib_module_inits.h $mibdir/mib_module_shutdown.h mib_module_config.h $mibdir/mib_module_dot_conf.h; do rm -f $i echo "/* This file is automatically generated by configure. Do not modify by hand. */" > $i done test_modules="$new_module_list" new_module_list="" module_list_h="" for i in $test_modules do if echo " $new_with_out_mib_modules " | grep " $i " > /dev/null; then : else new_module_list="$new_module_list $i" fi done AC_MSG_RESULT($new_module_list.) AC_MSG_CHECKING(for and configuring mib modules pieces to use) while test "x$new_module_list" != "x"; do for i in $new_module_list do if echo " $new_with_out_mib_modules " | grep " $i " > /dev/null; then : else if test -f $srcdir/$mibdir/$i.h; then new_list="" new_list_arch=`grep config_arch_require $srcdir/$mibdir/$i.h | sed 's/.*config_arch_require(\(.*\), *\(.*\)).*/\1-xarchx-\2/'` if test "x$new_list_arch" != "x"; then for j in $new_list_arch do archtest=`echo $j | sed 's/-xarchx-.*//'` if test "x$target_os" = "x$archtest" -o "x$PARTIALTARGETOS" = "x$archtest"; then new_list="$new_list `echo $j | sed 's/.*-xarchx-//'`" fi done fi new_list="$new_list `grep config_require $srcdir/$mibdir/$i.h | sed 's/.*config_require(\(.*\)).*/\1/'`" if test "x$new_list" != "x"; then for j in $new_list do if test ! -f $srcdir/$mibdir/$j.h; then AC_MSG_ERROR(mib module "$i" requires module "$j" but $j.h or $j.c could not be found in $srcdir/$mibdir) elif echo " $new_with_out_mib_modules " | grep " $j " > /dev/null; then AC_MSG_WARN(mib module "$i" requires module "$j" but you told me to compile without it) elif echo " $module_list $new_list_two $new_module_list " | grep " $j " > /dev/null; then : else new_list_two="$new_list_two $j" fi done fi new_mibs=`grep config_add_mib $srcdir/$mibdir/$i.h | sed 's/.*config_add_mib(\(.*\)).*/\1/'` if test "x$new_mibs" != "x"; then for j in $new_mibs do if test "x`echo :$default_mibs: | grep :$j:`" = "x"; then default_mibs="$default_mibs:$j" fi if test -f $srcdir/mibs/$j.txt; then if echo $default_mibs_install | grep " $j " > /dev/null; then : else default_mibs_install="$default_mibs_install $j.txt" fi fi done fi else AC_MSG_ERROR(module files $i.h or $i.c could not be found in $srcdir/$mibdir) fi module_list="$module_list $i" echo '#include "'"mibgroup/$i.h"'"' >> $mibdir/mib_module_includes.h module_list_h="$module_list_h mibgroup/$i.h" if test -f $srcdir/$mibdir/$i.c; then module_list_code="$module_list_code $i" mnm=`echo $i | sed 's/.*\///;s/\.c$//;'` temp_init=`grep init_$mnm $srcdir/$mibdir/$i.c | grep -v _init_$mnm` if test "x$temp_init" != "x"; then echo " if (should_init(\"$mnm\")) init_$mnm();" >> $mibdir/mib_module_inits.h fi if grep shutdown_`basename $i` $srcdir/$mibdir/$i.c > /dev/null; then echo " if (should_init(\"`basename $i`\")) shutdown_`basename $i`();" >> $mibdir/mib_module_shutdown.h fi fi if test "x`echo $i | sed 's/\///g;'`" != "x$i"; then mnd=`echo $i | sed 's/\/[^/]*$//;'` if test ! -d ./$mibdir/$mnd; then module_directories="$module_directories ./$mibdir/$mnd" fi fi if grep config_load_mib $srcdir/$mibdir/$i.h > /dev/null 2>&1; then AC_MSG_WARN(mib module "$i" uses the "config_load_mib" directive, which is no longer supported. It probably won't work.) fi grep config_parse_dot_conf $srcdir/$mibdir/$i.h | sed 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@' >> $mibdir/mib_module_dot_conf.h sym="`echo ${i} | sed 's/[^a-zA-Z0-9_]/_/g' | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`" echo "/* Define if compiling with the ${i} module files. */" >> mib_module_config.h echo "#define USING_${sym}_MODULE 1" >> mib_module_config.h echo " " >> mib_module_config.h echo $ac_n " $i$ac_c" >&AC_FD_MSG fi done new_module_list="$new_list_two" new_list_two="" done module_list_o=`echo "$module_list_code " | sed 's/\([^ ]\) /\1.o /g'` module_list_lo=`echo "$module_list_code " | sed 's/\([^ ]\) /\1.lo /g'` module_list_c=`echo "$module_list_code " | sed 's/\([^ ]\) /\1.c /g'` mibgroup_list_o=`echo " $module_list_o " | sed 's@ \([^ ]*\)\.o@ mibgroup/\1.o @g'` mibgroup_list_lo=`echo " $module_list_lo " | sed 's@ \([^ ]*\)\.lo@ mibgroup/\1.lo @g'` changequote([, ]) AC_SUBST(module_list_c) AC_SUBST(module_list_h) AC_SUBST(module_list_o) AC_SUBST(module_list_lo) AC_SUBST(mibgroup_list_o) AC_SUBST(mibgroup_list_lo) AC_SUBST(default_mibs_install) AC_MSG_RESULT(.) AC_MSG_CHECKING(if directories need to be created) for i in $module_directories; do $srcdir/mkinstalldirs $i done AC_MSG_RESULT(.) AC_MSG_CHECKING(default mib files to read) if test "x$DEFAULT_MIBS" = "x"; then DEFAULT_MIBS="$default_mibs" fi AC_DEFINE_UNQUOTED(DEFAULT_MIBS,"$DEFAULT_MIBS") AC_MSG_RESULT($DEFAULT_MIBS) dnl dnl Check for kernel location dnl AC_CACHE_CHECK(for location of system kernel,ac_cv_KERNEL_LOC, [ac_cv_KERNEL_LOC="unknown" dnl First determine if test expects a -f or a -c (character device (SYSV)) if test -c /dev/null; then CFLAG="-c" elif test -f /dev/null; then CFLAG="-f" else dnl fall back CFLAG="-f" fi for i in /vmunix /hp-ux /stand/vmunix /dev/ksyms /kernel/unix /kernel/genunix /netbsd /unix /kernel /bsd /mach_kernel do if test -f $i -o $CFLAG $i; then ac_cv_KERNEL_LOC="$i" break; fi done if test $i = "unknown"; then AC_MSG_WARN(Can't find system kernel... Setting to /vmunix) ac_cv_KERNEL_LOC="/vmunix" fi ]) AC_DEFINE_UNQUOTED(KERNEL_LOC,"$ac_cv_KERNEL_LOC") dnl dnl Check for mount table location dnl AC_CACHE_CHECK(for mount table location,ac_cv_ETC_MNTTAB, [ac_cv_ETC_MNTTAB="unknown" for i in /etc/mnttab /etc/mtab do if test -f $i; then ac_cv_ETC_MNTTAB="$i" break; fi done ]) AC_DEFINE_UNQUOTED(ETC_MNTTAB,"$ac_cv_ETC_MNTTAB") dnl Check for /dev/dmem or /dev/drum location AC_CACHE_CHECK(for location of swap device,ac_cv_DMEM_LOC, [ dnl First determine if test expects a -f or a -c (character device (SYSV)) if test -f /dev/kmem; then CTEST="test -f" elif test -c /dev/kmem; then CTEST="test -c" else dnl fall back CTEST="test -f" fi if $CTEST /dev/dmem; then ac_cv_DMEM_LOC="/dev/dmem" elif $CTEST /dev/drum; then ac_cv_DMEM_LOC="/dev/drum" else ac_cv_DMEM_LOC="none" fi ]) if test "x$ac_cv_DMEM_LOC" != "xnone"; then AC_DEFINE_UNQUOTED(DMEM_LOC,"$ac_cv_DMEM_LOC") fi dnl efence if test "x$developer" = "xyes" -a "x$use_efence" != "xno"; then use_efence="yes" fi if test "x$use_efence" = "xyes"; then AC_CHECK_LIB(efence, EF_Exit) fi dnl Checks for libraries. dnl AC_CHECK_LIB(des, main) AC_CHECK_LIB(elf, nlist) AC_CHECK_LIB(m, asin) dnl On some platforms (Irix) libnsl and libsocket should not be used. AC_CHECK_FUNC(gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME), AC_CHECK_LIB(nsl, gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME) LIBS="${LIBS} -lnsl")) AC_CHECK_FUNC(getservbyname, AC_DEFINE(HAVE_GETSERVBYNAME), AC_CHECK_LIB(socket, getservbyname, AC_DEFINE(HAVE_GETSERVBYNAME) LIBS="${LIBS} -lsocket")) dnl AC_CHECK_LIB(ucb, bzero) dnl check for tcp wrapper support _cppflags="${CPPFLAGS}" _ldflags="${LDFLAGS}" AC_ARG_WITH(libwrap, [ --with-libwrap[=LIBPATH] Compile in libwrap (tcp_wrappers) support.],[ if test "$with_libwrap" != "no"; then if test "$with_libwrap" != "yes"; then CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include" LDFLAGS="${LDFLAGS} -L$with_libwrap/lib" fi _libs=${LIBS} AC_CHECK_HEADER(tcpd.h, LIBS="$LIBS -lwrap" AC_MSG_CHECKING(for TCP wrappers library -lwrap) AC_TRY_LINK([#include int allow_severity = 0; int deny_severity = 0; ],[hosts_access((void *)0)], AC_MSG_RESULT(yes) AC_DEFINE(USE_LIBWRAP) test "$with_libwrap" != no -a "$with_libwrap" != yes && WRAPLIBS="-L$with_libwrap/lib" WRAPLIBS="$WRAPLIBS -lwrap", AC_MSG_RESULT(no) dnl Linux RedHat 6.1 won't link libwrap without libnsl AC_CHECK_FUNC(yp_get_default_domain, , AC_CHECK_LIB(nsl, yp_get_default_domain)) AC_MSG_CHECKING(for TCP wrappers library -lwrap linked with -lnsl) AC_TRY_LINK([#include int allow_severity = 0; int deny_severity = 0; ],[hosts_access((void *)0)], AC_MSG_RESULT(yes) test "$with_libwrap" != no -a "$with_libwrap" != yes && WRAPLIBS="-L$with_libwrap/lib" WRAPLIBS="$WRAPLIBS -lwrap", AC_MSG_RESULT(no)), CPPFLAGS=${_cppflags}), CPPFLAGS=${_cppflags}) LDFLAGS=${_ldflags} LIBS=${_libs} fi ]) dnl ARG. RPM is a real pain. AC_CHECK_LIB(popt, poptParseArgvString) dnl zlib is required for newer versions of rpm _cppflags="${CPPFLAGS}" _ldflags="${LDFLAGS}" AC_ARG_WITH(zlib, [ --with-zlib[=DIR] use libz in DIR],[ if test -d "$withval"; then CPPFLAGS="${CPPFLAGS} -I$withval/include" LDFLAGS="${LDFLAGS} -L$withval/lib" fi ]) AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, gzread, , CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}), CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}) dnl dnl with rpm3 or higher, we need db1 to exist dnl AC_CHECK_LIB(db1, dbopen,[ AC_DEFINE(HAVE_LIBDB) LIBS="-ldb1 $LIBS" ],,-lz) dnl Ok, -ldb1 may not exist, try -ldb _cppflags="${CPPFLAGS}" _ldflags="${LDFLAGS}" AC_ARG_WITH(db, [ --with-db[=DIR] use db in DIR],[ if test -d "$withval"; then CPPFLAGS="${CPPFLAGS} -I$withval/include" LDFLAGS="${LDFLAGS} -L$withval/lib" fi ]) if test "x$ac_cv_lib_db1_dbopen" = "xno"; then AC_CHECK_HEADER(db.h, AC_CHECK_LIB(db, dbopen,[ AC_DEFINE(HAVE_LIBDB) LIBS="-ldb $LIBS" ], CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}), CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}) fi dnl dnl now check for rpm using the appropriate db library dnl AC_CHECK_LIB(rpm, rpmdbOpen,[ AC_DEFINE(HAVE_LIBRPM) LIBS="-lrpm $LIBS" CFLAGS="$CFLAGS -I/usr/include/rpm" ],,-lz) dnl dnl now check for rpm using the appropriate db library dnl if test x$ac_cv_lib_rpm_rpmdbOpen = xno; then unset ac_cv_lib_rpm_rpmdbOpen AC_CHECK_LIB(rpm, rpmdbOpen,[ AC_DEFINE(HAVE_LIBRPM) LIBS="-lrpm -lpopt $LIBS" CFLAGS="$CFLAGS -I/usr/include/rpm" ],,-lpopt -lz) fi dnl Replace `main' with a function in -lkstat: AC_CHECK_LIB(kstat, kstat_lookup) dnl Replace `main' with a function in -lkvm: AC_CHECK_LIB(kvm, kvm_read) dnl Check for nlist in mld (irix) AC_CHECK_LIB(mld, nlist) dnl DYNAMIC MODULE SUPPORT AC_CHECK_LIB(dl, dlopen) dnl Check for security related functions if test "x$tryopenssl" != "xno"; then if test "x$tryrsaref" != "xno"; then AC_CHECK_LIB(rsaref, RSAPrivateDecrypt) AC_CHECK_LIB(RSAglue, RSA_PKCS1_RSAref) fi AC_CHECK_LIB(crypto, EVP_md5) fi dnl Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(stdarg.h string.h fcntl.h limits.h sys/file.h sys/ioctl.h syslog.h unistd.h netinet/tcpip.h netinet/in.h netinet/ip.h netinet/ip_icmp.h net/if.h netdb.h sys/dmap.h machine/pte.h xti.h sys/sockio.h sys/socket.h sys/un.h fstab.h sys/fs.h mtab.h ufs/fs.h ufs/ffs/fs.h sys/fixpoint.h machine/param.h sys/vm.h vm/vm.h sys/vmmeter.h sys/vmparam.h sys/vmmac.h sys/vmsystm.h sys/mbuf.h sys/time.h sys/swap.h inet/mib2.h sys/statvfs.h sys/vfs.h sys/mnttab.h sys/user.h sys/proc.h sys/select.h mntent.h sys/mntent.h kstat.h utsname.h sys/utsname.h sys/cdefs.h getopt.h locale.h pthread.h sys/loadavg.h regex.h linux/tasks.h pwd.h grp.h utmpx.h) dnl FreeBSD required headers AC_CHECK_HEADERS(malloc.h sys/param.h net/if_dl.h sys/sysctl.h stdlib.h net/if_mib.h net/if_types.h net/if_var.h sys/queue.h osreldate.h sys/disklabel.h machine/types.h sys/socketvar.h) dnl Linux AC_CHECK_HEADERS(sys/conf.h netinet/in_systm.h netinet/tcp.h netinet/udp.h netinet/in_var.h netinet/if_ether.h netinet/ip_var.h netinet/tcp_timer.h netinet/tcp_var.h netinet/tcp_fsm.h netinet/udp_var.h netinet/icmp_var.h sys/protosw.h nlist.h ioctls.h asm/page.h) dnl NetBSD required headers AC_CHECK_HEADERS(arpa/inet.h kvm.h sys/pool.h) dnl BSDi2 headers AC_CHECK_HEADERS(sys/mount.h vm/swap_pager.h ufs/ufs/dinode.h) dnl BSDi3 headers AC_CHECK_HEADERS(sys/stat.h sys/vnode.h ufs/ufs/quota.h ufs/ufs/inode.h) dnl irix headers AC_CHECK_HEADERS(sys/hashing.h sys/tcpipstats.h sys/sysmp.h) dnl from smux stuff AC_CHECK_HEADERS(err.h sys/filio.h sgtty.h) dnl AIX needs this for statfs func AC_CHECK_HEADERS(sys/statfs.h) dnl Dynix AC_CHECK_HEADERS(net/route.h) dnl for HostRes (HP-UX at least) AC_CHECK_HEADERS(sys/dkio.h sys/diskio.h sys/pstat.h linux/hdreg.h pkglocs.h) dnl for HostRes (Solaris 2.x at least) AC_CHECK_HEADERS(pkginfo.h, AC_CHECK_LIB(adm, pkginfo, AC_DEFINE(HAVE_PKGINFO) LIBS="${LIBS} -ladm")) dnl WIN32 AC_CHECK_HEADERS(winsock.h io.h) dnl SCO AC_CHECK_HEADERS(sys/stream.h) dnl KAME AC_CHECK_HEADERS(netinet/ip6.h netinet6/in6_var.h netinet6/in6_pcb.h netinet6/ip6_var.h netinet6/tcp6.h netinet6/tcp6_fsm.h netinet6/nd6.h netinet6/tcp6_timer.h netinet6/tcp6_var.h) dnl DYNAMIC MODULE SUPPORT AC_CHECK_HEADERS(dlfcn.h) dnl OpenBSD 2.6 needs netinet/in.h before netinet/in_pcb.h AC_MSG_CHECKING([for netinet/in_pcb.h]) AC_CACHE_VAL(cv_have_netinet_in_pcb_h, [ AC_TRY_CPP( [ #include #include ], cv_have_netinet_in_pcb_h=yes, cv_have_netinet_in_pcb_h=no)]) AC_MSG_RESULT($cv_have_netinet_in_pcb_h) if test $cv_have_netinet_in_pcb_h = yes; then AC_DEFINE(HAVE_NETINET_IN_PCB_H) fi dnl OpenSSL AC_CHECK_HEADERS(openssl/hmac.h openssl/evp.h) dnl Printing AC_PATH_PROG(LPSTAT_PATH,lpstat) if test x$LPSTAT_PATH != x; then AC_DEFINE_UNQUOTED(LPSTAT_PATH,"$LPSTAT_PATH") AC_DEFINE(HAVE_LPSTAT) fi AC_CHECK_FUNCS(cgetnext) if test -r /etc/printcap; then AC_DEFINE(HAVE_PRINTCAP) fi AC_MSG_CHECKING(for authentication support) if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes"; then dnl if OpenSSL is not found, default to using internal md5 support. AC_DEFINE(USE_INTERNAL_MD5) AC_MSG_RESULT(Internal MD5 Support) if test "x$askedopenssl" = "xyes"; then AC_MSG_ERROR(Asked to use OpenSSL but I couldn't find it.) fi else if test "x$tryopenssl" = "xno"; then AC_DEFINE(USE_INTERNAL_MD5) AC_MSG_RESULT(Internal MD5 Support) else AC_DEFINE(USE_OPENSSL) AC_MSG_RESULT(OpenSSL Support) fi fi dnl Checks for typedefs, structures, and compiler characteristics. AC_TYPE_OFF_T AC_TYPE_PID_T AC_HEADER_TIME dnl AIX keeps in_addr_t in /usr/include/netinet/in.h AC_MSG_CHECKING(for in_addr_t) AC_CACHE_VAL(ac_cv_type_$1, [AC_EGREP_CPP(dnl changequote(<<,>>)dnl <>dnl changequote([,]), [#include #if STDC_HEADERS #include #include #endif #ifdef HAVE_NETINET_IN_H #include #endif], ac_cv_type_in_addr_t=yes, ac_cv_type_in_addr_t=no)])dnl AC_MSG_RESULT($ac_cv_type_in_addr_t) if test $ac_cv_type_in_addr_t = no; then AC_DEFINE(in_addr_t, u_int) fi dnl Check ps args AC_CACHE_CHECK(for correct flags to ps, ac_cv_ps_flags, [if test "`($PSPROG -e 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then ac_cv_ps_flags="-e" elif test "`($PSPROG -el 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then ac_cv_ps_flags="-el" elif test "`($PSPROG acx 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then ac_cv_ps_flags="acx" elif test "`($PSPROG -acx 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then ac_cv_ps_flags="-acx" elif test "`($PSPROG -o pid,tt,state,time,ucomm 2>&1) | egrep ' ps *$' | awk '{print $NF}'`" = "ps" ; then ac_cv_ps_flags="-o pid,tt,state,time,ucomm" elif test "`($PSPROG ax 2>&1) | egrep ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then ac_cv_ps_flags="ax" else AC_MSG_WARN(Unable to determine valid ps flags... defaulting...) ac_cv_ps_flags="-acx" fi ]) AC_DEFINE_UNQUOTED(PSCMD, "$PSPROG $ac_cv_ps_flags") dnl Checks for byte order if test $cross_compiling = yes; then if test $with_endianness = "big"; then AC_DEFINE(WORDS_BIGENDIAN) elif test -z $with_endianness; then AC_MSG_ERROR([You are cross-compiling, but you have not specified the target's endianness]) fi else if test $with_endianness; then AC_MSG_ERROR([Endianness has been specified, but you are not cross-compiling.]) fi AC_C_BIGENDIAN fi dnl Checks for library functions. AC_FUNC_ALLOCA AC_PROG_GCC_TRADITIONAL AC_FUNC_MEMCMP AC_TYPE_SIGNAL AC_FUNC_GETMNTENT AC_CHECK_FUNCS(setmntent gethostname uname gettimeofday select socket strtol strtoul) AC_CHECK_FUNCS(strchr strdup memcpy memmove index bcopy strcasestr regcomp) AC_CHECK_FUNCS(signal sigset sigblock sighold strerror setenv vsnprintf snprintf) AC_CHECK_FUNCS(sigaction) AC_CHECK_FUNCS(snprintf strtoul) AC_CHECK_FUNCS(random lrand48 rand) AC_CHECK_FUNCS(execv system fork getpid strncasecmp sigalrm) AC_CHECK_FUNCS(rpmGetPath) AC_CHECK_FUNCS(getloadavg) AC_CHECK_FUNCS(kvm_openfiles nlist knlist) dnl BSDi2 functions differ AC_CHECK_FUNCS(statvfs statfs) AC_CHECK_FUNCS(getdtablesize) dnl freebsd2 checks AC_CHECK_FUNCS(getfsstat kvm_getprocs) AC_CHECK_FUNCS(usleep) AC_CHECK_FUNCS(setlocale) AC_CHECK_FUNCS(tcgetattr) AC_CHECK_FUNCS(if_nameindex if_freenameindex) dnl solaris checks AC_CHECK_FUNCS(getpagesize) dnl DYNAMIC MODULE SUPPORT AC_CHECK_FUNCS(dlopen) AC_CHECK_FUNCS(mkstemp) AC_CHECK_FUNCS(getpwnam getgrnam setgid setuid setgroups) AC_MSG_CHECKING([for SIOCGIFADDR in sys/ioctl.h]) AC_CACHE_VAL(cv_sys_ioctl_h_has_SIOCGIFADDR, [ AC_EGREP_CPP(xxxyesxxx, [ #ifdef HAVE_SYS_IOCTL_H #include #endif #ifdef SIOCGIFADDR xxxyesxxx #endif ], cv_sys_ioctl_h_has_SIOCGIFADDR=yes, cv_sys_ioctl_h_has_SIOCGIFADDR=no)]) AC_MSG_RESULT($cv_sys_ioctl_h_has_SIOCGIFADDR) if test $cv_sys_ioctl_h_has_SIOCGIFADDR = yes; then AC_DEFINE(SYS_IOCTL_H_HAS_SIOCGIFADDR) fi # ultrix AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) AC_CACHE_VAL(fu_cv_sys_stat_fs_data, [AC_TRY_RUN([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #ifdef HAVE_SYS_MOUNT_H #include #endif #ifdef HAVE_SYS_FS_TYPES_H #include #endif main () { struct fs_data fsd; /* Ultrix's statfs returns 1 for success, 0 for not mounted, -1 for failure. */ exit (statfs (".", &fsd) != 1); }], fu_cv_sys_stat_fs_data=yes, fu_cv_sys_stat_fs_data=no, fu_cv_sys_stat_fs_data=no)]) AC_MSG_RESULT($fu_cv_sys_stat_fs_data) if test $fu_cv_sys_stat_fs_data = yes; then AC_DEFINE(STAT_STATFS_FS_DATA) fi dnl check if compiler pre-processor defines __FUNCTION__ AC_CACHE_CHECK(if __FUNCTION__ is defined,ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED, [ AC_TRY_COMPILE(,[ char *cp = __FUNCTION__; ], ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED=yes, ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED=no)]) if test "x$ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED" = "xyes"; then AC_DEFINE(HAVE_CPP_UNDERBAR_FUNCTION_DEFINED) fi AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #include ], sigaction, sa_sigaction, no) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL ], sockaddr, sa_len, no) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL ], sockaddr, sa_union.sa_generic.sa_family2, no) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_dst, no) dnl checking for 4.3 vs 4.4 rtentry. AC_CACHE_CHECK(type of rtentry structure,ac_cv_RTENTRY_TYPE, [ dnl 4.4 compat AC_TRY_COMPILE([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ],[ #ifndef STRUCT_RTENTRY_HAS_RT_DST #define rt_dst rt_nodes->rn_key #endif struct rtentry rt; rt.rt_nodes[0].rn_flags = 1; rt.rt_dst; ], ac_cv_RTENTRY_TYPE="BSD-4.4") dnl 4.3 compat if test "x$ac_cv_RTENTRY_TYPE" = "x"; then AC_TRY_COMPILE([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ],[ struct rtentry rt; rt.rt_hash; ], ac_cv_RTENTRY_TYPE="BSD-4.3") fi dnl else ack. if test "x$ac_cv_RTENTRY_TYPE" = "x"; then AC_MSG_RESULT(Unknown) ac_cv_RTENTRY_TYPE="unknown" fi ]) if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.4"; then AC_DEFINE(RTENTRY_4_4) fi dnl checking for alpha's ortentry vs rtentry if test "x$ac_cv_RTENTRY_TYPE" = "xunknown"; then AC_CACHE_CHECK(for struct rtentry, ac_cv_struct_rtentry, [AC_EGREP_CPP(ortentry, [#define KERNEL #include ], ac_cv_struct_rtentry=ortentry, ac_cv_struct_rtentry=rtentry ) if test "x$ac_cv_struct_rtentry" = "xrtentry" ; then ac_cv_struct_rtentry="rtentry" else ac_cv_struct_rtentry="ortentry" fi ]) else RTENTRY_TYPE="rtentry" ac_cv_struct_rtentry="rtentry" fi if test "x$ac_cv_struct_rtentry" != "x"; then AC_DEFINE_UNQUOTED(RTENTRY,struct ${ac_cv_struct_rtentry}) else AC_DEFINE(RTENTRY,struct rtentry) fi dnl check for 4.3's rtentry->rt_next if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.3"; then AC_CACHE_CHECK(for struct rtentry has a rt_next node, ac_cv_struct_rtentry_rt_next, [ AC_TRY_COMPILE([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ],[ struct rtentry rt; rt.rt_next; ], ac_cv_struct_rtentry_rt_next=yes, ac_cv_struct_rtentry_rt_next=no ) ]) if test "x$ac_cv_struct_rtentry_rt_next" = "xyes"; then AC_DEFINE(RTENTRY_RT_NEXT) fi fi dnl Check struct rtentry for various things. AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_unit) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_refcnt) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_hash) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #define KERNEL #define _KERNEL #include #undef KERNEL #undef _KERNEL #include ], rtentry, rt_use) dnl Check tcpstat for tcpstat.tcp_rcvmemdrop AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #include #ifdef HAVE_NETINET_TCP_TIMER_H #include #endif #ifdef HAVE_NETINET_TCP_VAR_H #include #endif ], tcpstat, tcp_rcvmemdrop) dnl irix checks AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #include #include #ifdef HAVE_NET_IF_VAR_H #include #endif ], ifnet, if_mtu) if test "x$ac_cv_struct_ifnet_has_if_mtu" = "xno"; then AC_CACHE_CHECK(if _KERNEL needs to be defined for if_mtu, ac_cv_IFNET_NEEDS_KERNEL, [ if test "x$ac_cv_struct_ifnet_has_if_mtu" = "xyes"; then ac_cv_IFNET_NEEDS_KERNEL=no else AC_TRY_COMPILE([ #define _KERNEL 1 #ifdef HAVE_SYS_PARAM_H #include #endif #include #include #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef HAVE_NET_IF_VAR_H #include #endif ],[ struct ifnet testit; testit.if_mtu = 0; ], ac_cv_IFNET_NEEDS_KERNEL=yes, ac_cv_IFNET_NEEDS_KERNEL=no) fi ]) if test "x$ac_cv_IFNET_NEEDS_KERNEL" = "xyes"; then AC_DEFINE(IFNET_NEEDS_KERNEL) fi fi AC_CHECK_STRUCT_FOR([ #ifdef IFNET_NEEDS_KERNEL #define _KERNEL 1 #endif #ifdef HAVE_SYS_PARAM_H #include #endif #include #include #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef HAVE_NET_IF_VAR_H #include #endif ], ifaddr, ifa_next) dnl Check ifnet entries using macro defined in aclocal.m4. dnl dnl XXX Broken on FreeBSD where these are #define'd in dnl AC_CHECK_IFNET_FOR(if_baudrate) AC_CHECK_IFNET_FOR(if_baudrate.ifs_value) AC_CHECK_IFNET_FOR(if_speed) AC_CHECK_IFNET_FOR(if_type) AC_CHECK_IFNET_FOR(if_imcasts) AC_CHECK_IFNET_FOR(if_iqdrops) AC_CHECK_IFNET_FOR(if_noproto) AC_CHECK_IFNET_FOR(if_omcasts) AC_CHECK_IFNET_FOR(if_xname,no) AC_CHECK_IFNET_FOR(if_lastchange.tv_sec) AC_CHECK_IFNET_FOR(if_obytes) AC_CHECK_IFNET_FOR(if_ibytes) AC_CHECK_IFNET_FOR(if_addrlist) AC_CHECK_IFNET_FOR(if_addrhead.tqh_first) AC_CHECK_STRUCT_FOR([ #if HAVE_SYS_TYPES_H #include #endif #if HAVE_NETINET_IN_H #include #endif #if HAVE_NETINET_IP_VAR_H #include #endif #if HAVE_NETINET_UDP_H #include #endif #if HAVE_NETINET_UDP_VAR_H #include #endif ],udpstat,udps_discard) AC_CHECK_STRUCT_FOR([ #if HAVE_SYS_TYPES_H #include #endif #if HAVE_NETINET_IN_H #include #endif #if HAVE_NETINET_IP_VAR_H #include #endif #if HAVE_NETINET_UDP_H #include #endif #if HAVE_NETINET_UDP_VAR_H #include #endif ],udpstat,udps_noport) AC_CHECK_STRUCT_FOR([ #if HAVE_SYS_TYPES_H #include #endif #if HAVE_NETINET_IN_H #include #endif #if HAVE_NETINET_IP_VAR_H #include #endif #if HAVE_NETINET_UDP_H #include #endif #if HAVE_NETINET_UDP_VAR_H #include #endif ],udpstat,udps_noportbcast) AC_CHECK_STRUCT_FOR([ #if HAVE_SYS_TYPES_H #include #endif #if HAVE_NETINET_IN_H #include #endif #if HAVE_NETINET_IP_VAR_H #include #endif #if HAVE_NETINET_UDP_H #include #endif #if HAVE_NETINET_UDP_VAR_H #include #endif ],udpstat,udps_fullsock) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_PARAM_H #include #endif #include #include #ifdef HAVE_SYS_TIME_H #include #endif #include #if HAVE_NETINET_IN_H #include #endif #if HAVE_NETINET_IF_ETHER_H #include #endif ],arphd,at_next) AC_CHECK_STRUCT_FOR([ #if HAVE_SYS_CONF_H #include #endif ],swdevt,sw_nblksenabled) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_STAT_H #include #endif #if HAVE_SYS_STATFS_H #include #endif #if HAVE_SYS_STATVFS_H #include #endif ],statvfs,f_frsize) AC_CHECK_STRUCT_FOR([ #ifdef HAVE_SYS_STAT_H #include #endif #if HAVE_SYS_STATFS_H #include #endif #if HAVE_SYS_STATVFS_H #include #endif ],statvfs,f_files) AC_CHECK_STRUCT_FOR([ #if HAVE_NLIST_H #include #endif ],nlist,n_value) dnl attempt to figure out if sysctl is usable if test $cross_compiling = yes; then AC_MSG_WARN([Can't check sysctl, manually define CAN_USE_SYSCTL if platform support available]) else AC_CACHE_CHECK(if sysctl can read kernel information,ac_cv_CAN_USE_SYSCTL, [AC_TRY_RUN([ #if TIME_WITH_SYS_TIME # include # include #else # if HAVE_SYS_TIME_H # include # else # include # endif #endif #if HAVE_SYS_PARAM_H # include #endif #include #if HAVE_SYS_SYSCTL_H # include #endif main() { int mib[2]; size_t len; struct timeval boottime; mib[0] = CTL_KERN; mib[1] = KERN_BOOTTIME; len = sizeof(boottime); sysctl(mib, 2, &boottime, &len, NULL, NULL); if (boottime.tv_sec != 0) exit(0); else exit(1); } ], ac_cv_CAN_USE_SYSCTL=yes, ac_cv_CAN_USE_SYSCTL=no, ac_cv_CAN_USE_SYSCTL=no)]) fi if test "x$ac_cv_CAN_USE_SYSCTL" = "xyes"; then AC_DEFINE(CAN_USE_SYSCTL) fi dnl dnl In FreeBSD 4.x, the TCP timer constants aren't. They are defined dnl in terms of `hz', the kernel clock tick. In this case, dnl we need to have a local variable `hz' in scope and set to a useful dnl value whenever we use one of these constants. dnl AC_CACHE_CHECK(whether TCP timers depend on \`hz',ac_cv_TCPTV_NEEDS_HZ, [AC_EGREP_CPP(hz, [#include TCPTV_SRTTDFLT ], ac_cv_TCPTV_NEEDS_HZ=yes, ac_cv_TCPTV_NEEDS_HZ=no)]) if test "x$ac_cv_TCPTV_NEEDS_HZ" = "xyes"; then AC_DEFINE(TCPTV_NEEDS_HZ) fi dnl dnl Prompt for various bits of user information dnl if test "x$ac_cv_user_prompt_LOGFILE" = "x" -o "x$ac_cv_user_prompt_SYS_LOC" = "x" -o "x$ac_cv_user_prompt_SYS_CONTACT" = "x"; then AC_CACHE_CHECK(if you have run configure before, ac_cv_have_warned, [ if test "x$defaults" = "xno"; then cat << EOF ************** Configuration Section ************** You are about to be prompted with a series of questions. Answer them carefully, as they determine how the snmp agent and related applications are to function. After the configure script finishes, you can browse the newly created config.h file for further - less important - parameters to modify. Be careful if you re-run configure though, since config.h will be overwritten. -Press return to continue- EOF read tmpinput ac_cv_have_warned="yes" echo $ac_n "disabling above prompt for future runs... $ac_c" else ac_cv_have_warned="no" fi ]) else ac_cv_have_warned="yes" fi ME=`$WHOAMI` if test -f /etc/resolv.conf; then LOC=`cat /etc/resolv.conf | grep '^domain' | tail -1 | awk '{print $NF}'` else LOC="@no.where" fi AC_PROMPT_USER(SYS_CONTACT,[ *** System Contact Information: Describes who should be contacted about the host the agent is running on. This information is available in the MIB-II tree. This can also be over-ridden using the \"syscontact\" syntax in the agent's configuration files. System Contact Information],$ME@$LOC,1) AC_PROMPT_USER(SYS_LOC,[ *** System Location: Describes the location of the system. This information is available in the MIB-II tree. this can also be over-ridden using the \"syslocation\" syntax in the agent's configuration files. System Location],Unknown,1) if test -d /var/log; then defaultlog="/var/log/snmpd.log" else defaultlog="/usr/adm/snmpd.log" fi AC_PROMPT_USER(LOGFILE,[ *** Logfile location: Enter the default location for the snmpd agent to dump information & errors to. If not defined (enter the keyword \"none\" at the prompt below) the agent will use stdout and stderr instead. (Note: This value can be over-ridden using command line options.) Location to write logfile],$defaultlog,1) if test -d /var; then defaultstore="/var/ucd-snmp" else defaultstore="/etc/ucd-snmp" fi AC_PROMPT_USER(PERSISTENT_DIRECTORY,[ *** snmpd persistent storage location: Enter a directory for the snmp library to store persistent data in the form of a configuration file. Location to write persistent information],$defaultstore,1) PERSISTENT_DIRECTORY=$ac_cv_user_prompt_PERSISTENT_DIRECTORY AC_SUBST(PERSISTENT_DIRECTORY) AC_SUBST(DLLIBS) AC_OUTPUT([ Makefile:Makefile.top:Makefile.in snmplib/Makefile:Makefile.top:snmplib/Makefile.in agent/Makefile:Makefile.top:agent/Makefile.in apps/Makefile:Makefile.top:apps/Makefile.in apps/snmpnetstat/Makefile:Makefile.top:apps/snmpnetstat/Makefile.in agent/mibgroup/Makefile:Makefile.top:agent/mibgroup/Makefile.in local/Makefile:Makefile.top:local/Makefile.in testing/Makefile:Makefile.top:testing/Makefile.in man/Makefile:Makefile.top:man/Makefile.in ov/Makefile:Makefile.top:ov/Makefile.in mibs/Makefile:Makefile.top:mibs/Makefile.in ], echo timestamp > stamp-h) dnl Local Variables: dnl mode: Autoconf dnl comment-start: "dnl" dnl End: