# ifdef HAVE_INTTYPES_H
#include <inttypes.h>
# endif
- #include <glib.h>
+ #include <glibconfig.h>
#include <stdio.h>
#include <sys/types.h>
# needed after the library *and* to cache all that
# information.
#
- ac_save_LIBS="$LIBS"
+ ethereal_save_LIBS="$LIBS"
+ found_sprint_realloc_objid=no
for extras in "" "-L/usr/kerberos/lib -ldes425" "-lkstat"
do
LIBS="-lsnmp $extras $SOCKET_LIBS $NSL_LIBS $SSL_LIBS"
+ if test -z "$extras"
+ then
+ AC_MSG_CHECKING([whether UCD SNMP includes sprint_realloc_objid])
+ else
+ AC_MSG_CHECKING([whether UCD SNMP includes sprint_realloc_objid (linking with $extras)])
+ fi
AC_TRY_LINK(
- [
- ],
- [
+ [
+ ],
+ [
sprint_realloc_objid();
- ],
- [
+ ],
+ [
#
# We found "sprint_realloc_objid()",
# and required the libraries in
# extras as well.
#
+ AC_MSG_RESULT(yes)
SNMP_LIBS="-lsnmp $extras"; break;
- ],
- [
+ found_sprint_realloc_objid=yes
+ break
+ ],
+ [
#
# The link failed. If they didn't ask
# for SSL, try linking with -lcrypto
# tell them they'll need to specify
# --want-ssl.
#
+ AC_MSG_RESULT(no)
if test "x$want_ssl" = "xno"
then
LIBS="$LIBS -lcrypto"
AC_MSG_ERROR([UCD SNMP requires -lcrypto but --with-ssl not specified])
])
fi
- ])
+ ])
done
- LIBS=$ac_save_LIBS
+ LIBS="$ethereal_save_LIBS"
#
# If we didn't find "sprint_realloc_objid()", fail.
# with "sprint_realloc_objid()", or they may need to
# specify "--with-ssl".
#
- if test "$ac_cv_lib_snmp_sprint_realloc_objid" = no; then
+ if test "$found_snmp_sprint_realloc_objid" = no; then
AC_MSG_ERROR([UCD SNMP header files found, but sprint_realloc_objid not found in SNMP library.])
fi
#
CFLAGS="$CFLAGS -I$krb5_dir/include"
CPPFLAGS="$CPPFLAGS -I$krb5_dir/include"
- KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lasn1 $SSL_LIBS -lroken -lcrypt"
- ac_krb5_version=`grep heimdal $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*heimdal.*$/HEIMDAL/'`
+ ac_heimdal_version=`grep heimdal $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*heimdal.*$/HEIMDAL/'`
+ ac_mit_version=`grep 'Massachusetts Institute of Technology' $krb5_dir/include/krb5.h | head -n 1 | sed 's/^.*Massachusetts Institute of Technology.*$/MIT/'`
+ ac_krb5_version="$ac_heimdal_version$ac_mit_version"
+ if test "x$ac_krb5_version" = "xHEIMDAL"
+ KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lasn1 $SSL_LIBS -lroken -lcrypt"
+ then
+ KRB5_LIBS="-L$krb5_dir/lib -lkrb5 -lk5crypto -lcom_err"
+ fi
+ if test "x$ac_krb5_version" = "xMIT"
+ then
+ AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos])
+ fi
else
AC_PATH_PROG(KRB5_CONFIG, krb5-config)
if test -x "$KRB5_CONFIG"
then
KRB5_FLAGS=`"$KRB5_CONFIG" --cflags`
+ KRB5_LIBS=`"$KRB5_CONFIG" --libs`
CFLAGS="$CFLAGS $KRB5_FLAGS"
- CPPFLAGS="$CPPFLAGS $KRB5_FLAGS"
+ CPPFLAGS="$CPPFLAGS $KRB5_FLAGS"
#
# If -lcrypto is in KRB5_FLAGS, we require it to build
- # with Heimdal. We don't want to built with it by
+ # with Heimdal/MIT. We don't want to built with it by
# default, due to annoying license incompatibilities
# between the OpenSSL license and the GPL, so:
#
*-lcrypto*)
if test ! -z "$SSL_LIBS"
then
- KRB5_LIBS=`echo $KRB5_FLAGS | sed 's/-lcrypto//'`
+ KRB5_LIBS=`echo $KRB5_LIBS | sed 's/-lcrypto//'`
KRB5_LIBS="$KRB5_LIBS $SSL_LIBS"
else
AC_MSG_ERROR([Kerberos library requires -lcrypto but --with-ssl not specified])
fi
;;
esac
- ac_krb5_version=`"$KRB5_CONFIG" --version | head -n 1 | sed 's/^.*heimdal.*$/HEIMDAL/'`
+ ac_krb5_version=`"$KRB5_CONFIG" --version | head -n 1 | sed -e 's/^.*heimdal.*$/HEIMDAL/' -e 's/^Kerberos .*$/MIT/'`
fi
fi
# library, as it's probably not present.
#
want_krb5=no
+ AC_MSG_RESULT(No Heimdal or MIT header found - disabling dissection for some kerberos data in packet decoding)
fi
fi
])
- if test "x$want_krb5" != "xno" -a "x$ac_krb5_version" = "xHEIMDAL"
+ if test "x$want_krb5" != "xno"
then
#
# Well, we at least have the krb5 header file.
- # Check whether we have krb5_kt_resolve - and whether
- # we need to link with -lresolv when linking with
- # the Kerberos library.
+ # Check whether this is Heimdal or MIT.
#
- for extras in "" "-lresolv"
- do
- AC_CHECK_LIB(krb5, krb5_kt_resolve,
- [
- if test "x$krb5_dir" != "x"
+ AC_MSG_CHECKING(whether the Kerberos library is Heimdal or MIT)
+ if test "x$ac_krb5_version" = "xHEIMDAL" -o "x$ac_krb5_version" = "xMIT"
+ then
+ #
+ # Yes.
+ # Check whether we have krb5_kt_resolve - and whether
+ # we need to link with -lresolv when linking with
+ # the Kerberos library.
+ #
+ AC_MSG_RESULT($ac_krb5_version)
+ ethereal_save_LIBS="$LIBS"
+ found_krb5_kt_resolve=no
+ for extras in "" "-lresolv"
+ do
+ LIBS="$KRB5_LIBS $extras"
+ if test -z "$extras"
+ then
+ AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve])
+ else
+ AC_MSG_CHECKING([whether $ac_krb5_version includes krb5_kt_resolve (linking with $extras)])
+ fi
+ AC_TRY_LINK(
+ [
+ ],
+ [
+ krb5_kt_resolve();
+ ],
+ [
+ #
+ # We found "krb5_kt_resolve()", and required
+ # the libraries in extras as well.
+ #
+ AC_MSG_RESULT(yes)
+ KRB5_LIBS="$LIBS"
+ AC_DEFINE(HAVE_KERBEROS, 1, [Define to use kerberos])
+ if test "x$ac_krb5_version" = "xHEIMDAL"
+ then
+ AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1, [Define to use heimdal kerberos])
+ fi
+ if test "x$ac_krb5_version" = "xMIT"
+ then
+ AC_DEFINE(HAVE_MIT_KERBEROS, 1, [Define to use MIT kerberos])
+ fi
+ found_krb5_kt_resolve=yes
+ break
+ ],
+ [
+ AC_MSG_RESULT(no)
+ ])
+ done
+ if test "$found_krb5_kt_resolve" = no
+ then
+ #
+ # We didn't find "krb5_kt_resolve()" in the
+ # Kerberos library, even when we tried linking
+ # with -lresolv; we can't link with kerberos.
+ #
+ if test "x$want_krb5" = "xyes"
then
#
- # Put the "-I" and "-L" flags for krb5 at
- # the beginning of CFLAGS, CPPFLAGS,
- # LDFLAGS, and LIBS.
+ # The user tried to force us to use the library,
+ # but we can't do so; report an error.
+ #
+ AC_MSG_ERROR(Usable $ac_krb5_version not found)
+ else
#
- KRB5_LIBS="-L$krb5_dir/lib $KRB5_LIBS"
+ # Restore the versions of CFLAGS and CPPFLAGS
+ # from before we added the flags for Kerberos.
+ #
+ AC_MSG_RESULT(Usable $ac_krb5_version not found - disabling dissection for some kerberos data in packet decoding)
+ CFLAGS="$ethereal_save_CFLAGS"
+ CPPFLAGS="$ethereal_save_CPPFLAGS"
+ KRB5_LIBS=""
+ want_krb5=no
fi
- KRB5_LIBS="$KRB5_LIBS $extras"
- AC_DEFINE(HAVE_KERBEROS, 1, [Define to use kerberos])
- AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1, [Define to use heimdal kerberos])
- break
- ],, $KRB5_LIBS $extras)
- done
- if test "$ac_cv_lib_krb5_krb5_kt_resolve" = no
- then
- #
- # We didn't find "krb5_kt_resolve()" in the
- # Kerberos library, even when we tried linking
- # with -lresolv; we can't link with kerberos.
+ fi
+ LIBS="$ethereal_save_LIBS"
+ else
#
- # Restore the versions of CFLAGS and CPPFLAGS
- # from before we added the flags for Kerberos.
+ # It's not Heimdal or MIT.
#
- CFLAGS="$ethereal_save_CFLAGS"
- CPPFLAGS="$ethereal_save_CPPFLAGS"
- KRB5_LIBS=""
- want_krb5=no
+ AC_MSG_RESULT(no)
+ if test "x$want_krb5" = "xyes"
+ then
+ #
+ # The user tried to force us to use the library,
+ # but we can't do so; report an error.
+ #
+ AC_MSG_ERROR(Kerberos not found)
+ else
+ #
+ # Restore the versions of CFLAGS and CPPFLAGS
+ # from before we added the flags for Kerberos.
+ #
+ AC_MSG_RESULT(Kerberos not found - disabling dissection for some kerberos data in packet decoding)
+ CFLAGS="$ethereal_save_CFLAGS"
+ CPPFLAGS="$ethereal_save_CPPFLAGS"
+ KRB5_LIBS=""
+ want_krb5=no
+ fi
fi
else
#
- # The user didn't ask for Kerberos, or they did but we don't
- # have Heimdal.
- # XXX - if they did ask for it, should we fail and tell
- # them that the Kerberos library they have isn't one we can
- # use?
- #
+ # The user asked us not to use Kerberos, or they didn't
+ # say whether they wanted us to use it but we found
+ # that we couldn't.
#
# Restore the versions of CFLAGS and CPPFLAGS
# from before we added the flags for Kerberos.