Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 699571 Details for
Bug 712903
EAP TNC modules is not compiled and enabled by default and does not have updated TNC patch.
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
TNC TTLS patch
freeradius-eap-tnc-ttls.patch (text/plain), 182.18 KB, created by
Avesh Agarwal
on 2013-02-19 18:00:35 UTC
(
hide
)
Description:
TNC TTLS patch
Filename:
MIME Type:
Creator:
Avesh Agarwal
Created:
2013-02-19 18:00:35 UTC
Size:
182.18 KB
patch
obsolete
>diff -urNp freeradius-server-2.2.0-patched/src/main/Makefile.in freeradius-server-2.2.0-current/src/main/Makefile.in >--- freeradius-server-2.2.0-patched/src/main/Makefile.in 2013-01-29 16:40:54.106387361 -0500 >+++ freeradius-server-2.2.0-current/src/main/Makefile.in 2013-01-29 16:51:35.878073093 -0500 >@@ -44,7 +44,7 @@ ifneq ($(USE_SHARED_LIBS),yes) > # > LINK_MODE = -static -all-static > >-SUB_MODULES += rlm_eap_md5 rlm_eap_leap rlm_eap_tls rlm_eap_ttls rlm_eap_sim >+SUB_MODULES += rlm_eap_md5 rlm_eap_leap rlm_eap_tls rlm_eap_ttls rlm_eap_sim rlm_eap_tnc > SUB_MODULES += rlm_eap_peap rlm_eap_mschapv2 rlm_eap_gtc rlm_eap_ikev2 > SUB_MODULES += rlm_sql_db2 rlm_sql_iodbc rlm_sql_mysql > SUB_MODULES += rlm_sql_oracle rlm_sql_postgresql rlm_sql_sybase rlm_sql_unixodbc >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/configure freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/configure >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/configure 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/configure 2013-01-29 16:56:18.789938663 -0500 >@@ -1,10 +1,10 @@ > #! /bin/sh > # From configure.in Revision. > # Guess values for system-dependent variables and create Makefiles. >-# Generated by GNU Autoconf 2.61. >+# Generated by GNU Autoconf 2.63. > # > # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, >-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. >+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. > # This configure script is free software; the Free Software Foundation > # gives unlimited permission to copy, distribute and modify it. > ## --------------------- ## >@@ -16,7 +16,7 @@ DUALCASE=1; export DUALCASE # for MKS sh > if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then > emulate sh > NULLCMD=: >- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which >+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which > # is contrary to our usage. Disable this feature. > alias -g '${1+"$@"}'='"$@"' > setopt NO_GLOB_SUBST >@@ -38,17 +38,45 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTE > as_cr_digits='0123456789' > as_cr_alnum=$as_cr_Letters$as_cr_digits > >-# The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >- echo "#! /bin/sh" >conf$$.sh >- echo "exit 0" >>conf$$.sh >- chmod +x conf$$.sh >- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then >- PATH_SEPARATOR=';' >+as_nl=' >+' >+export as_nl >+# Printing a long string crashes Solaris 7 /usr/bin/printf. >+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' >+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo >+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo >+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then >+ as_echo='printf %s\n' >+ as_echo_n='printf %s' >+else >+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then >+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' >+ as_echo_n='/usr/ucb/echo -n' > else >- PATH_SEPARATOR=: >+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' >+ as_echo_n_body='eval >+ arg=$1; >+ case $arg in >+ *"$as_nl"*) >+ expr "X$arg" : "X\\(.*\\)$as_nl"; >+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; >+ esac; >+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" >+ ' >+ export as_echo_n_body >+ as_echo_n='sh -c $as_echo_n_body as_echo' > fi >- rm -f conf$$.sh >+ export as_echo_body >+ as_echo='sh -c $as_echo_body as_echo' >+fi >+ >+# The user is always right. >+if test "${PATH_SEPARATOR+set}" != set; then >+ PATH_SEPARATOR=: >+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { >+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || >+ PATH_SEPARATOR=';' >+ } > fi > > # Support unset when possible. >@@ -64,8 +92,6 @@ fi > # there to prevent editors from complaining about space-tab. > # (If _AS_PATH_WALK were called with IFS unset, it would disable word > # splitting by setting IFS to empty value.) >-as_nl=' >-' > IFS=" "" $as_nl" > > # Find who we are. Look in the path if we contain no directory separator. >@@ -88,7 +114,7 @@ if test "x$as_myself" = x; then > as_myself=$0 > fi > if test ! -f "$as_myself"; then >- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 >+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 > { (exit 1); exit 1; } > fi > >@@ -101,17 +127,10 @@ PS2='> ' > PS4='+ ' > > # NLS nuisances. >-for as_var in \ >- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ >- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ >- LC_TELEPHONE LC_TIME >-do >- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then >- eval $as_var=C; export $as_var >- else >- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var >- fi >-done >+LC_ALL=C >+export LC_ALL >+LANGUAGE=C >+export LANGUAGE > > # Required to use basename. > if expr a : '\(a\)' >/dev/null 2>&1 && >@@ -133,7 +152,7 @@ as_me=`$as_basename -- "$0" || > $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ > X"$0" : 'X\(//\)$' \| \ > X"$0" : 'X\(/\)' \| . 2>/dev/null || >-echo X/"$0" | >+$as_echo X/"$0" | > sed '/^.*\/\([^/][^/]*\)\/*$/{ > s//\1/ > q >@@ -159,7 +178,7 @@ else > as_have_required=no > fi > >- if test $as_have_required = yes && (eval ": >+ if test $as_have_required = yes && (eval ": > (as_func_return () { > (exit \$1) > } >@@ -241,7 +260,7 @@ IFS=$as_save_IFS > if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then > emulate sh > NULLCMD=: >- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which >+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which > # is contrary to our usage. Disable this feature. > alias -g '${1+"$@"}'='"$@"' > setopt NO_GLOB_SUBST >@@ -262,7 +281,7 @@ _ASEOF > if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then > emulate sh > NULLCMD=: >- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which >+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which > # is contrary to our usage. Disable this feature. > alias -g '${1+"$@"}'='"$@"' > setopt NO_GLOB_SUBST >@@ -342,10 +361,10 @@ fi > > if test "x$CONFIG_SHELL" != x; then > for as_var in BASH_ENV ENV >- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var >- done >- export CONFIG_SHELL >- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} >+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var >+ done >+ export CONFIG_SHELL >+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} > fi > > >@@ -414,9 +433,10 @@ fi > > test \$exitcode = 0") || { > echo No shell found that supports shell functions. >- echo Please tell autoconf@gnu.org about your system, >- echo including any error possibly output before this >- echo message >+ echo Please tell bug-autoconf@gnu.org about your system, >+ echo including any error possibly output before this message. >+ echo This can help us improve future autoconf versions. >+ echo Configuration will now proceed without shell functions. > } > > >@@ -452,7 +472,7 @@ test \$exitcode = 0") || { > s/-\n.*// > ' >$as_me.lineno && > chmod +x "$as_me.lineno" || >- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 >+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 > { (exit 1); exit 1; }; } > > # Don't try to exec as it changes $[0], causing all sort of problems >@@ -480,7 +500,6 @@ case `echo -n x` in > *) > ECHO_N='-n';; > esac >- > if expr a : '\(a\)' >/dev/null 2>&1 && > test "X`expr 00001 : '.*\(...\)'`" = X001; then > as_expr=expr >@@ -493,19 +512,22 @@ if test -d conf$$.dir; then > rm -f conf$$.dir/conf$$.file > else > rm -f conf$$.dir >- mkdir conf$$.dir >+ mkdir conf$$.dir 2>/dev/null > fi >-echo >conf$$.file >-if ln -s conf$$.file conf$$ 2>/dev/null; then >- as_ln_s='ln -s' >- # ... but there are two gotchas: >- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. >- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. >- # In both cases, we have to default to `cp -p'. >- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || >+if (echo >conf$$.file) 2>/dev/null; then >+ if ln -s conf$$.file conf$$ 2>/dev/null; then >+ as_ln_s='ln -s' >+ # ... but there are two gotchas: >+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. >+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. >+ # In both cases, we have to default to `cp -p'. >+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || >+ as_ln_s='cp -p' >+ elif ln conf$$.file conf$$ 2>/dev/null; then >+ as_ln_s=ln >+ else > as_ln_s='cp -p' >-elif ln conf$$.file conf$$ 2>/dev/null; then >- as_ln_s=ln >+ fi > else > as_ln_s='cp -p' > fi >@@ -530,10 +552,10 @@ else > as_test_x=' > eval sh -c '\'' > if test -d "$1"; then >- test -d "$1/."; >+ test -d "$1/."; > else > case $1 in >- -*)set "./$1";; >+ -*)set "./$1";; > esac; > case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in > ???[sx]*):;;*)false;;esac;fi >@@ -578,56 +600,97 @@ PACKAGE_STRING= > PACKAGE_BUGREPORT= > > ac_unique_file="rlm_eap_tnc.c" >-ac_subst_vars='SHELL >-PATH_SEPARATOR >-PACKAGE_NAME >-PACKAGE_TARNAME >-PACKAGE_VERSION >-PACKAGE_STRING >-PACKAGE_BUGREPORT >-exec_prefix >-prefix >-program_transform_name >-bindir >-sbindir >-libexecdir >-datarootdir >-datadir >-sysconfdir >-sharedstatedir >-localstatedir >-includedir >-oldincludedir >-docdir >-infodir >-htmldir >-dvidir >-pdfdir >-psdir >-libdir >-localedir >-mandir >-DEFS >-ECHO_C >-ECHO_N >-ECHO_T >-LIBS >-build_alias >-host_alias >-target_alias >-CC >-CFLAGS >-LDFLAGS >-CPPFLAGS >-ac_ct_CC >-EXEEXT >-OBJEXT >-eap_tnc_cflags >-eap_tnc_ldflags >-targetname >+# Factoring default headers for most tests. >+ac_includes_default="\ >+#include <stdio.h> >+#ifdef HAVE_SYS_TYPES_H >+# include <sys/types.h> >+#endif >+#ifdef HAVE_SYS_STAT_H >+# include <sys/stat.h> >+#endif >+#ifdef STDC_HEADERS >+# include <stdlib.h> >+# include <stddef.h> >+#else >+# ifdef HAVE_STDLIB_H >+# include <stdlib.h> >+# endif >+#endif >+#ifdef HAVE_STRING_H >+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H >+# include <memory.h> >+# endif >+# include <string.h> >+#endif >+#ifdef HAVE_STRINGS_H >+# include <strings.h> >+#endif >+#ifdef HAVE_INTTYPES_H >+# include <inttypes.h> >+#endif >+#ifdef HAVE_STDINT_H >+# include <stdint.h> >+#endif >+#ifdef HAVE_UNISTD_H >+# include <unistd.h> >+#endif" >+ >+ac_subst_vars='LTLIBOBJS > LIBOBJS >-LTLIBOBJS' >+targetname >+eap_tnc_cflags >+EGREP >+GREP >+CPP >+OBJEXT >+EXEEXT >+ac_ct_CC >+CPPFLAGS >+LDFLAGS >+CFLAGS >+CC >+target_alias >+host_alias >+build_alias >+LIBS >+ECHO_T >+ECHO_N >+ECHO_C >+DEFS >+mandir >+localedir >+libdir >+psdir >+pdfdir >+dvidir >+htmldir >+infodir >+docdir >+oldincludedir >+includedir >+localstatedir >+sharedstatedir >+sysconfdir >+datadir >+datarootdir >+libexecdir >+sbindir >+bindir >+program_transform_name >+prefix >+exec_prefix >+PACKAGE_BUGREPORT >+PACKAGE_STRING >+PACKAGE_VERSION >+PACKAGE_TARNAME >+PACKAGE_NAME >+PATH_SEPARATOR >+SHELL' > ac_subst_files='' >+ac_user_opts=' >+enable_option_checking >+' > ac_precious_vars='build_alias > host_alias > target_alias >@@ -635,12 +698,15 @@ CC > CFLAGS > LDFLAGS > LIBS >-CPPFLAGS' >+CPPFLAGS >+CPP' > > > # Initialize some variables set by options. > ac_init_help= > ac_init_version=false >+ac_unrecognized_opts= >+ac_unrecognized_sep= > # The variables have the same names as the options, with > # dashes changed to underlines. > cache_file=/dev/null >@@ -739,13 +805,21 @@ do > datarootdir=$ac_optarg ;; > > -disable-* | --disable-*) >- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` >+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` > # Reject names that are not valid shell variable names. >- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 >+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && >+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 > { (exit 1); exit 1; }; } >- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` >- eval enable_$ac_feature=no ;; >+ ac_useropt_orig=$ac_useropt >+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` >+ case $ac_user_opts in >+ *" >+"enable_$ac_useropt" >+"*) ;; >+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" >+ ac_unrecognized_sep=', ';; >+ esac >+ eval enable_$ac_useropt=no ;; > > -docdir | --docdir | --docdi | --doc | --do) > ac_prev=docdir ;; >@@ -758,13 +832,21 @@ do > dvidir=$ac_optarg ;; > > -enable-* | --enable-*) >- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` >+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` > # Reject names that are not valid shell variable names. >- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid feature name: $ac_feature" >&2 >+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && >+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 > { (exit 1); exit 1; }; } >- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` >- eval enable_$ac_feature=\$ac_optarg ;; >+ ac_useropt_orig=$ac_useropt >+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` >+ case $ac_user_opts in >+ *" >+"enable_$ac_useropt" >+"*) ;; >+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" >+ ac_unrecognized_sep=', ';; >+ esac >+ eval enable_$ac_useropt=\$ac_optarg ;; > > -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ > | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ >@@ -955,22 +1037,38 @@ do > ac_init_version=: ;; > > -with-* | --with-*) >- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` >+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` > # Reject names that are not valid shell variable names. >- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid package name: $ac_package" >&2 >+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && >+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 > { (exit 1); exit 1; }; } >- ac_package=`echo $ac_package | sed 's/[-.]/_/g'` >- eval with_$ac_package=\$ac_optarg ;; >+ ac_useropt_orig=$ac_useropt >+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` >+ case $ac_user_opts in >+ *" >+"with_$ac_useropt" >+"*) ;; >+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" >+ ac_unrecognized_sep=', ';; >+ esac >+ eval with_$ac_useropt=\$ac_optarg ;; > > -without-* | --without-*) >- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` >+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` > # Reject names that are not valid shell variable names. >- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid package name: $ac_package" >&2 >+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && >+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 > { (exit 1); exit 1; }; } >- ac_package=`echo $ac_package | sed 's/[-.]/_/g'` >- eval with_$ac_package=no ;; >+ ac_useropt_orig=$ac_useropt >+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` >+ case $ac_user_opts in >+ *" >+"with_$ac_useropt" >+"*) ;; >+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" >+ ac_unrecognized_sep=', ';; >+ esac >+ eval with_$ac_useropt=no ;; > > --x) > # Obsolete; use --with-x. >@@ -990,7 +1088,7 @@ do > | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) > x_libraries=$ac_optarg ;; > >- -*) { echo "$as_me: error: unrecognized option: $ac_option >+ -*) { $as_echo "$as_me: error: unrecognized option: $ac_option > Try \`$0 --help' for more information." >&2 > { (exit 1); exit 1; }; } > ;; >@@ -999,16 +1097,16 @@ Try \`$0 --help' for more information." > ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` > # Reject names that are not valid shell variable names. > expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && >- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 >+ { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 > { (exit 1); exit 1; }; } > eval $ac_envvar=\$ac_optarg > export $ac_envvar ;; > > *) > # FIXME: should be removed in autoconf 3.0. >- echo "$as_me: WARNING: you should use --build, --host, --target" >&2 >+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 > expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && >- echo "$as_me: WARNING: invalid host type: $ac_option" >&2 >+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 > : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} > ;; > >@@ -1017,22 +1115,38 @@ done > > if test -n "$ac_prev"; then > ac_option=--`echo $ac_prev | sed 's/_/-/g'` >- { echo "$as_me: error: missing argument to $ac_option" >&2 >+ { $as_echo "$as_me: error: missing argument to $ac_option" >&2 > { (exit 1); exit 1; }; } > fi > >-# Be sure to have absolute directory names. >+if test -n "$ac_unrecognized_opts"; then >+ case $enable_option_checking in >+ no) ;; >+ fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 >+ { (exit 1); exit 1; }; } ;; >+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; >+ esac >+fi >+ >+# Check all directory arguments for consistency. > for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ > datadir sysconfdir sharedstatedir localstatedir includedir \ > oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ > libdir localedir mandir > do > eval ac_val=\$$ac_var >+ # Remove trailing slashes. >+ case $ac_val in >+ */ ) >+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` >+ eval $ac_var=\$ac_val;; >+ esac >+ # Be sure to have absolute directory names. > case $ac_val in > [\\/$]* | ?:[\\/]* ) continue;; > NONE | '' ) case $ac_var in *prefix ) continue;; esac;; > esac >- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 >+ { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 > { (exit 1); exit 1; }; } > done > >@@ -1047,7 +1161,7 @@ target=$target_alias > if test "x$host_alias" != x; then > if test "x$build_alias" = x; then > cross_compiling=maybe >- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. >+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. > If a cross compiler is detected then cross compile mode will be used." >&2 > elif test "x$build_alias" != "x$host_alias"; then > cross_compiling=yes >@@ -1063,10 +1177,10 @@ test "$silent" = yes && exec 6>/dev/null > ac_pwd=`pwd` && test -n "$ac_pwd" && > ac_ls_di=`ls -di .` && > ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || >- { echo "$as_me: error: Working directory cannot be determined" >&2 >+ { $as_echo "$as_me: error: working directory cannot be determined" >&2 > { (exit 1); exit 1; }; } > test "X$ac_ls_di" = "X$ac_pwd_ls_di" || >- { echo "$as_me: error: pwd does not report name of working directory" >&2 >+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 > { (exit 1); exit 1; }; } > > >@@ -1074,12 +1188,12 @@ test "X$ac_ls_di" = "X$ac_pwd_ls_di" || > if test -z "$srcdir"; then > ac_srcdir_defaulted=yes > # Try the directory containing this script, then the parent directory. >- ac_confdir=`$as_dirname -- "$0" || >-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >- X"$0" : 'X\(//\)[^/]' \| \ >- X"$0" : 'X\(//\)$' \| \ >- X"$0" : 'X\(/\)' \| . 2>/dev/null || >-echo X"$0" | >+ ac_confdir=`$as_dirname -- "$as_myself" || >+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ >+ X"$as_myself" : 'X\(//\)[^/]' \| \ >+ X"$as_myself" : 'X\(//\)$' \| \ >+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || >+$as_echo X"$as_myself" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -1106,12 +1220,12 @@ else > fi > if test ! -r "$srcdir/$ac_unique_file"; then > test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." >- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 >+ { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 > { (exit 1); exit 1; }; } > fi > ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" > ac_abs_confdir=`( >- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 >+ cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 > { (exit 1); exit 1; }; } > pwd)` > # When building in place, set srcdir=. >@@ -1160,9 +1274,9 @@ Configuration: > > Installation directories: > --prefix=PREFIX install architecture-independent files in PREFIX >- [$ac_default_prefix] >+ [$ac_default_prefix] > --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX >- [PREFIX] >+ [PREFIX] > > By default, \`make install' will install all the files in > \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify >@@ -1172,25 +1286,25 @@ for instance \`--prefix=\$HOME'. > For better control, use the options below. > > Fine tuning of the installation directories: >- --bindir=DIR user executables [EPREFIX/bin] >- --sbindir=DIR system admin executables [EPREFIX/sbin] >- --libexecdir=DIR program executables [EPREFIX/libexec] >- --sysconfdir=DIR read-only single-machine data [PREFIX/etc] >- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] >- --localstatedir=DIR modifiable single-machine data [PREFIX/var] >- --libdir=DIR object code libraries [EPREFIX/lib] >- --includedir=DIR C header files [PREFIX/include] >- --oldincludedir=DIR C header files for non-gcc [/usr/include] >- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] >- --datadir=DIR read-only architecture-independent data [DATAROOTDIR] >- --infodir=DIR info documentation [DATAROOTDIR/info] >- --localedir=DIR locale-dependent data [DATAROOTDIR/locale] >- --mandir=DIR man documentation [DATAROOTDIR/man] >- --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] >- --htmldir=DIR html documentation [DOCDIR] >- --dvidir=DIR dvi documentation [DOCDIR] >- --pdfdir=DIR pdf documentation [DOCDIR] >- --psdir=DIR ps documentation [DOCDIR] >+ --bindir=DIR user executables [EPREFIX/bin] >+ --sbindir=DIR system admin executables [EPREFIX/sbin] >+ --libexecdir=DIR program executables [EPREFIX/libexec] >+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] >+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] >+ --localstatedir=DIR modifiable single-machine data [PREFIX/var] >+ --libdir=DIR object code libraries [EPREFIX/lib] >+ --includedir=DIR C header files [PREFIX/include] >+ --oldincludedir=DIR C header files for non-gcc [/usr/include] >+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] >+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] >+ --infodir=DIR info documentation [DATAROOTDIR/info] >+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] >+ --mandir=DIR man documentation [DATAROOTDIR/man] >+ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] >+ --htmldir=DIR html documentation [DOCDIR] >+ --dvidir=DIR dvi documentation [DOCDIR] >+ --pdfdir=DIR pdf documentation [DOCDIR] >+ --psdir=DIR ps documentation [DOCDIR] > _ACEOF > > cat <<\_ACEOF >@@ -1209,6 +1323,7 @@ Some influential environment variables: > LIBS libraries to pass to the linker, e.g. -l<library> > CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if > you have headers in a nonstandard directory <include dir> >+ CPP C preprocessor > > Use these variables to override the choices made by `configure' or to help > it to find libraries and programs with nonstandard names/locations. >@@ -1220,15 +1335,17 @@ fi > if test "$ac_init_help" = "recursive"; then > # If there are subdirs, report their specific --help. > for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue >- test -d "$ac_dir" || continue >+ test -d "$ac_dir" || >+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || >+ continue > ac_builddir=. > > case "$ac_dir" in > .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; > *) >- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` >+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` > # A ".." for each directory in $ac_dir_suffix. >- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` >+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` > case $ac_top_builddir_sub in > "") ac_top_builddir_sub=. ac_top_build_prefix= ;; > *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; >@@ -1264,7 +1381,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_ > echo && > $SHELL "$ac_srcdir/configure" --help=recursive > else >- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 >+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 > fi || ac_status=$? > cd "$ac_pwd" || { ac_status=$?; break; } > done >@@ -1274,10 +1391,10 @@ test -n "$ac_init_help" && exit $ac_stat > if $ac_init_version; then > cat <<\_ACEOF > configure >-generated by GNU Autoconf 2.61 >+generated by GNU Autoconf 2.63 > > Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, >-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. >+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. > This configure script is free software; the Free Software Foundation > gives unlimited permission to copy, distribute and modify it. > _ACEOF >@@ -1288,7 +1405,7 @@ This file contains any messages produced > running configure, to aid debugging if configure makes a mistake. > > It was created by $as_me, which was >-generated by GNU Autoconf 2.61. Invocation command line was >+generated by GNU Autoconf 2.63. Invocation command line was > > $ $0 $@ > >@@ -1324,7 +1441,7 @@ for as_dir in $PATH > do > IFS=$as_save_IFS > test -z "$as_dir" && as_dir=. >- echo "PATH: $as_dir" >+ $as_echo "PATH: $as_dir" > done > IFS=$as_save_IFS > >@@ -1359,7 +1476,7 @@ do > | -silent | --silent | --silen | --sile | --sil) > continue ;; > *\'*) >- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; >+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; > esac > case $ac_pass in > 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; >@@ -1411,11 +1528,12 @@ _ASBOX > case $ac_val in #( > *${as_nl}*) > case $ac_var in #( >- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 >-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; >+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 >+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; > esac > case $ac_var in #( > _ | IFS | as_nl) ;; #( >+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( > *) $as_unset $ac_var ;; > esac ;; > esac >@@ -1445,9 +1563,9 @@ _ASBOX > do > eval ac_val=\$$ac_var > case $ac_val in >- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; >+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; > esac >- echo "$ac_var='\''$ac_val'\''" >+ $as_echo "$ac_var='\''$ac_val'\''" > done | sort > echo > >@@ -1462,9 +1580,9 @@ _ASBOX > do > eval ac_val=\$$ac_var > case $ac_val in >- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; >+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; > esac >- echo "$ac_var='\''$ac_val'\''" >+ $as_echo "$ac_var='\''$ac_val'\''" > done | sort > echo > fi >@@ -1480,8 +1598,8 @@ _ASBOX > echo > fi > test "$ac_signal" != 0 && >- echo "$as_me: caught signal $ac_signal" >- echo "$as_me: exit $exit_status" >+ $as_echo "$as_me: caught signal $ac_signal" >+ $as_echo "$as_me: exit $exit_status" > } >&5 > rm -f core *.core core.conftest.* && > rm -f -r conftest* confdefs* conf$$* $ac_clean_files && >@@ -1523,21 +1641,24 @@ _ACEOF > > > # Let the site file select an alternate cache file if it wants to. >-# Prefer explicitly selected file to automatically selected ones. >+# Prefer an explicitly selected file to automatically selected ones. >+ac_site_file1=NONE >+ac_site_file2=NONE > if test -n "$CONFIG_SITE"; then >- set x "$CONFIG_SITE" >+ ac_site_file1=$CONFIG_SITE > elif test "x$prefix" != xNONE; then >- set x "$prefix/share/config.site" "$prefix/etc/config.site" >+ ac_site_file1=$prefix/share/config.site >+ ac_site_file2=$prefix/etc/config.site > else >- set x "$ac_default_prefix/share/config.site" \ >- "$ac_default_prefix/etc/config.site" >+ ac_site_file1=$ac_default_prefix/share/config.site >+ ac_site_file2=$ac_default_prefix/etc/config.site > fi >-shift >-for ac_site_file >+for ac_site_file in "$ac_site_file1" "$ac_site_file2" > do >+ test "x$ac_site_file" = xNONE && continue > if test -r "$ac_site_file"; then >- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 >-echo "$as_me: loading site script $ac_site_file" >&6;} >+ { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 >+$as_echo "$as_me: loading site script $ac_site_file" >&6;} > sed 's/^/| /' "$ac_site_file" >&5 > . "$ac_site_file" > fi >@@ -1547,16 +1668,16 @@ if test -r "$cache_file"; then > # Some versions of bash will fail to source /dev/null (special > # files actually), so we avoid doing that. > if test -f "$cache_file"; then >- { echo "$as_me:$LINENO: loading cache $cache_file" >&5 >-echo "$as_me: loading cache $cache_file" >&6;} >+ { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 >+$as_echo "$as_me: loading cache $cache_file" >&6;} > case $cache_file in > [\\/]* | ?:[\\/]* ) . "$cache_file";; > *) . "./$cache_file";; > esac > fi > else >- { echo "$as_me:$LINENO: creating cache $cache_file" >&5 >-echo "$as_me: creating cache $cache_file" >&6;} >+ { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 >+$as_echo "$as_me: creating cache $cache_file" >&6;} > >$cache_file > fi > >@@ -1570,29 +1691,38 @@ for ac_var in $ac_precious_vars; do > eval ac_new_val=\$ac_env_${ac_var}_value > case $ac_old_set,$ac_new_set in > set,) >- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 >-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} >+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 >+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} > ac_cache_corrupted=: ;; > ,set) >- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 >-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} >+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 >+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} > ac_cache_corrupted=: ;; > ,);; > *) > if test "x$ac_old_val" != "x$ac_new_val"; then >- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 >-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} >- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 >-echo "$as_me: former value: $ac_old_val" >&2;} >- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 >-echo "$as_me: current value: $ac_new_val" >&2;} >- ac_cache_corrupted=: >+ # differences in whitespace do not lead to failure. >+ ac_old_val_w=`echo x $ac_old_val` >+ ac_new_val_w=`echo x $ac_new_val` >+ if test "$ac_old_val_w" != "$ac_new_val_w"; then >+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 >+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} >+ ac_cache_corrupted=: >+ else >+ { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 >+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} >+ eval $ac_var=\$ac_old_val >+ fi >+ { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 >+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} >+ { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 >+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} > fi;; > esac > # Pass precious variables to config.status. > if test "$ac_new_set" = set; then > case $ac_new_val in >- *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; >+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; > *) ac_arg=$ac_var=$ac_new_val ;; > esac > case " $ac_configure_args " in >@@ -1602,10 +1732,12 @@ echo "$as_me: current value: $ac_new_v > fi > done > if $ac_cache_corrupted; then >- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 >-echo "$as_me: error: changes in the environment can compromise the build" >&2;} >- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 >-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} >+ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 >+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+ { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 >+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} >+ { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 >+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} > { (exit 1); exit 1; }; } > fi > >@@ -1635,6 +1767,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu > > > >+eap_tnc_cflags= >+ > if test x$with_rlm_eap_tnc != xno; then > > ac_ext=c >@@ -1645,10 +1779,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. > set dummy ${ac_tool_prefix}gcc; ac_word=$2 >-{ echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 >+$as_echo_n "checking for $ac_word... " >&6; } > if test "${ac_cv_prog_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > if test -n "$CC"; then > ac_cv_prog_CC="$CC" # Let the user override the test. >@@ -1661,7 +1795,7 @@ do > for ac_exec_ext in '' $ac_executable_extensions; do > if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then > ac_cv_prog_CC="${ac_tool_prefix}gcc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -1672,11 +1806,11 @@ fi > fi > CC=$ac_cv_prog_CC > if test -n "$CC"; then >- { echo "$as_me:$LINENO: result: $CC" >&5 >-echo "${ECHO_T}$CC" >&6; } >+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 >+$as_echo "$CC" >&6; } > else >- { echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6; } >+ { $as_echo "$as_me:$LINENO: result: no" >&5 >+$as_echo "no" >&6; } > fi > > >@@ -1685,10 +1819,10 @@ if test -z "$ac_cv_prog_CC"; then > ac_ct_CC=$CC > # Extract the first word of "gcc", so it can be a program name with args. > set dummy gcc; ac_word=$2 >-{ echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 >+$as_echo_n "checking for $ac_word... " >&6; } > if test "${ac_cv_prog_ac_ct_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > if test -n "$ac_ct_CC"; then > ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. >@@ -1701,7 +1835,7 @@ do > for ac_exec_ext in '' $ac_executable_extensions; do > if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then > ac_cv_prog_ac_ct_CC="gcc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -1712,11 +1846,11 @@ fi > fi > ac_ct_CC=$ac_cv_prog_ac_ct_CC > if test -n "$ac_ct_CC"; then >- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 >-echo "${ECHO_T}$ac_ct_CC" >&6; } >+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 >+$as_echo "$ac_ct_CC" >&6; } > else >- { echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6; } >+ { $as_echo "$as_me:$LINENO: result: no" >&5 >+$as_echo "no" >&6; } > fi > > if test "x$ac_ct_CC" = x; then >@@ -1724,12 +1858,8 @@ fi > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools >-whose name does not start with the host triplet. If you think this >-configuration is useful to you, please write to autoconf@gnu.org." >&5 >-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools >-whose name does not start with the host triplet. If you think this >-configuration is useful to you, please write to autoconf@gnu.org." >&2;} >+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 >+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > CC=$ac_ct_CC >@@ -1742,10 +1872,10 @@ if test -z "$CC"; then > if test -n "$ac_tool_prefix"; then > # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. > set dummy ${ac_tool_prefix}cc; ac_word=$2 >-{ echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 >+$as_echo_n "checking for $ac_word... " >&6; } > if test "${ac_cv_prog_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > if test -n "$CC"; then > ac_cv_prog_CC="$CC" # Let the user override the test. >@@ -1758,7 +1888,7 @@ do > for ac_exec_ext in '' $ac_executable_extensions; do > if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then > ac_cv_prog_CC="${ac_tool_prefix}cc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -1769,11 +1899,11 @@ fi > fi > CC=$ac_cv_prog_CC > if test -n "$CC"; then >- { echo "$as_me:$LINENO: result: $CC" >&5 >-echo "${ECHO_T}$CC" >&6; } >+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 >+$as_echo "$CC" >&6; } > else >- { echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6; } >+ { $as_echo "$as_me:$LINENO: result: no" >&5 >+$as_echo "no" >&6; } > fi > > >@@ -1782,10 +1912,10 @@ fi > if test -z "$CC"; then > # Extract the first word of "cc", so it can be a program name with args. > set dummy cc; ac_word=$2 >-{ echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 >+$as_echo_n "checking for $ac_word... " >&6; } > if test "${ac_cv_prog_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > if test -n "$CC"; then > ac_cv_prog_CC="$CC" # Let the user override the test. >@@ -1803,7 +1933,7 @@ do > continue > fi > ac_cv_prog_CC="cc" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -1826,11 +1956,11 @@ fi > fi > CC=$ac_cv_prog_CC > if test -n "$CC"; then >- { echo "$as_me:$LINENO: result: $CC" >&5 >-echo "${ECHO_T}$CC" >&6; } >+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 >+$as_echo "$CC" >&6; } > else >- { echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6; } >+ { $as_echo "$as_me:$LINENO: result: no" >&5 >+$as_echo "no" >&6; } > fi > > >@@ -1841,10 +1971,10 @@ if test -z "$CC"; then > do > # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. > set dummy $ac_tool_prefix$ac_prog; ac_word=$2 >-{ echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 >+$as_echo_n "checking for $ac_word... " >&6; } > if test "${ac_cv_prog_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > if test -n "$CC"; then > ac_cv_prog_CC="$CC" # Let the user override the test. >@@ -1857,7 +1987,7 @@ do > for ac_exec_ext in '' $ac_executable_extensions; do > if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then > ac_cv_prog_CC="$ac_tool_prefix$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -1868,11 +1998,11 @@ fi > fi > CC=$ac_cv_prog_CC > if test -n "$CC"; then >- { echo "$as_me:$LINENO: result: $CC" >&5 >-echo "${ECHO_T}$CC" >&6; } >+ { $as_echo "$as_me:$LINENO: result: $CC" >&5 >+$as_echo "$CC" >&6; } > else >- { echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6; } >+ { $as_echo "$as_me:$LINENO: result: no" >&5 >+$as_echo "no" >&6; } > fi > > >@@ -1885,10 +2015,10 @@ if test -z "$CC"; then > do > # Extract the first word of "$ac_prog", so it can be a program name with args. > set dummy $ac_prog; ac_word=$2 >-{ echo "$as_me:$LINENO: checking for $ac_word" >&5 >-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 >+$as_echo_n "checking for $ac_word... " >&6; } > if test "${ac_cv_prog_ac_ct_CC+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > if test -n "$ac_ct_CC"; then > ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. >@@ -1901,7 +2031,7 @@ do > for ac_exec_ext in '' $ac_executable_extensions; do > if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then > ac_cv_prog_ac_ct_CC="$ac_prog" >- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 >+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 > break 2 > fi > done >@@ -1912,11 +2042,11 @@ fi > fi > ac_ct_CC=$ac_cv_prog_ac_ct_CC > if test -n "$ac_ct_CC"; then >- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 >-echo "${ECHO_T}$ac_ct_CC" >&6; } >+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 >+$as_echo "$ac_ct_CC" >&6; } > else >- { echo "$as_me:$LINENO: result: no" >&5 >-echo "${ECHO_T}no" >&6; } >+ { $as_echo "$as_me:$LINENO: result: no" >&5 >+$as_echo "no" >&6; } > fi > > >@@ -1928,12 +2058,8 @@ done > else > case $cross_compiling:$ac_tool_warned in > yes:) >-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools >-whose name does not start with the host triplet. If you think this >-configuration is useful to you, please write to autoconf@gnu.org." >&5 >-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools >-whose name does not start with the host triplet. If you think this >-configuration is useful to you, please write to autoconf@gnu.org." >&2;} >+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 >+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} > ac_tool_warned=yes ;; > esac > CC=$ac_ct_CC >@@ -1943,44 +2069,50 @@ fi > fi > > >-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH >+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 >+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH > See \`config.log' for more details." >&5 >-echo "$as_me: error: no acceptable C compiler found in \$PATH >+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH > See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >+ { (exit 1); exit 1; }; }; } > > # Provide some information about the compiler. >-echo "$as_me:$LINENO: checking for C compiler version" >&5 >-ac_compiler=`set X $ac_compile; echo $2` >+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 >+set X $ac_compile >+ac_compiler=$2 > { (ac_try="$ac_compiler --version >&5" > case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compiler --version >&5") 2>&5 > ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } > { (ac_try="$ac_compiler -v >&5" > case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compiler -v >&5") 2>&5 > ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } > { (ac_try="$ac_compiler -V >&5" > case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compiler -V >&5") 2>&5 > ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } > > cat >conftest.$ac_ext <<_ACEOF >@@ -1999,27 +2131,22 @@ main () > } > _ACEOF > ac_clean_files_save=$ac_clean_files >-ac_clean_files="$ac_clean_files a.out a.exe b.out" >+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" > # Try to create an executable without -o first, disregard a.out. > # It will help us diagnose broken compilers, and finding out an intuition > # of exeext. >-{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 >-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } >-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` >-# >-# List of possible output files, starting from the most likely. >-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) >-# only as a last resort. b.out is created by i960 compilers. >-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' >-# >-# The IRIX 6 linker writes into existing files which may not be >-# executable, retaining their permissions. Remove them first so a >-# subsequent execution test works. >+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 >+$as_echo_n "checking for C compiler default output file name... " >&6; } >+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` >+ >+# The possible output files: >+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" >+ > ac_rmfiles= > for ac_file in $ac_files > do > case $ac_file in >- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; >+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; > * ) ac_rmfiles="$ac_rmfiles $ac_file";; > esac > done >@@ -2030,10 +2157,11 @@ case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_link_default") 2>&5 > ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); }; then > # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. > # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' >@@ -2044,7 +2172,7 @@ for ac_file in $ac_files '' > do > test -f "$ac_file" || continue > case $ac_file in >- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) >+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) > ;; > [ab].out ) > # We found the default executable, but exeext='' is most >@@ -2071,25 +2199,27 @@ else > ac_file='' > fi > >-{ echo "$as_me:$LINENO: result: $ac_file" >&5 >-echo "${ECHO_T}$ac_file" >&6; } >+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 >+$as_echo "$ac_file" >&6; } > if test -z "$ac_file"; then >- echo "$as_me: failed program was:" >&5 >+ $as_echo "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > >-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables >+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 >+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables > See \`config.log' for more details." >&5 >-echo "$as_me: error: C compiler cannot create executables >+$as_echo "$as_me: error: C compiler cannot create executables > See \`config.log' for more details." >&2;} >- { (exit 77); exit 77; }; } >+ { (exit 77); exit 77; }; }; } > fi > > ac_exeext=$ac_cv_exeext > > # Check that the compiler produces executables we can run. If not, either > # the compiler is broken, or we cross compile. >-{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 >-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 >+$as_echo_n "checking whether the C compiler works... " >&6; } > # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 > # If not cross compiling, check that we can run a simple program. > if test "$cross_compiling" != yes; then >@@ -2098,49 +2228,53 @@ if test "$cross_compiling" != yes; then > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_try") 2>&5 > ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); }; }; then > cross_compiling=no > else > if test "$cross_compiling" = maybe; then > cross_compiling=yes > else >- { { echo "$as_me:$LINENO: error: cannot run C compiled programs. >+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 >+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. > If you meant to cross compile, use \`--host'. > See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot run C compiled programs. >+$as_echo "$as_me: error: cannot run C compiled programs. > If you meant to cross compile, use \`--host'. > See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >+ { (exit 1); exit 1; }; }; } > fi > fi > fi >-{ echo "$as_me:$LINENO: result: yes" >&5 >-echo "${ECHO_T}yes" >&6; } >+{ $as_echo "$as_me:$LINENO: result: yes" >&5 >+$as_echo "yes" >&6; } > >-rm -f a.out a.exe conftest$ac_cv_exeext b.out >+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out > ac_clean_files=$ac_clean_files_save > # Check that the compiler produces executables we can run. If not, either > # the compiler is broken, or we cross compile. >-{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 >-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } >-{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 >-echo "${ECHO_T}$cross_compiling" >&6; } >+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 >+$as_echo_n "checking whether we are cross compiling... " >&6; } >+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 >+$as_echo "$cross_compiling" >&6; } > >-{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 >-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 >+$as_echo_n "checking for suffix of executables... " >&6; } > if { (ac_try="$ac_link" > case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_link") 2>&5 > ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); }; then > # If both `conftest.exe' and `conftest' are `present' (well, observable) > # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will >@@ -2149,31 +2283,33 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec > for ac_file in conftest.exe conftest conftest.*; do > test -f "$ac_file" || continue > case $ac_file in >- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; >+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; > *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` > break;; > * ) break;; > esac > done > else >- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link >+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 >+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link > See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link >+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link > See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >+ { (exit 1); exit 1; }; }; } > fi > > rm -f conftest$ac_cv_exeext >-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 >-echo "${ECHO_T}$ac_cv_exeext" >&6; } >+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 >+$as_echo "$ac_cv_exeext" >&6; } > > rm -f conftest.$ac_ext > EXEEXT=$ac_cv_exeext > ac_exeext=$EXEEXT >-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 >-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 >+$as_echo_n "checking for suffix of object files... " >&6; } > if test "${ac_cv_objext+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > cat >conftest.$ac_ext <<_ACEOF > /* confdefs.h. */ >@@ -2196,40 +2332,43 @@ case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compile") 2>&5 > ac_status=$? >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); }; then > for ac_file in conftest.o conftest.obj conftest.*; do > test -f "$ac_file" || continue; > case $ac_file in >- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; >+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; > *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` > break;; > esac > done > else >- echo "$as_me: failed program was:" >&5 >+ $as_echo "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > >-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile >+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 >+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile > See \`config.log' for more details." >&5 >-echo "$as_me: error: cannot compute suffix of object files: cannot compile >+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile > See \`config.log' for more details." >&2;} >- { (exit 1); exit 1; }; } >+ { (exit 1); exit 1; }; }; } > fi > > rm -f conftest.$ac_cv_objext conftest.$ac_ext > fi >-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 >-echo "${ECHO_T}$ac_cv_objext" >&6; } >+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 >+$as_echo "$ac_cv_objext" >&6; } > OBJEXT=$ac_cv_objext > ac_objext=$OBJEXT >-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 >-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 >+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } > if test "${ac_cv_c_compiler_gnu+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > cat >conftest.$ac_ext <<_ACEOF > /* confdefs.h. */ >@@ -2255,20 +2394,21 @@ case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compile") 2>conftest.er1 > ac_status=$? > grep -v '^ *+' conftest.er1 >conftest.err > rm -f conftest.er1 > cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } && { > test -z "$ac_c_werror_flag" || > test ! -s conftest.err > } && test -s conftest.$ac_objext; then > ac_compiler_gnu=yes > else >- echo "$as_me: failed program was:" >&5 >+ $as_echo "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > > ac_compiler_gnu=no >@@ -2278,15 +2418,19 @@ rm -f core conftest.err conftest.$ac_obj > ac_cv_c_compiler_gnu=$ac_compiler_gnu > > fi >-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 >-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } >-GCC=`test $ac_compiler_gnu = yes && echo yes` >+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 >+$as_echo "$ac_cv_c_compiler_gnu" >&6; } >+if test $ac_compiler_gnu = yes; then >+ GCC=yes >+else >+ GCC= >+fi > ac_test_CFLAGS=${CFLAGS+set} > ac_save_CFLAGS=$CFLAGS >-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 >-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 >+$as_echo_n "checking whether $CC accepts -g... " >&6; } > if test "${ac_cv_prog_cc_g+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > ac_save_c_werror_flag=$ac_c_werror_flag > ac_c_werror_flag=yes >@@ -2313,20 +2457,21 @@ case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compile") 2>conftest.er1 > ac_status=$? > grep -v '^ *+' conftest.er1 >conftest.err > rm -f conftest.er1 > cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } && { > test -z "$ac_c_werror_flag" || > test ! -s conftest.err > } && test -s conftest.$ac_objext; then > ac_cv_prog_cc_g=yes > else >- echo "$as_me: failed program was:" >&5 >+ $as_echo "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > > CFLAGS="" >@@ -2351,20 +2496,21 @@ case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compile") 2>conftest.er1 > ac_status=$? > grep -v '^ *+' conftest.er1 >conftest.err > rm -f conftest.er1 > cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } && { > test -z "$ac_c_werror_flag" || > test ! -s conftest.err > } && test -s conftest.$ac_objext; then > : > else >- echo "$as_me: failed program was:" >&5 >+ $as_echo "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > > ac_c_werror_flag=$ac_save_c_werror_flag >@@ -2390,20 +2536,21 @@ case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compile") 2>conftest.er1 > ac_status=$? > grep -v '^ *+' conftest.er1 >conftest.err > rm -f conftest.er1 > cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } && { > test -z "$ac_c_werror_flag" || > test ! -s conftest.err > } && test -s conftest.$ac_objext; then > ac_cv_prog_cc_g=yes > else >- echo "$as_me: failed program was:" >&5 >+ $as_echo "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > > >@@ -2418,8 +2565,8 @@ fi > rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext > ac_c_werror_flag=$ac_save_c_werror_flag > fi >-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 >-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } >+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 >+$as_echo "$ac_cv_prog_cc_g" >&6; } > if test "$ac_test_CFLAGS" = set; then > CFLAGS=$ac_save_CFLAGS > elif test $ac_cv_prog_cc_g = yes; then >@@ -2435,10 +2582,10 @@ else > CFLAGS= > fi > fi >-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 >-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } >+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 >+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } > if test "${ac_cv_prog_cc_c89+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+ $as_echo_n "(cached) " >&6 > else > ac_cv_prog_cc_c89=no > ac_save_CC=$CC >@@ -2509,20 +2656,21 @@ case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_compile") 2>conftest.er1 > ac_status=$? > grep -v '^ *+' conftest.er1 >conftest.err > rm -f conftest.er1 > cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } && { > test -z "$ac_c_werror_flag" || > test ! -s conftest.err > } && test -s conftest.$ac_objext; then > ac_cv_prog_cc_c89=$ac_arg > else >- echo "$as_me: failed program was:" >&5 >+ $as_echo "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > > >@@ -2538,15 +2686,15 @@ fi > # AC_CACHE_VAL > case "x$ac_cv_prog_cc_c89" in > x) >- { echo "$as_me:$LINENO: result: none needed" >&5 >-echo "${ECHO_T}none needed" >&6; } ;; >+ { $as_echo "$as_me:$LINENO: result: none needed" >&5 >+$as_echo "none needed" >&6; } ;; > xno) >- { echo "$as_me:$LINENO: result: unsupported" >&5 >-echo "${ECHO_T}unsupported" >&6; } ;; >+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5 >+$as_echo "unsupported" >&6; } ;; > *) > CC="$CC $ac_cv_prog_cc_c89" >- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 >-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; >+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 >+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; > esac > > >@@ -2558,13 +2706,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu > > > >-{ echo "$as_me:$LINENO: checking for exchangeTNCCSMessages in -lTNCS" >&5 >-echo $ECHO_N "checking for exchangeTNCCSMessages in -lTNCS... $ECHO_C" >&6; } >-if test "${ac_cv_lib_TNCS_exchangeTNCCSMessages+set}" = set; then >- echo $ECHO_N "(cached) $ECHO_C" >&6 >+{ $as_echo "$as_me:$LINENO: checking for processEAPTNCData in -lnaaeap" >&5 >+$as_echo_n "checking for processEAPTNCData in -lnaaeap... " >&6; } >+if test "${ac_cv_lib_naaeap_processEAPTNCData+set}" = set; then >+ $as_echo_n "(cached) " >&6 > else > ac_check_lib_save_LIBS=$LIBS >-LIBS="-lTNCS $LIBS" >+LIBS="-lnaaeap $LIBS" > cat >conftest.$ac_ext <<_ACEOF > /* confdefs.h. */ > _ACEOF >@@ -2578,11 +2726,11 @@ cat >>conftest.$ac_ext <<_ACEOF > #ifdef __cplusplus > extern "C" > #endif >-char exchangeTNCCSMessages (); >+char processEAPTNCData (); > int > main () > { >-return exchangeTNCCSMessages (); >+return processEAPTNCData (); > ; > return 0; > } >@@ -2593,109 +2741,877 @@ case "(($ac_try" in > *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; > *) ac_try_echo=$ac_try;; > esac >-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 > (eval "$ac_link") 2>conftest.er1 > ac_status=$? > grep -v '^ *+' conftest.er1 >conftest.err > rm -f conftest.er1 > cat conftest.err >&5 >- echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 > (exit $ac_status); } && { > test -z "$ac_c_werror_flag" || > test ! -s conftest.err >- } && test -s conftest$ac_exeext && >- $as_test_x conftest$ac_exeext; then >- ac_cv_lib_TNCS_exchangeTNCCSMessages=yes >+ } && test -s conftest$ac_exeext && { >+ test "$cross_compiling" = yes || >+ $as_test_x conftest$ac_exeext >+ }; then >+ ac_cv_lib_naaeap_processEAPTNCData=yes > else >- echo "$as_me: failed program was:" >&5 >+ $as_echo "$as_me: failed program was:" >&5 > sed 's/^/| /' conftest.$ac_ext >&5 > >- ac_cv_lib_TNCS_exchangeTNCCSMessages=no >+ ac_cv_lib_naaeap_processEAPTNCData=no > fi > >+rm -rf conftest.dSYM > rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ > conftest$ac_exeext conftest.$ac_ext > LIBS=$ac_check_lib_save_LIBS > fi >-{ echo "$as_me:$LINENO: result: $ac_cv_lib_TNCS_exchangeTNCCSMessages" >&5 >-echo "${ECHO_T}$ac_cv_lib_TNCS_exchangeTNCCSMessages" >&6; } >-if test $ac_cv_lib_TNCS_exchangeTNCCSMessages = yes; then >+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_naaeap_processEAPTNCData" >&5 >+$as_echo "$ac_cv_lib_naaeap_processEAPTNCData" >&6; } >+if test "x$ac_cv_lib_naaeap_processEAPTNCData" = x""yes; then > cat >>confdefs.h <<_ACEOF >-#define HAVE_LIBTNCS 1 >+#define HAVE_LIBNAAEAP 1 > _ACEOF > >- LIBS="-lTNCS $LIBS" >+ LIBS="-lnaaeap $LIBS" > >+else >+ fail="$fail -lnaaeap" > fi > >- if test "x$ac_cv_lib_tncs_exchangetnccsmessages" != xyes; then >- { echo "$as_me:$LINENO: WARNING: the TNCS library isn't found!" >&5 >-echo "$as_me: WARNING: the TNCS library isn't found!" >&2;} >- fail="$fail -lTNCS" >- fi > >- targetname=rlm_eap_tnc >+ ac_ext=c >+ac_cpp='$CPP $CPPFLAGS' >+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >+ac_compiler_gnu=$ac_cv_c_compiler_gnu >+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 >+$as_echo_n "checking how to run the C preprocessor... " >&6; } >+# On Suns, sometimes $CPP names a directory. >+if test -n "$CPP" && test -d "$CPP"; then >+ CPP= >+fi >+if test -z "$CPP"; then >+ if test "${ac_cv_prog_CPP+set}" = set; then >+ $as_echo_n "(cached) " >&6 > else >- targetname= >- echo \*\*\* module rlm_eap_tnc is disabled. >-fi >+ # Double quotes because CPP needs to be expanded >+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" >+ do >+ ac_preproc_ok=false >+for ac_c_preproc_warn_flag in '' yes >+do >+ # Use a header file that comes with gcc, so configuring glibc >+ # with a fresh cross-compiler works. >+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >+ # <limits.h> exists even on freestanding compilers. >+ # On the NeXT, cc -E runs the code through the compiler's parser, >+ # not just through cpp. "Syntax error" is here to catch this case. >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#ifdef __STDC__ >+# include <limits.h> >+#else >+# include <assert.h> >+#endif >+ Syntax error >+_ACEOF >+if { (ac_try="$ac_cpp conftest.$ac_ext" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 >+ ac_status=$? >+ grep -v '^ *+' conftest.er1 >conftest.err >+ rm -f conftest.er1 >+ cat conftest.err >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } >/dev/null && { >+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || >+ test ! -s conftest.err >+ }; then >+ : >+else >+ $as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 > >-if test x"$fail" != x""; then >- if test x"${enable_strict_dependencies}" = x"yes"; then >- { { echo "$as_me:$LINENO: error: set --without-rlm_eap_tnc to disable it explicitly." >&5 >-echo "$as_me: error: set --without-rlm_eap_tnc to disable it explicitly." >&2;} >- { (exit 1); exit 1; }; } >- else >- { echo "$as_me:$LINENO: WARNING: silently not building rlm_eap_tnc." >&5 >-echo "$as_me: WARNING: silently not building rlm_eap_tnc." >&2;} >- { echo "$as_me:$LINENO: WARNING: FAILURE: rlm_eap_tnc requires: $fail." >&5 >-echo "$as_me: WARNING: FAILURE: rlm_eap_tnc requires: $fail." >&2;}; >- targetname="" >- fi >+ # Broken: fails on valid input. >+continue > fi > >+rm -f conftest.err conftest.$ac_ext > >+ # OK, works on sane cases. Now check whether nonexistent headers >+ # can be detected and how. >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#include <ac_nonexistent.h> >+_ACEOF >+if { (ac_try="$ac_cpp conftest.$ac_ext" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 >+ ac_status=$? >+ grep -v '^ *+' conftest.er1 >conftest.err >+ rm -f conftest.er1 >+ cat conftest.err >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } >/dev/null && { >+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || >+ test ! -s conftest.err >+ }; then >+ # Broken: success on invalid input. >+continue >+else >+ $as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 > >+ # Passes both tests. >+ac_preproc_ok=: >+break >+fi > >+rm -f conftest.err conftest.$ac_ext > >+done >+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. >+rm -f conftest.err conftest.$ac_ext >+if $ac_preproc_ok; then >+ break >+fi > >- unset ac_cv_env_LIBS_set >- unset ac_cv_env_LIBS_value >+ done >+ ac_cv_prog_CPP=$CPP > >- ac_config_files="$ac_config_files Makefile" >+fi >+ CPP=$ac_cv_prog_CPP >+else >+ ac_cv_prog_CPP=$CPP >+fi >+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 >+$as_echo "$CPP" >&6; } >+ac_preproc_ok=false >+for ac_c_preproc_warn_flag in '' yes >+do >+ # Use a header file that comes with gcc, so configuring glibc >+ # with a fresh cross-compiler works. >+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since >+ # <limits.h> exists even on freestanding compilers. >+ # On the NeXT, cc -E runs the code through the compiler's parser, >+ # not just through cpp. "Syntax error" is here to catch this case. >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#ifdef __STDC__ >+# include <limits.h> >+#else >+# include <assert.h> >+#endif >+ Syntax error >+_ACEOF >+if { (ac_try="$ac_cpp conftest.$ac_ext" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 >+ ac_status=$? >+ grep -v '^ *+' conftest.er1 >conftest.err >+ rm -f conftest.er1 >+ cat conftest.err >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } >/dev/null && { >+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || >+ test ! -s conftest.err >+ }; then >+ : >+else >+ $as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 > >-cat >confcache <<\_ACEOF >-# This file is a shell script that caches the results of configure >-# tests run on this system so they can be shared between configure >-# scripts and configure runs, see configure's option --config-cache. >-# It is not useful on other systems. If it contains results you don't >-# want to keep, you may remove or edit it. >-# >-# config.status only pays attention to the cache file if you give it >-# the --recheck option to rerun configure. >-# >-# `ac_cv_env_foo' variables (set or unset) will be overridden when >-# loading this file, other *unset* `ac_cv_foo' will be assigned the >-# following values. >+ # Broken: fails on valid input. >+continue >+fi > >-_ACEOF >+rm -f conftest.err conftest.$ac_ext > >-# The following way of writing the cache mishandles newlines in values, >-# but we know of no workaround that is simple, portable, and efficient. >-# So, we kill variables containing newlines. >-# Ultrix sh set writes to stderr and can't be redirected directly, >-# and sets the high bit in the cache file unless we assign to the vars. >-( >- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do >+ # OK, works on sane cases. Now check whether nonexistent headers >+ # can be detected and how. >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#include <ac_nonexistent.h> >+_ACEOF >+if { (ac_try="$ac_cpp conftest.$ac_ext" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 >+ ac_status=$? >+ grep -v '^ *+' conftest.er1 >conftest.err >+ rm -f conftest.er1 >+ cat conftest.err >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } >/dev/null && { >+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || >+ test ! -s conftest.err >+ }; then >+ # Broken: success on invalid input. >+continue >+else >+ $as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 >+ >+ # Passes both tests. >+ac_preproc_ok=: >+break >+fi >+ >+rm -f conftest.err conftest.$ac_ext >+ >+done >+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. >+rm -f conftest.err conftest.$ac_ext >+if $ac_preproc_ok; then >+ : >+else >+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 >+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} >+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check >+See \`config.log' for more details." >&5 >+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check >+See \`config.log' for more details." >&2;} >+ { (exit 1); exit 1; }; }; } >+fi >+ >+ac_ext=c >+ac_cpp='$CPP $CPPFLAGS' >+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' >+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' >+ac_compiler_gnu=$ac_cv_c_compiler_gnu >+ >+ >+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 >+$as_echo_n "checking for grep that handles long lines and -e... " >&6; } >+if test "${ac_cv_path_GREP+set}" = set; then >+ $as_echo_n "(cached) " >&6 >+else >+ if test -z "$GREP"; then >+ ac_path_GREP_found=false >+ # Loop through the user's path and test for each of PROGNAME-LIST >+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin >+do >+ IFS=$as_save_IFS >+ test -z "$as_dir" && as_dir=. >+ for ac_prog in grep ggrep; do >+ for ac_exec_ext in '' $ac_executable_extensions; do >+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" >+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue >+# Check for GNU ac_path_GREP and select it if it is found. >+ # Check for GNU $ac_path_GREP >+case `"$ac_path_GREP" --version 2>&1` in >+*GNU*) >+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; >+*) >+ ac_count=0 >+ $as_echo_n 0123456789 >"conftest.in" >+ while : >+ do >+ cat "conftest.in" "conftest.in" >"conftest.tmp" >+ mv "conftest.tmp" "conftest.in" >+ cp "conftest.in" "conftest.nl" >+ $as_echo 'GREP' >> "conftest.nl" >+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break >+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break >+ ac_count=`expr $ac_count + 1` >+ if test $ac_count -gt ${ac_path_GREP_max-0}; then >+ # Best one so far, save it but keep looking for a better one >+ ac_cv_path_GREP="$ac_path_GREP" >+ ac_path_GREP_max=$ac_count >+ fi >+ # 10*(2^10) chars as input seems more than enough >+ test $ac_count -gt 10 && break >+ done >+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; >+esac >+ >+ $ac_path_GREP_found && break 3 >+ done >+ done >+done >+IFS=$as_save_IFS >+ if test -z "$ac_cv_path_GREP"; then >+ { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 >+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} >+ { (exit 1); exit 1; }; } >+ fi >+else >+ ac_cv_path_GREP=$GREP >+fi >+ >+fi >+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 >+$as_echo "$ac_cv_path_GREP" >&6; } >+ GREP="$ac_cv_path_GREP" >+ >+ >+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 >+$as_echo_n "checking for egrep... " >&6; } >+if test "${ac_cv_path_EGREP+set}" = set; then >+ $as_echo_n "(cached) " >&6 >+else >+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 >+ then ac_cv_path_EGREP="$GREP -E" >+ else >+ if test -z "$EGREP"; then >+ ac_path_EGREP_found=false >+ # Loop through the user's path and test for each of PROGNAME-LIST >+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR >+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin >+do >+ IFS=$as_save_IFS >+ test -z "$as_dir" && as_dir=. >+ for ac_prog in egrep; do >+ for ac_exec_ext in '' $ac_executable_extensions; do >+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" >+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue >+# Check for GNU ac_path_EGREP and select it if it is found. >+ # Check for GNU $ac_path_EGREP >+case `"$ac_path_EGREP" --version 2>&1` in >+*GNU*) >+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; >+*) >+ ac_count=0 >+ $as_echo_n 0123456789 >"conftest.in" >+ while : >+ do >+ cat "conftest.in" "conftest.in" >"conftest.tmp" >+ mv "conftest.tmp" "conftest.in" >+ cp "conftest.in" "conftest.nl" >+ $as_echo 'EGREP' >> "conftest.nl" >+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break >+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break >+ ac_count=`expr $ac_count + 1` >+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then >+ # Best one so far, save it but keep looking for a better one >+ ac_cv_path_EGREP="$ac_path_EGREP" >+ ac_path_EGREP_max=$ac_count >+ fi >+ # 10*(2^10) chars as input seems more than enough >+ test $ac_count -gt 10 && break >+ done >+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; >+esac >+ >+ $ac_path_EGREP_found && break 3 >+ done >+ done >+done >+IFS=$as_save_IFS >+ if test -z "$ac_cv_path_EGREP"; then >+ { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 >+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} >+ { (exit 1); exit 1; }; } >+ fi >+else >+ ac_cv_path_EGREP=$EGREP >+fi >+ >+ fi >+fi >+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 >+$as_echo "$ac_cv_path_EGREP" >&6; } >+ EGREP="$ac_cv_path_EGREP" >+ >+ >+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 >+$as_echo_n "checking for ANSI C header files... " >&6; } >+if test "${ac_cv_header_stdc+set}" = set; then >+ $as_echo_n "(cached) " >&6 >+else >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#include <stdlib.h> >+#include <stdarg.h> >+#include <string.h> >+#include <float.h> >+ >+int >+main () >+{ >+ >+ ; >+ return 0; >+} >+_ACEOF >+rm -f conftest.$ac_objext >+if { (ac_try="$ac_compile" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_compile") 2>conftest.er1 >+ ac_status=$? >+ grep -v '^ *+' conftest.er1 >conftest.err >+ rm -f conftest.er1 >+ cat conftest.err >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } && { >+ test -z "$ac_c_werror_flag" || >+ test ! -s conftest.err >+ } && test -s conftest.$ac_objext; then >+ ac_cv_header_stdc=yes >+else >+ $as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 >+ >+ ac_cv_header_stdc=no >+fi >+ >+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+ >+if test $ac_cv_header_stdc = yes; then >+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#include <string.h> >+ >+_ACEOF >+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >+ $EGREP "memchr" >/dev/null 2>&1; then >+ : >+else >+ ac_cv_header_stdc=no >+fi >+rm -f conftest* >+ >+fi >+ >+if test $ac_cv_header_stdc = yes; then >+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#include <stdlib.h> >+ >+_ACEOF >+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | >+ $EGREP "free" >/dev/null 2>&1; then >+ : >+else >+ ac_cv_header_stdc=no >+fi >+rm -f conftest* >+ >+fi >+ >+if test $ac_cv_header_stdc = yes; then >+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. >+ if test "$cross_compiling" = yes; then >+ : >+else >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#include <ctype.h> >+#include <stdlib.h> >+#if ((' ' & 0x0FF) == 0x020) >+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') >+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) >+#else >+# define ISLOWER(c) \ >+ (('a' <= (c) && (c) <= 'i') \ >+ || ('j' <= (c) && (c) <= 'r') \ >+ || ('s' <= (c) && (c) <= 'z')) >+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) >+#endif >+ >+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) >+int >+main () >+{ >+ int i; >+ for (i = 0; i < 256; i++) >+ if (XOR (islower (i), ISLOWER (i)) >+ || toupper (i) != TOUPPER (i)) >+ return 2; >+ return 0; >+} >+_ACEOF >+rm -f conftest$ac_exeext >+if { (ac_try="$ac_link" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_link") 2>&5 >+ ac_status=$? >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' >+ { (case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_try") 2>&5 >+ ac_status=$? >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); }; }; then >+ : >+else >+ $as_echo "$as_me: program exited with status $ac_status" >&5 >+$as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 >+ >+( exit $ac_status ) >+ac_cv_header_stdc=no >+fi >+rm -rf conftest.dSYM >+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext >+fi >+ >+ >+fi >+fi >+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 >+$as_echo "$ac_cv_header_stdc" >&6; } >+if test $ac_cv_header_stdc = yes; then >+ >+cat >>confdefs.h <<\_ACEOF >+#define STDC_HEADERS 1 >+_ACEOF >+ >+fi >+ >+# On IRIX 5.3, sys/types and inttypes.h are conflicting. >+ >+ >+ >+ >+ >+ >+ >+ >+ >+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ >+ inttypes.h stdint.h unistd.h >+do >+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` >+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 >+$as_echo_n "checking for $ac_header... " >&6; } >+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then >+ $as_echo_n "(cached) " >&6 >+else >+ cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+$ac_includes_default >+ >+#include <$ac_header> >+_ACEOF >+rm -f conftest.$ac_objext >+if { (ac_try="$ac_compile" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_compile") 2>conftest.er1 >+ ac_status=$? >+ grep -v '^ *+' conftest.er1 >conftest.err >+ rm -f conftest.er1 >+ cat conftest.err >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } && { >+ test -z "$ac_c_werror_flag" || >+ test ! -s conftest.err >+ } && test -s conftest.$ac_objext; then >+ eval "$as_ac_Header=yes" >+else >+ $as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 >+ >+ eval "$as_ac_Header=no" >+fi >+ >+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+fi >+ac_res=`eval 'as_val=${'$as_ac_Header'} >+ $as_echo "$as_val"'` >+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 >+$as_echo "$ac_res" >&6; } >+as_val=`eval 'as_val=${'$as_ac_Header'} >+ $as_echo "$as_val"'` >+ if test "x$as_val" = x""yes; then >+ cat >>confdefs.h <<_ACEOF >+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 >+_ACEOF >+ >+fi >+ >+done >+ >+ >+ >+for ac_header in naaeap/naaeap.h >+do >+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` >+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then >+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 >+$as_echo_n "checking for $ac_header... " >&6; } >+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then >+ $as_echo_n "(cached) " >&6 >+fi >+ac_res=`eval 'as_val=${'$as_ac_Header'} >+ $as_echo "$as_val"'` >+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 >+$as_echo "$ac_res" >&6; } >+else >+ # Is the header compilable? >+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 >+$as_echo_n "checking $ac_header usability... " >&6; } >+cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+$ac_includes_default >+#include <$ac_header> >+_ACEOF >+rm -f conftest.$ac_objext >+if { (ac_try="$ac_compile" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_compile") 2>conftest.er1 >+ ac_status=$? >+ grep -v '^ *+' conftest.er1 >conftest.err >+ rm -f conftest.er1 >+ cat conftest.err >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } && { >+ test -z "$ac_c_werror_flag" || >+ test ! -s conftest.err >+ } && test -s conftest.$ac_objext; then >+ ac_header_compiler=yes >+else >+ $as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 >+ >+ ac_header_compiler=no >+fi >+ >+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext >+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 >+$as_echo "$ac_header_compiler" >&6; } >+ >+# Is the header present? >+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 >+$as_echo_n "checking $ac_header presence... " >&6; } >+cat >conftest.$ac_ext <<_ACEOF >+/* confdefs.h. */ >+_ACEOF >+cat confdefs.h >>conftest.$ac_ext >+cat >>conftest.$ac_ext <<_ACEOF >+/* end confdefs.h. */ >+#include <$ac_header> >+_ACEOF >+if { (ac_try="$ac_cpp conftest.$ac_ext" >+case "(($ac_try" in >+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; >+ *) ac_try_echo=$ac_try;; >+esac >+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" >+$as_echo "$ac_try_echo") >&5 >+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 >+ ac_status=$? >+ grep -v '^ *+' conftest.er1 >conftest.err >+ rm -f conftest.er1 >+ cat conftest.err >&5 >+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 >+ (exit $ac_status); } >/dev/null && { >+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || >+ test ! -s conftest.err >+ }; then >+ ac_header_preproc=yes >+else >+ $as_echo "$as_me: failed program was:" >&5 >+sed 's/^/| /' conftest.$ac_ext >&5 >+ >+ ac_header_preproc=no >+fi >+ >+rm -f conftest.err conftest.$ac_ext >+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 >+$as_echo "$ac_header_preproc" >&6; } >+ >+# So? What about this header? >+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in >+ yes:no: ) >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 >+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 >+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} >+ ac_header_preproc=yes >+ ;; >+ no:yes:* ) >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 >+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 >+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 >+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 >+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 >+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 >+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} >+ >+ ;; >+esac >+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 >+$as_echo_n "checking for $ac_header... " >&6; } >+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then >+ $as_echo_n "(cached) " >&6 >+else >+ eval "$as_ac_Header=\$ac_header_preproc" >+fi >+ac_res=`eval 'as_val=${'$as_ac_Header'} >+ $as_echo "$as_val"'` >+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 >+$as_echo "$ac_res" >&6; } >+ >+fi >+as_val=`eval 'as_val=${'$as_ac_Header'} >+ $as_echo "$as_val"'` >+ if test "x$as_val" = x""yes; then >+ cat >>confdefs.h <<_ACEOF >+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 >+_ACEOF >+ >+else >+ fail="$fail -Inaaeap.h" >+fi >+ >+done >+ >+ >+ targetname=rlm_eap_tnc >+else >+ targetname= >+ echo \*\*\* module rlm_eap_tnc is disabled. >+fi >+ >+if test x"$fail" != x""; then >+ if test x"${enable_strict_dependencies}" = x"yes"; then >+ { { $as_echo "$as_me:$LINENO: error: set --without-rlm_eap_tnc to disable it explicitly." >&5 >+$as_echo "$as_me: error: set --without-rlm_eap_tnc to disable it explicitly." >&2;} >+ { (exit 1); exit 1; }; } >+ else >+ { $as_echo "$as_me:$LINENO: WARNING: silently not building rlm_eap_tnc." >&5 >+$as_echo "$as_me: WARNING: silently not building rlm_eap_tnc." >&2;} >+ { $as_echo "$as_me:$LINENO: WARNING: FAILURE: rlm_eap_tnc requires: $fail." >&5 >+$as_echo "$as_me: WARNING: FAILURE: rlm_eap_tnc requires: $fail." >&2;}; >+ targetname="" >+ fi >+fi >+ >+ >+ >+ >+ac_config_files="$ac_config_files Makefile" >+ >+cat >confcache <<\_ACEOF >+# This file is a shell script that caches the results of configure >+# tests run on this system so they can be shared between configure >+# scripts and configure runs, see configure's option --config-cache. >+# It is not useful on other systems. If it contains results you don't >+# want to keep, you may remove or edit it. >+# >+# config.status only pays attention to the cache file if you give it >+# the --recheck option to rerun configure. >+# >+# `ac_cv_env_foo' variables (set or unset) will be overridden when >+# loading this file, other *unset* `ac_cv_foo' will be assigned the >+# following values. >+ >+_ACEOF >+ >+# The following way of writing the cache mishandles newlines in values, >+# but we know of no workaround that is simple, portable, and efficient. >+# So, we kill variables containing newlines. >+# Ultrix sh set writes to stderr and can't be redirected directly, >+# and sets the high bit in the cache file unless we assign to the vars. >+( >+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do > eval ac_val=\$$ac_var > case $ac_val in #( > *${as_nl}*) > case $ac_var in #( >- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 >-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; >+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 >+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; > esac > case $ac_var in #( > _ | IFS | as_nl) ;; #( >+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( > *) $as_unset $ac_var ;; > esac ;; > esac >@@ -2728,12 +3644,12 @@ echo "$as_me: WARNING: Cache variable $a > if diff "$cache_file" confcache >/dev/null 2>&1; then :; else > if test -w "$cache_file"; then > test "x$cache_file" != "x/dev/null" && >- { echo "$as_me:$LINENO: updating cache $cache_file" >&5 >-echo "$as_me: updating cache $cache_file" >&6;} >+ { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 >+$as_echo "$as_me: updating cache $cache_file" >&6;} > cat confcache >$cache_file > else >- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 >-echo "$as_me: not updating unwritable cache $cache_file" >&6;} >+ { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 >+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} > fi > fi > rm -f confcache >@@ -2750,6 +3666,12 @@ test "x$exec_prefix" = xNONE && exec_pre > # take arguments), then branch to the quote section. Otherwise, > # look for a macro that doesn't take arguments. > ac_script=' >+:mline >+/\\$/{ >+ N >+ s,\\\n,, >+ b mline >+} > t clear > :clear > s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g >@@ -2779,7 +3701,7 @@ ac_ltlibobjs= > for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue > # 1. Remove the extension, and $U if already installed. > ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' >- ac_i=`echo "$ac_i" | sed "$ac_script"` >+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"` > # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR > # will be set to the directory where LIBOBJS objects are built. > ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" >@@ -2792,11 +3714,12 @@ LTLIBOBJS=$ac_ltlibobjs > > > : ${CONFIG_STATUS=./config.status} >+ac_write_fail=0 > ac_clean_files_save=$ac_clean_files > ac_clean_files="$ac_clean_files $CONFIG_STATUS" >-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 >-echo "$as_me: creating $CONFIG_STATUS" >&6;} >-cat >$CONFIG_STATUS <<_ACEOF >+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 >+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} >+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 > #! $SHELL > # Generated by $as_me. > # Run this file to recreate the current configuration. >@@ -2809,7 +3732,7 @@ ac_cs_silent=false > SHELL=\${CONFIG_SHELL-$SHELL} > _ACEOF > >-cat >>$CONFIG_STATUS <<\_ACEOF >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 > ## --------------------- ## > ## M4sh Initialization. ## > ## --------------------- ## >@@ -2819,7 +3742,7 @@ DUALCASE=1; export DUALCASE # for MKS sh > if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then > emulate sh > NULLCMD=: >- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which >+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which > # is contrary to our usage. Disable this feature. > alias -g '${1+"$@"}'='"$@"' > setopt NO_GLOB_SUBST >@@ -2841,17 +3764,45 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTE > as_cr_digits='0123456789' > as_cr_alnum=$as_cr_Letters$as_cr_digits > >-# The user is always right. >-if test "${PATH_SEPARATOR+set}" != set; then >- echo "#! /bin/sh" >conf$$.sh >- echo "exit 0" >>conf$$.sh >- chmod +x conf$$.sh >- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then >- PATH_SEPARATOR=';' >+as_nl=' >+' >+export as_nl >+# Printing a long string crashes Solaris 7 /usr/bin/printf. >+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' >+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo >+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo >+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then >+ as_echo='printf %s\n' >+ as_echo_n='printf %s' >+else >+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then >+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' >+ as_echo_n='/usr/ucb/echo -n' > else >- PATH_SEPARATOR=: >+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' >+ as_echo_n_body='eval >+ arg=$1; >+ case $arg in >+ *"$as_nl"*) >+ expr "X$arg" : "X\\(.*\\)$as_nl"; >+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; >+ esac; >+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" >+ ' >+ export as_echo_n_body >+ as_echo_n='sh -c $as_echo_n_body as_echo' > fi >- rm -f conf$$.sh >+ export as_echo_body >+ as_echo='sh -c $as_echo_body as_echo' >+fi >+ >+# The user is always right. >+if test "${PATH_SEPARATOR+set}" != set; then >+ PATH_SEPARATOR=: >+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { >+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || >+ PATH_SEPARATOR=';' >+ } > fi > > # Support unset when possible. >@@ -2867,8 +3818,6 @@ fi > # there to prevent editors from complaining about space-tab. > # (If _AS_PATH_WALK were called with IFS unset, it would disable word > # splitting by setting IFS to empty value.) >-as_nl=' >-' > IFS=" "" $as_nl" > > # Find who we are. Look in the path if we contain no directory separator. >@@ -2891,7 +3840,7 @@ if test "x$as_myself" = x; then > as_myself=$0 > fi > if test ! -f "$as_myself"; then >- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 >+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 > { (exit 1); exit 1; } > fi > >@@ -2904,17 +3853,10 @@ PS2='> ' > PS4='+ ' > > # NLS nuisances. >-for as_var in \ >- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ >- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ >- LC_TELEPHONE LC_TIME >-do >- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then >- eval $as_var=C; export $as_var >- else >- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var >- fi >-done >+LC_ALL=C >+export LC_ALL >+LANGUAGE=C >+export LANGUAGE > > # Required to use basename. > if expr a : '\(a\)' >/dev/null 2>&1 && >@@ -2936,7 +3878,7 @@ as_me=`$as_basename -- "$0" || > $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ > X"$0" : 'X\(//\)$' \| \ > X"$0" : 'X\(/\)' \| . 2>/dev/null || >-echo X/"$0" | >+$as_echo X/"$0" | > sed '/^.*\/\([^/][^/]*\)\/*$/{ > s//\1/ > q >@@ -2987,7 +3929,7 @@ $as_unset CDPATH > s/-\n.*// > ' >$as_me.lineno && > chmod +x "$as_me.lineno" || >- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 >+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 > { (exit 1); exit 1; }; } > > # Don't try to exec as it changes $[0], causing all sort of problems >@@ -3015,7 +3957,6 @@ case `echo -n x` in > *) > ECHO_N='-n';; > esac >- > if expr a : '\(a\)' >/dev/null 2>&1 && > test "X`expr 00001 : '.*\(...\)'`" = X001; then > as_expr=expr >@@ -3028,19 +3969,22 @@ if test -d conf$$.dir; then > rm -f conf$$.dir/conf$$.file > else > rm -f conf$$.dir >- mkdir conf$$.dir >+ mkdir conf$$.dir 2>/dev/null > fi >-echo >conf$$.file >-if ln -s conf$$.file conf$$ 2>/dev/null; then >- as_ln_s='ln -s' >- # ... but there are two gotchas: >- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. >- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. >- # In both cases, we have to default to `cp -p'. >- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || >+if (echo >conf$$.file) 2>/dev/null; then >+ if ln -s conf$$.file conf$$ 2>/dev/null; then >+ as_ln_s='ln -s' >+ # ... but there are two gotchas: >+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. >+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. >+ # In both cases, we have to default to `cp -p'. >+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || >+ as_ln_s='cp -p' >+ elif ln conf$$.file conf$$ 2>/dev/null; then >+ as_ln_s=ln >+ else > as_ln_s='cp -p' >-elif ln conf$$.file conf$$ 2>/dev/null; then >- as_ln_s=ln >+ fi > else > as_ln_s='cp -p' > fi >@@ -3065,10 +4009,10 @@ else > as_test_x=' > eval sh -c '\'' > if test -d "$1"; then >- test -d "$1/."; >+ test -d "$1/."; > else > case $1 in >- -*)set "./$1";; >+ -*)set "./$1";; > esac; > case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in > ???[sx]*):;;*)false;;esac;fi >@@ -3091,7 +4035,7 @@ exec 6>&1 > # values after options handling. > ac_log=" > This file was extended by $as_me, which was >-generated by GNU Autoconf 2.61. Invocation command line was >+generated by GNU Autoconf 2.63. Invocation command line was > > CONFIG_FILES = $CONFIG_FILES > CONFIG_HEADERS = $CONFIG_HEADERS >@@ -3104,26 +4048,33 @@ on `(hostname || uname -n) 2>/dev/null | > > _ACEOF > >-cat >>$CONFIG_STATUS <<_ACEOF >+case $ac_config_files in *" >+"*) set x $ac_config_files; shift; ac_config_files=$*;; >+esac >+ >+ >+ >+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 > # Files that config.status was made for. > config_files="$ac_config_files" > > _ACEOF > >-cat >>$CONFIG_STATUS <<\_ACEOF >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 > ac_cs_usage="\ > \`$as_me' instantiates files from templates according to the > current configuration. > >-Usage: $0 [OPTIONS] [FILE]... >+Usage: $0 [OPTION]... [FILE]... > > -h, --help print this help, then exit > -V, --version print version number and configuration settings, then exit >- -q, --quiet do not print progress messages >+ -q, --quiet, --silent >+ do not print progress messages > -d, --debug don't remove temporary files > --recheck update $as_me by reconfiguring in the same conditions >- --file=FILE[:TEMPLATE] >- instantiate the configuration file FILE >+ --file=FILE[:TEMPLATE] >+ instantiate the configuration file FILE > > Configuration files: > $config_files >@@ -3131,23 +4082,23 @@ $config_files > Report bugs to <bug-autoconf@gnu.org>." > > _ACEOF >-cat >>$CONFIG_STATUS <<_ACEOF >+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 > ac_cs_version="\\ > config.status >-configured by $0, generated by GNU Autoconf 2.61, >- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" >+configured by $0, generated by GNU Autoconf 2.63, >+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" > >-Copyright (C) 2006 Free Software Foundation, Inc. >+Copyright (C) 2008 Free Software Foundation, Inc. > This config.status script is free software; the Free Software Foundation > gives unlimited permission to copy, distribute and modify it." > > ac_pwd='$ac_pwd' > srcdir='$srcdir' >+test -n "\$AWK" || AWK=awk > _ACEOF > >-cat >>$CONFIG_STATUS <<\_ACEOF >-# If no file are specified by the user, then we need to provide default >-# value. By we need to know if files were specified by the user. >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 >+# The default lists apply if the user does not specify any file. > ac_need_defaults=: > while test $# != 0 > do >@@ -3169,21 +4120,24 @@ do > -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) > ac_cs_recheck=: ;; > --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) >- echo "$ac_cs_version"; exit ;; >+ $as_echo "$ac_cs_version"; exit ;; > --debug | --debu | --deb | --de | --d | -d ) > debug=: ;; > --file | --fil | --fi | --f ) > $ac_shift >- CONFIG_FILES="$CONFIG_FILES $ac_optarg" >+ case $ac_optarg in >+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; >+ esac >+ CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" > ac_need_defaults=false;; > --he | --h | --help | --hel | -h ) >- echo "$ac_cs_usage"; exit ;; >+ $as_echo "$ac_cs_usage"; exit ;; > -q | -quiet | --quiet | --quie | --qui | --qu | --q \ > | -silent | --silent | --silen | --sile | --sil | --si | --s) > ac_cs_silent=: ;; > > # This is an error. >- -*) { echo "$as_me: error: unrecognized option: $1 >+ -*) { $as_echo "$as_me: error: unrecognized option: $1 > Try \`$0 --help' for more information." >&2 > { (exit 1); exit 1; }; } ;; > >@@ -3202,30 +4156,32 @@ if $ac_cs_silent; then > fi > > _ACEOF >-cat >>$CONFIG_STATUS <<_ACEOF >+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 > if \$ac_cs_recheck; then >- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 >- CONFIG_SHELL=$SHELL >+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion >+ shift >+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 >+ CONFIG_SHELL='$SHELL' > export CONFIG_SHELL >- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion >+ exec "\$@" > fi > > _ACEOF >-cat >>$CONFIG_STATUS <<\_ACEOF >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 > exec 5>>config.log > { > echo > sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX > ## Running $as_me. ## > _ASBOX >- echo "$ac_log" >+ $as_echo "$ac_log" > } >&5 > > _ACEOF >-cat >>$CONFIG_STATUS <<_ACEOF >+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 > _ACEOF > >-cat >>$CONFIG_STATUS <<\_ACEOF >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 > > # Handling of arguments. > for ac_config_target in $ac_config_targets >@@ -3233,8 +4189,8 @@ do > case $ac_config_target in > "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; > >- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 >-echo "$as_me: error: invalid argument: $ac_config_target" >&2;} >+ *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 >+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} > { (exit 1); exit 1; }; };; > esac > done >@@ -3273,113 +4229,143 @@ $debug || > (umask 077 && mkdir "$tmp") > } || > { >- echo "$me: cannot create a temporary directory in ." >&2 >+ $as_echo "$as_me: cannot create a temporary directory in ." >&2 > { (exit 1); exit 1; } > } > >-# >-# Set up the sed scripts for CONFIG_FILES section. >-# >- >-# No need to generate the scripts if there are no CONFIG_FILES. >-# This happens for instance when ./config.status config.h >+# Set up the scripts for CONFIG_FILES section. >+# No need to generate them if there are no CONFIG_FILES. >+# This happens for instance with `./config.status config.h'. > if test -n "$CONFIG_FILES"; then > >-_ACEOF > >+ac_cr=' ' >+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` >+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then >+ ac_cs_awk_cr='\\r' >+else >+ ac_cs_awk_cr=$ac_cr >+fi >+ >+echo 'BEGIN {' >"$tmp/subs1.awk" && >+_ACEOF > > >+{ >+ echo "cat >conf$$subs.awk <<_ACEOF" && >+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && >+ echo "_ACEOF" >+} >conf$$subs.sh || >+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 >+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} >+ { (exit 1); exit 1; }; } >+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` > ac_delim='%!_!# ' > for ac_last_try in false false false false false :; do >- cat >conf$$subs.sed <<_ACEOF >-SHELL!$SHELL$ac_delim >-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim >-PACKAGE_NAME!$PACKAGE_NAME$ac_delim >-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim >-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim >-PACKAGE_STRING!$PACKAGE_STRING$ac_delim >-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim >-exec_prefix!$exec_prefix$ac_delim >-prefix!$prefix$ac_delim >-program_transform_name!$program_transform_name$ac_delim >-bindir!$bindir$ac_delim >-sbindir!$sbindir$ac_delim >-libexecdir!$libexecdir$ac_delim >-datarootdir!$datarootdir$ac_delim >-datadir!$datadir$ac_delim >-sysconfdir!$sysconfdir$ac_delim >-sharedstatedir!$sharedstatedir$ac_delim >-localstatedir!$localstatedir$ac_delim >-includedir!$includedir$ac_delim >-oldincludedir!$oldincludedir$ac_delim >-docdir!$docdir$ac_delim >-infodir!$infodir$ac_delim >-htmldir!$htmldir$ac_delim >-dvidir!$dvidir$ac_delim >-pdfdir!$pdfdir$ac_delim >-psdir!$psdir$ac_delim >-libdir!$libdir$ac_delim >-localedir!$localedir$ac_delim >-mandir!$mandir$ac_delim >-DEFS!$DEFS$ac_delim >-ECHO_C!$ECHO_C$ac_delim >-ECHO_N!$ECHO_N$ac_delim >-ECHO_T!$ECHO_T$ac_delim >-LIBS!$LIBS$ac_delim >-build_alias!$build_alias$ac_delim >-host_alias!$host_alias$ac_delim >-target_alias!$target_alias$ac_delim >-CC!$CC$ac_delim >-CFLAGS!$CFLAGS$ac_delim >-LDFLAGS!$LDFLAGS$ac_delim >-CPPFLAGS!$CPPFLAGS$ac_delim >-ac_ct_CC!$ac_ct_CC$ac_delim >-EXEEXT!$EXEEXT$ac_delim >-OBJEXT!$OBJEXT$ac_delim >-eap_tnc_cflags!$eap_tnc_cflags$ac_delim >-eap_tnc_ldflags!$eap_tnc_ldflags$ac_delim >-targetname!$targetname$ac_delim >-LIBOBJS!$LIBOBJS$ac_delim >-LTLIBOBJS!$LTLIBOBJS$ac_delim >-_ACEOF >+ . ./conf$$subs.sh || >+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 >+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} >+ { (exit 1); exit 1; }; } > >- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 49; then >+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` >+ if test $ac_delim_n = $ac_delim_num; then > break > elif $ac_last_try; then >- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 >-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} >+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 >+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} > { (exit 1); exit 1; }; } > else > ac_delim="$ac_delim!$ac_delim _$ac_delim!! " > fi > done >+rm -f conf$$subs.sh > >-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` >-if test -n "$ac_eof"; then >- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` >- ac_eof=`expr $ac_eof + 1` >-fi >- >-cat >>$CONFIG_STATUS <<_ACEOF >-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof >-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end >-_ACEOF >-sed ' >-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g >-s/^/s,@/; s/!/@,|#_!!_#|/ >-:n >-t n >-s/'"$ac_delim"'$/,g/; t >-s/$/\\/; p >-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n >-' >>$CONFIG_STATUS <conf$$subs.sed >-rm -f conf$$subs.sed >-cat >>$CONFIG_STATUS <<_ACEOF >-:end >-s/|#_!!_#|//g >-CEOF$ac_eof >+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 >+cat >>"\$tmp/subs1.awk" <<\\_ACAWK && > _ACEOF >+sed -n ' >+h >+s/^/S["/; s/!.*/"]=/ >+p >+g >+s/^[^!]*!// >+:repl >+t repl >+s/'"$ac_delim"'$// >+t delim >+:nl >+h >+s/\(.\{148\}\).*/\1/ >+t more1 >+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ >+p >+n >+b repl >+:more1 >+s/["\\]/\\&/g; s/^/"/; s/$/"\\/ >+p >+g >+s/.\{148\}// >+t nl >+:delim >+h >+s/\(.\{148\}\).*/\1/ >+t more2 >+s/["\\]/\\&/g; s/^/"/; s/$/"/ >+p >+b >+:more2 >+s/["\\]/\\&/g; s/^/"/; s/$/"\\/ >+p >+g >+s/.\{148\}// >+t delim >+' <conf$$subs.awk | sed ' >+/^[^""]/{ >+ N >+ s/\n// >+} >+' >>$CONFIG_STATUS || ac_write_fail=1 >+rm -f conf$$subs.awk >+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 >+_ACAWK >+cat >>"\$tmp/subs1.awk" <<_ACAWK && >+ for (key in S) S_is_set[key] = 1 >+ FS = "" > >+} >+{ >+ line = $ 0 >+ nfields = split(line, field, "@") >+ substed = 0 >+ len = length(field[1]) >+ for (i = 2; i < nfields; i++) { >+ key = field[i] >+ keylen = length(key) >+ if (S_is_set[key]) { >+ value = S[key] >+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) >+ len += length(value) + length(field[++i]) >+ substed = 1 >+ } else >+ len += 1 + keylen >+ } >+ >+ print line >+} >+ >+_ACAWK >+_ACEOF >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 >+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then >+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" >+else >+ cat >+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ >+ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 >+$as_echo "$as_me: error: could not setup config files machinery" >&2;} >+ { (exit 1); exit 1; }; } >+_ACEOF > > # VPATH may cause trouble with some makes, so we remove $(srcdir), > # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and >@@ -3396,19 +4382,21 @@ s/^[^=]*=[ ]*$// > }' > fi > >-cat >>$CONFIG_STATUS <<\_ACEOF >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 > fi # test -n "$CONFIG_FILES" > > >-for ac_tag in :F $CONFIG_FILES >+eval set X " :F $CONFIG_FILES " >+shift >+for ac_tag > do > case $ac_tag in > :[FHLC]) ac_mode=$ac_tag; continue;; > esac > case $ac_mode$ac_tag in > :[FHL]*:*);; >- :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 >-echo "$as_me: error: Invalid tag $ac_tag." >&2;} >+ :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 >+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} > { (exit 1); exit 1; }; };; > :[FH]-) ac_tag=-:-;; > :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; >@@ -3437,26 +4425,38 @@ echo "$as_me: error: Invalid tag $ac_tag > [\\/$]*) false;; > *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; > esac || >- { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 >-echo "$as_me: error: cannot find input file: $ac_f" >&2;} >+ { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 >+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} > { (exit 1); exit 1; }; };; > esac >- ac_file_inputs="$ac_file_inputs $ac_f" >+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac >+ ac_file_inputs="$ac_file_inputs '$ac_f'" > done > > # Let's still pretend it is `configure' which instantiates (i.e., don't > # use $as_me), people would be surprised to read: > # /* config.h. Generated by config.status. */ >- configure_input="Generated from "`IFS=: >- echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." >+ configure_input='Generated from '` >+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' >+ `' by configure.' > if test x"$ac_file" != x-; then > configure_input="$ac_file. $configure_input" >- { echo "$as_me:$LINENO: creating $ac_file" >&5 >-echo "$as_me: creating $ac_file" >&6;} >+ { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 >+$as_echo "$as_me: creating $ac_file" >&6;} > fi >+ # Neutralize special characters interpreted by sed in replacement strings. >+ case $configure_input in #( >+ *\&* | *\|* | *\\* ) >+ ac_sed_conf_input=`$as_echo "$configure_input" | >+ sed 's/[\\\\&|]/\\\\&/g'`;; #( >+ *) ac_sed_conf_input=$configure_input;; >+ esac > > case $ac_tag in >- *:-:* | *:-) cat >"$tmp/stdin";; >+ *:-:* | *:-) cat >"$tmp/stdin" \ >+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 >+$as_echo "$as_me: error: could not create $ac_file" >&2;} >+ { (exit 1); exit 1; }; } ;; > esac > ;; > esac >@@ -3466,7 +4466,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^ > X"$ac_file" : 'X\(//\)[^/]' \| \ > X"$ac_file" : 'X\(//\)$' \| \ > X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || >-echo X"$ac_file" | >+$as_echo X"$ac_file" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -3492,7 +4492,7 @@ echo X"$ac_file" | > as_dirs= > while :; do > case $as_dir in #( >- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( >+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( > *) as_qdir=$as_dir;; > esac > as_dirs="'$as_qdir' $as_dirs" >@@ -3501,7 +4501,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/ > X"$as_dir" : 'X\(//\)[^/]' \| \ > X"$as_dir" : 'X\(//\)$' \| \ > X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || >-echo X"$as_dir" | >+$as_echo X"$as_dir" | > sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ > s//\1/ > q >@@ -3522,17 +4522,17 @@ echo X"$as_dir" | > test -d "$as_dir" && break > done > test -z "$as_dirs" || eval "mkdir $as_dirs" >- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 >-echo "$as_me: error: cannot create directory $as_dir" >&2;} >+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 >+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} > { (exit 1); exit 1; }; }; } > ac_builddir=. > > case "$ac_dir" in > .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; > *) >- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` >+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` > # A ".." for each directory in $ac_dir_suffix. >- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` >+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` > case $ac_top_builddir_sub in > "") ac_top_builddir_sub=. ac_top_build_prefix= ;; > *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; >@@ -3568,12 +4568,13 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_ > > _ACEOF > >-cat >>$CONFIG_STATUS <<\_ACEOF >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 > # If the template does not know about datarootdir, expand it. > # FIXME: This hack should be removed a few years after 2.60. > ac_datarootdir_hack=; ac_datarootdir_seen= > >-case `sed -n '/datarootdir/ { >+ac_sed_dataroot=' >+/datarootdir/ { > p > q > } >@@ -3582,13 +4583,14 @@ case `sed -n '/datarootdir/ { > /@infodir@/p > /@localedir@/p > /@mandir@/p >-' $ac_file_inputs` in >+' >+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in > *datarootdir*) ac_datarootdir_seen=yes;; > *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) >- { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 >-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 >+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} > _ACEOF >-cat >>$CONFIG_STATUS <<_ACEOF >+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 > ac_datarootdir_hack=' > s&@datadir@&$datadir&g > s&@docdir@&$docdir&g >@@ -3602,15 +4604,16 @@ _ACEOF > # Neutralize VPATH when `$srcdir' = `.'. > # Shell code in configure.ac might set extrasub. > # FIXME: do we really want to maintain this feature? >-cat >>$CONFIG_STATUS <<_ACEOF >- sed "$ac_vpsub >+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 >+ac_sed_extra="$ac_vpsub > $extrasub > _ACEOF >-cat >>$CONFIG_STATUS <<\_ACEOF >+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 > :t > /@[a-zA-Z_][a-zA-Z_0-9]*@/!b >-s&@configure_input@&$configure_input&;t t >+s|@configure_input@|$ac_sed_conf_input|;t t > s&@top_builddir@&$ac_top_builddir_sub&;t t >+s&@top_build_prefix@&$ac_top_build_prefix&;t t > s&@srcdir@&$ac_srcdir&;t t > s&@abs_srcdir@&$ac_abs_srcdir&;t t > s&@top_srcdir@&$ac_top_srcdir&;t t >@@ -3619,21 +4622,28 @@ s&@builddir@&$ac_builddir&;t t > s&@abs_builddir@&$ac_abs_builddir&;t t > s&@abs_top_builddir@&$ac_abs_top_builddir&;t t > $ac_datarootdir_hack >-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out >+" >+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ >+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 >+$as_echo "$as_me: error: could not create $ac_file" >&2;} >+ { (exit 1); exit 1; }; } > > test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && > { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && > { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && >- { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' >+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' > which seems to be undefined. Please make sure it is defined." >&5 >-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' >+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' > which seems to be undefined. Please make sure it is defined." >&2;} > > rm -f "$tmp/stdin" > case $ac_file in >- -) cat "$tmp/out"; rm -f "$tmp/out";; >- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; >- esac >+ -) cat "$tmp/out" && rm -f "$tmp/out";; >+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; >+ esac \ >+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 >+$as_echo "$as_me: error: could not create $ac_file" >&2;} >+ { (exit 1); exit 1; }; } > ;; > > >@@ -3648,6 +4658,11 @@ _ACEOF > chmod +x $CONFIG_STATUS > ac_clean_files=$ac_clean_files_save > >+test $ac_write_fail = 0 || >+ { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 >+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} >+ { (exit 1); exit 1; }; } >+ > > # configure is writing to config.log, and then calls config.status. > # config.status does its own redirection, appending to config.log. >@@ -3669,5 +4684,8 @@ if test "$no_create" != yes; then > # would make configure fail if this is the last instruction. > $ac_cs_success || { (exit 1); exit 1; } > fi >- >+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then >+ { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 >+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} >+fi > >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/configure.in freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/configure.in >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/configure.in 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/configure.in 2013-01-29 16:56:18.790938644 -0500 >@@ -2,13 +2,21 @@ AC_INIT(rlm_eap_tnc.c) > AC_REVISION($Revision$) > AC_DEFUN(modname,[rlm_eap_tnc]) > >+eap_tnc_cflags= >+ > if test x$with_[]modname != xno; then > >- AC_CHECK_LIB(TNCS, exchangeTNCCSMessages) >- if test "x$ac_cv_lib_tncs_exchangetnccsmessages" != xyes; then >- AC_MSG_WARN([the TNCS library isn't found!]) >- fail="$fail -lTNCS" >- fi >+ AC_CHECK_LIB(naaeap,processEAPTNCData,,fail="$fail -lnaaeap",) >+dnl if test -x"$ac_cv_lib_NAAEAP_processEAPTNCData" == -x"no"; then >+dnl AC_MSG_WARN([the NAAEAP library was not found!]) >+dnl fail="$fail -lNAAEAP" >+dnl fi >+ >+ AC_CHECK_HEADERS(naaeap/naaeap.h,,fail="$fail -Inaaeap.h",) >+dnl if test -x"$ac_cv_header_naaeap_h" == -x"no"; then >+dnl AC_MSG_WARN([the naaeap header was not found!]) >+dnl fail="$fail -Inaaeap.h" >+dnl fi > > targetname=modname > else >@@ -28,7 +36,6 @@ if test x"$fail" != x""; then > fi > > AC_SUBST(eap_tnc_cflags) >-AC_SUBST(eap_tnc_ldflags) > > AC_SUBST(targetname) > AC_OUTPUT(Makefile) >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/eap_tnc.c freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/eap_tnc.c >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/eap_tnc.c 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/eap_tnc.c 2013-01-29 16:56:18.789938663 -0500 >@@ -1,12 +1,12 @@ > /* > * eap_tnc.c EAP TNC functionality. > * >- * This software is Copyright (C) 2006,2007 FH Hannover >+ * This software is Copyright (C) 2006-2009 FH Hannover > * > * Portions of this code unrelated to FreeRADIUS are available > * separately under a commercial license. If you require an > * implementation of EAP-TNC that is not under the GPLv2, please >- * contact tnc@inform.fh-hannover.de for details. >+ * contact trust@f4-i.fh-hannover.de for details. > * > * This program is free software; you can redistribute it and/or modify > * it under the terms of the GNU General Public License as published by >@@ -23,230 +23,41 @@ > * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA > * > */ >-#include <freeradius-devel/ident.h> >-RCSID("$Id$") >- >- >-/* >- * >- * MD5 Packet Format in EAP Type-Data >- * --- ------ ------ -- --- --------- >- * 0 1 2 3 >- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * | Value-Size | Value ... >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * | Name ... >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * >- * EAP-TNC Packet Format in EAP Type-Data >- * >- * 0 1 2 3 >- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * | Flags |Ver | Data Length ... >- * |L M S R R|=1 | >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * |... | Data ... >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- >- * >- */ >- > #include <stdio.h> > #include <stdlib.h> > #include "eap.h" > > #include "eap_tnc.h" > >- /* >- * WTF is wrong with htonl ? >- */ >-static uint32_t ByteSwap2 (uint32_t nLongNumber) >-{ >- return (((nLongNumber&0x000000FF)<<24)+((nLongNumber&0x0000FF00)<<8)+ >- ((nLongNumber&0x00FF0000)>>8)+((nLongNumber&0xFF000000)>>24)); >-} >- >-/* >- * Allocate a new TNC_PACKET >- */ >-TNC_PACKET *eaptnc_alloc(void) >-{ >- TNC_PACKET *rp; >- >- if ((rp = malloc(sizeof(TNC_PACKET))) == NULL) { >- radlog(L_ERR, "rlm_eap_tnc: out of memory"); >- return NULL; >- } >- memset(rp, 0, sizeof(TNC_PACKET)); >- return rp; >-} >- >-/* >- * Free TNC_PACKET >- */ >-void eaptnc_free(TNC_PACKET **tnc_packet_ptr) >-{ >- TNC_PACKET *tnc_packet; >- >- if (!tnc_packet_ptr) return; >- tnc_packet = *tnc_packet_ptr; >- if (tnc_packet == NULL) return; >- >- if (tnc_packet->data) free(tnc_packet->data); >- >- free(tnc_packet); >- >- *tnc_packet_ptr = NULL; >-} >- > /* >- * We expect only RESPONSE for which REQUEST, SUCCESS or FAILURE is sent back >+ * Forms an EAP_REQUEST packet from the EAP_TNC specific data. > */ >-TNC_PACKET *eaptnc_extract(EAP_DS *eap_ds) >+int eaptnc_compose(EAP_HANDLER *handler, TNC_BufferReference request, TNC_UInt32 length, uint8_t code) > { >- tnc_packet_t *data; >- TNC_PACKET *packet; >- /* >- * We need a response, of type EAP-TNC >- */ >- if (!eap_ds || >- !eap_ds->response || >- (eap_ds->response->code != PW_TNC_RESPONSE) || >- eap_ds->response->type.type != PW_EAP_TNC || >- !eap_ds->response->type.data || >- (eap_ds->response->length <= TNC_HEADER_LEN) || >- (eap_ds->response->type.data[0] <= 0)) { >- radlog(L_ERR, "rlm_eap_tnc: corrupted data"); >- return NULL; >+ // check parameters >+ if(handler == NULL || (request == NULL && length != 0) || (request != NULL && length < 1) || code > PW_EAP_MAX_CODES){ >+ radlog(L_ERR, "rlm_eap_tnc: eaptnc_compose invalid parameters: handler == %p, request == %p, length == %lu, code == %u", handler, request, length, code); >+ return 0; > } >- packet = eaptnc_alloc(); >- if (!packet) return NULL; >- >- >- packet->code = eap_ds->response->code; >- packet->id = eap_ds->response->id; >- packet->length = eap_ds->response->length; >- >- data = (tnc_packet_t *)eap_ds->response->type.data; >- /* >- * Already checked the size above. >- */ >- packet->flags_ver = data->flags_ver; >- unsigned char *ptr = (unsigned char*)data; >- >- >- DEBUG2("Flags/Ver: %x\n", packet->flags_ver); >- int thisDataLength; >- int dataStart; >- if(TNC_LENGTH_INCLUDED(packet->flags_ver)){ >- DEBUG2("data_length included\n"); >-// memcpy(&packet->flags_ver[1], &data->flags_ver[1], 4); >- //packet->data_length = data->data_length; >- memcpy(&packet->data_length, &ptr[1], TNC_DATA_LENGTH_LENGTH); >- DEBUG2("data_length: %x\n", packet->data_length); >- DEBUG2("data_length: %d\n", packet->data_length); >- DEBUG2("data_length: %x\n", ByteSwap2(packet->data_length)); >- DEBUG2("data_length: %d\n", ByteSwap2(packet->data_length)); >- packet->data_length = ByteSwap2(packet->data_length); >- thisDataLength = packet->length-TNC_PACKET_LENGTH; //1: we need space for flags_ver >- dataStart = TNC_DATA_LENGTH_LENGTH+TNC_FLAGS_VERSION_LENGTH; >- }else{ >- DEBUG2("no data_length included\n"); >- thisDataLength = packet->length-TNC_PACKET_LENGTH_WITHOUT_DATA_LENGTH; >- packet->data_length = 0; >- dataStart = TNC_FLAGS_VERSION_LENGTH; >- >- } >- /* >- * Allocate room for the data, and copy over the data. >- */ >- packet->data = malloc(thisDataLength); >- if (packet->data == NULL) { >- radlog(L_ERR, "rlm_eap_tnc: out of memory"); >- eaptnc_free(&packet); >- return NULL; >+ >+ // further check parameters >+ if(handler->opaque == NULL || handler->eap_ds == NULL){ >+ radlog(L_ERR, "rlm_eap_tnc: eaptnc_compose invalid parameters: handler->opaque == %p, handler->eap_ds == %p", handler->opaque, handler->eap_ds); >+ return 0; > } >- >- memcpy(packet->data, &(eap_ds->response->type.data[dataStart]), thisDataLength); >- >- return packet; >-} >- >- >-/* >- * Compose the portions of the reply packet specific to the >- * EAP-TNC protocol, in the EAP reply typedata >- */ >-int eaptnc_compose(EAP_DS *eap_ds, TNC_PACKET *reply) >-{ >- uint8_t *ptr; >- >- >- if (reply->code < 3) { >- //fill: EAP-Type (0x888e) >- eap_ds->request->type.type = PW_EAP_TNC; >- DEBUG2("TYPE: EAP-TNC set\n"); >- rad_assert(reply->length > 0); >- >- //alloc enough space for whole TNC-Packet (from Code on) >- eap_ds->request->type.data = calloc(reply->length, sizeof(unsigned char*)); >- DEBUG2("Malloc %d bytes for packet\n", reply->length); >- if (eap_ds->request->type.data == NULL) { >- radlog(L_ERR, "rlm_eap_tnc: out of memory"); >- return 0; >- } >- //put pointer at position where data starts (behind Type) >- ptr = eap_ds->request->type.data; >- //*ptr = (uint8_t)(reply->data_length & 0xFF); >- >- //ptr++; >- *ptr = reply->flags_ver; >- DEBUG2("Set Flags/Version: %d\n", *ptr); >- if(reply->data_length!=0){ >- DEBUG2("Set data-length: %d\n", reply->data_length); >- ptr++; //move to start-position of "data_length" >- DEBUG2("Set data-length: %x\n", reply->data_length); >- DEBUG2("Set data-length (swapped): %x\n", ByteSwap2(reply->data_length)); >- unsigned long swappedDataLength = ByteSwap2(reply->data_length); >- //DEBUG2("DATA-length: %d", reply->data_ >- memcpy(ptr, &swappedDataLength, 4); >- //*ptr = swappedDataLength; >- } >- uint16_t thisDataLength=0; >- if(reply->data!=NULL){ >- DEBUG2("Adding TNCCS-Data "); >- int offset; >- //if data_length-Field present >- if(reply->data_length !=0){ >- DEBUG2("with Fragmentation\n"); >- offset = TNC_DATA_LENGTH_LENGTH; //length of data_length-field: 4 >- thisDataLength = reply->length-TNC_PACKET_LENGTH; >- }else{ //data_length-Field not present >- DEBUG2("without Fragmentation\n"); >- offset = 1; >- thisDataLength = reply->length-TNC_PACKET_LENGTH_WITHOUT_DATA_LENGTH; >- } >- DEBUG2("TNCCS-Datalength: %d\n", thisDataLength); >- ptr=ptr+offset; //move to start-position of "data" >- memcpy(ptr,reply->data, thisDataLength); >- }else{ >- DEBUG2("No TNCCS-Data present"); >- } >- >- //the length of the TNC-packet (behind Type) >- if(reply->data_length!=0){ >- eap_ds->request->type.length = TNC_DATA_LENGTH_LENGTH+TNC_FLAGS_VERSION_LENGTH+thisDataLength; //4:data_length, 1: flags_ver >- }else{ >- eap_ds->request->type.length = TNC_FLAGS_VERSION_LENGTH+thisDataLength; //1: flags_ver >- } >- DEBUG2("Packet built\n"); > >- } else { >- eap_ds->request->type.length = 0; >+ if(handler->eap_ds->request == NULL){ >+ radlog(L_ERR, "rlm_eap_tnc: eaptnc_compose invalid parameters: handler->eap_ds->request == %p", handler->eap_ds->request); >+ return 0; > } >- eap_ds->request->code = reply->code; > >+ // fill EAP data to handler >+ handler->eap_ds->request->code = code; >+ handler->eap_ds->request->type.type = PW_EAP_TNC; >+ // fill EAP TYPE specific data to handler >+ handler->eap_ds->request->type.length = length; >+ free(handler->eap_ds->request->type.data); >+ handler->eap_ds->request->type.data = request; >+ > return 1; > } >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/eap_tnc.h freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/eap_tnc.h >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/eap_tnc.h 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/eap_tnc.h 2013-01-29 16:56:18.780938921 -0500 >@@ -1,10 +1,10 @@ > /* >- * This software is Copyright (C) 2006,2007 FH Hannover >+ * This software is Copyright (C) 2006-2009 FH Hannover > * > * Portions of this code unrelated to FreeRADIUS are available > * separately under a commercial license. If you require an > * implementation of EAP-TNC that is not under the GPLv2, please >- * contact tnc@inform.fh-hannover.de for details. >+ * contact trust@f4-i.fh-hannover.de for details. > * > * This program is free software; you can redistribute it and/or modify > * it under the terms of the GNU General Public License as published by >@@ -26,105 +26,20 @@ > #define _EAP_TNC_H > > #include "eap.h" >+#include <naaeap/naaeap.h> > >-#define PW_TNC_REQUEST 1 >-#define PW_TNC_RESPONSE 2 >-#define PW_TNC_SUCCESS 3 >-#define PW_TNC_FAILURE 4 >-#define PW_TNC_MAX_CODES 4 >- >-#define TNC_HEADER_LEN 4 >-#define TNC_CHALLENGE_LEN 16 >-#define TNC_START_LEN 8 >- >-#define TNC_PACKET_LENGTH_WITHOUT_DATA_LENGTH 6 >-#define TNC_PACKET_LENGTH 10 >-#define TNC_DATA_LENGTH_LENGTH 4 >-#define TNC_FLAGS_VERSION_LENGTH 1 >- >-typedef unsigned int VlanAccessMode; >- >-#define VLAN_ISOLATE 97 >-#define VLAN_ACCESS 2 >-/* >- **** >- * EAP - MD5 doesnot specify code, id & length but chap specifies them, >- * for generalization purpose, complete header should be sent >- * and not just value_size, value and name. >- * future implementation. >- * >- * Huh? What does that mean? >- */ >+#define SET_START(x) ((x) | (0x20)) > >-/* >+/** >+ * Composes the EAP packet. > * >- * MD5 Packet Format in EAP Type-Data >- * --- ------ ------ -- --- --------- >- * 0 1 2 3 >- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * | Value-Size | Value ... >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * | Name ... >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * >- * EAP-TNC Packet Format in EAP Type-Data >- * >- * 0 1 2 3 >- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * | Flags |Ver | Data Length ... >- * |L M S R R|=1 | >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- * |... | Data ... >- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >- >+ * @param handler The EAP_HANDLER from tnc_initiate() or tnc_authenticate >+ * @param request The EAP_TNC packet received from NAA-TNCS >+ * @param length The length of the EAP_TNC packet received from NAA-TNCS >+ * @param code EAP_CODE for the request > * >+ * @return True if operation was successful, otherwise false. > */ >- >-/* eap packet structure */ >-typedef struct tnc_packet_t { >-/* >- uint8_t code; >- uint8_t id; >- uint16_t length; >-*/ >- uint8_t flags_ver; >- uint32_t data_length; >- uint8_t *data; >-} tnc_packet_t; >- >-typedef struct tnc_packet { >- uint8_t code; >- uint8_t id; >- uint16_t length; >- uint8_t flags_ver; >- uint32_t data_length; >- uint8_t *data; >-} TNC_PACKET; >- >-#define TNC_START(x) (((x) & 0x20) != 0) >-#define TNC_MORE_FRAGMENTS(x) (((x) & 0x40) != 0) >-#define TNC_LENGTH_INCLUDED(x) (((x) & 0x80) != 0) >-#define TNC_RESERVED_EQ_NULL(x) (((x) & 0x10) == 0 && ((x) & 0x8) == 0) >-#define TNC_VERSION_EQ_ONE(x) (((x) & 0x07) == 1) >- >-#define SET_START(x) ((x) | (0x20)) >-#define SET_MORE_FRAGMENTS(x) ((x) | (0x40)) >-#define SET_LENGTH_INCLUDED(x) ((x) | (0x80)) >- >- >-/* function declarations here */ >- >-TNC_PACKET *eaptnc_alloc(void); >-void eaptnc_free(TNC_PACKET **tnc_packet_ptr); >- >-int eaptnc_compose(EAP_DS *auth, TNC_PACKET *reply); >-TNC_PACKET *eaptnc_extract(EAP_DS *auth); >-int eaptnc_verify(TNC_PACKET *pkt, VALUE_PAIR* pwd, uint8_t *ch); >- >- >- >- >+int eaptnc_compose(EAP_HANDLER *handler, TNC_BufferReference request, TNC_UInt32 length, uint8_t code); > > #endif /*_EAP_TNC_H*/ >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/.gitignore freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/.gitignore >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/.gitignore 2013-01-29 16:40:54.094387363 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/.gitignore 1969-12-31 19:00:00.000000000 -0500 >@@ -1 +0,0 @@ >-Makefile >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/Makefile.in freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/Makefile.in >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/Makefile.in 2013-01-29 16:40:54.094387363 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/Makefile.in 2013-01-29 16:56:18.775939148 -0500 >@@ -1,15 +1,14 @@ >-# >-# $Id$ >-# >- > TARGET = @targetname@ >-SRCS = rlm_eap_tnc.c eap_tnc.c tncs_connect.c >-HEADERS = eap_tnc.h tncs.h tncs_connect.h ../../eap.h ../../rlm_eap.h >-RLM_CFLAGS = -I../.. -I../../libeap $(OPENSSL_INCLUDE) @eap_tnc_cflags@ >-RLM_LIBS = @eap_tnc_ldflags@ ../../libeap/$(LIBPREFIX)freeradius-eap.la $(OPENSSL_LIBS) >-RLM_INSTALL = >+SRCS = rlm_eap_tnc.c eap_tnc.c >+HEADERS = eap_tnc.h >+RLM_CFLAGS = $(INCLTDL) -I../.. -I../../libeap $(CPPFLAGS) >+RLM_LIBS = -lnaaeap >+RLM_INSTALL = > > RLM_DIR=../../ > include ${RLM_DIR}../rules.mak > >-$(LT_OBJS): $(HEADERS) >+$(STATIC_OBJS): $(HEADERS) >+ >+$(DYNAMIC_OBJS): $(HEADERS) >+ >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/rlm_eap_tnc.c freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/rlm_eap_tnc.c >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/rlm_eap_tnc.c 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/rlm_eap_tnc.c 2013-01-29 16:56:18.789938663 -0500 >@@ -1,12 +1,12 @@ > /* > * rlm_eap_tnc.c Handles that are called from eap > * >- * This software is Copyright (C) 2006,2007 FH Hannover >+ * This software is Copyright (C) 2006-2009 FH Hannover > * > * Portions of this code unrelated to FreeRADIUS are available > * separately under a commercial license. If you require an > * implementation of EAP-TNC that is not under the GPLv2, please >- * contact tnc@inform.fh-hannover.de for details. >+ * contact trust@f4-i.fh-hannover.de for details. > * > * This program is free software; you can redistribute it and/or modify > * it under the terms of the GNU General Public License as published by >@@ -26,96 +26,288 @@ > * Copyright (C) 2007 Alan DeKok <aland@deployingradius.com> > */ > >-#include <freeradius-devel/ident.h> >-RCSID("$Id$") >+/* >+ * EAP-TNC Packet with EAP Header, general structure >+ * >+ * 0 1 2 3 >+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 >+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >+ * | Code | Identifier | Length | >+ * | | | | >+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >+ * | Type | Flags | Ver | Data Length | >+ * | |L M S R R| =1 | | >+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >+ * | Data Length | Data ... >+ * | | >+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >+ */ > > #include <freeradius-devel/autoconf.h> > > #include <stdio.h> > #include <stdlib.h> > >-#include "tncs_connect.h" > #include "eap_tnc.h" >-#include "tncs.h" >+#include <naaeap/naaeap.h> > #include <freeradius-devel/rad_assert.h> >+//#include <freeradius-devel/libradius.h> >+ >+#include <netinet/in.h> >+ >+#define VERSION "0.7.0" >+ >+/** >+ * Calculates an identifying string based upon nas_port, nas_ip and nas_port_type. >+ * The maximum length of the calculated string is 70 (not including the trailing '\0'). >+ * >+ * @return the number of bytes written to out (not including the trailing '\0') >+ */ >+static uint32_t calculateConnectionString(RADIUS_PACKET* radius_packet, char *out, size_t outMaxLength) >+{ >+ VALUE_PAIR *vp = NULL; >+// uint32_t outMD5[4]; // 4 x 32 == 128 :-) >+// uint32_t inMD5[3]; >+ uint32_t nas_port = 0; >+ uint32_t nas_ip = 0; >+ uint32_t nas_port_type = 0; >+ >+ char out_nas_port[11]; >+ char out_nas_ip_byte_0[4]; >+ char out_nas_ip_byte_1[4]; >+ char out_nas_ip_byte_2[4]; >+ char out_nas_ip_byte_3[4]; >+ char out_nas_port_type[11]; >+ >+ // check for NULL >+ if (radius_packet == NULL) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: calculateConnectionString failed. radius_packet == NULL!"); >+ return 0; >+ } >+ >+ // read NAS port, ip and port type >+ for (vp = radius_packet->vps; vp; vp=vp->next) { >+ switch (vp->attribute) { >+ case PW_NAS_PORT: >+ nas_port = vp->vp_integer; >+ DEBUG("NAS scr port = %u\n", nas_port); >+ break; >+ case PW_NAS_IP_ADDRESS: >+ nas_ip = vp->vp_ipaddr; >+ DEBUG("NAS scr ip = %X\n", ntohl(nas_ip)); >+ break; >+ case PW_NAS_PORT_TYPE: >+ nas_port_type = vp->vp_integer; >+ DEBUG("NAS scr port type = %u\n", nas_port_type); >+ break; >+ } >+ } > >-typedef struct rlm_eap_tnc_t { >- char *vlan_access; >- char *vlan_isolate; >- char *tnc_path; >-} rlm_eap_tnc_t; >+ // check that all attributes have been set >+ // FIXME get values from parent request if possible. does not work as tunneled eap method atm >+ // FIXME check the thing above >+// if(nas_ip == 0 || >+// nas_port_type == 0){ >+// radlog(L_ERR, >+// "rlm_eap_tnc: not all attributes set for calculating connection ID."); >+// return 0; >+// } >+ >+ snprintf(out_nas_port, 11, "%u", nas_port); >+ snprintf(out_nas_ip_byte_0, 4, "%u", nas_ip & 0xFF); >+ snprintf(out_nas_ip_byte_1, 4, "%u", (nas_ip >> 8) & 0xFF); >+ snprintf(out_nas_ip_byte_2, 4, "%u", (nas_ip >> 16) & 0xFF); >+ snprintf(out_nas_ip_byte_3, 4, "%u", (nas_ip >> 24) & 0xFF); >+ snprintf(out_nas_port_type, 11, "%u", nas_port_type); >+ >+ return snprintf(out, outMaxLength, "NAS Port: %s NAS IP: %s.%s.%s.%s NAS_PORT_TYPE: %s", out_nas_port, out_nas_ip_byte_3, out_nas_ip_byte_2, out_nas_ip_byte_1, out_nas_ip_byte_0, out_nas_port_type); >+ >+// inMD5[0] = nas_ip; >+// inMD5[1] = nas_port; >+// inMD5[2] = nas_port_type; >+ >+ // calculate MD5 >+// fr_md5_calc((uint8_t *)outMD5, (uint8_t *)inMD5, sizeof(uint32_t) * 3); >+ >+ // take the first 4 byte as conID >+// ret = *((TNC_ConnectionID *)(void *)outMD5); >+// return ret; >+} > >-static int sessionCounter=0; >+/* >+ * This function is called when the FreeRADIUS attach this module. >+ */ >+static int tnc_attach(CONF_SECTION *conf, void **type_data) >+{ >+ // initialize NAA-EAP >+ DEBUG2("TNC-ATTACH initializing NAA-EAP"); >+ TNC_Result result = initializeDefault(); >+ if (result != TNC_RESULT_SUCCESS) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_attach error while calling NAA-EAP initializeDefault()"); >+ return -1; >+ } >+ return 0; >+} > > /* >- * Initiate the EAP-MD5 session by sending a challenge to the peer. >- * Initiate the EAP-TNC session by sending a EAP Request witch Start Bit set >- * and with no data >+ * This function is called when the FreeRADIUS detach this module. >+ */ >+static int tnc_detach(void *args) >+{ >+ // terminate NAA-EAP >+ DEBUG2("TNC-TERMINATE terminating NAA-EAP"); >+ TNC_Result result = terminate(); >+ if (result != TNC_RESULT_SUCCESS) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_attach error while calling NAA-EAP terminate()"); >+ return -1; >+ } >+ return 0; >+} >+ >+ >+/* >+ * This function is called when the first EAP_IDENTITY_RESPONSE message >+ * was received. >+ * >+ * Initiates the EPA_TNC session by sending the first EAP_TNC_RESPONSE >+ * to the peer. The packet has the Start-Bit set and contains no data. >+ * >+ * 0 1 2 3 >+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 >+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >+ * | Code | Identifier | Length | >+ * | | | | >+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >+ * | Type | Flags | Ver | >+ * | |0 0 1 0 0|0 0 1| >+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ >+ * >+ * For this package, only 'Identifier' has to be set dynamically. Any >+ * other information is static. > */ > static int tnc_initiate(void *type_data, EAP_HANDLER *handler) > { >- uint8_t flags_ver = 1; //set version to 1 >- rlm_eap_tnc_t *inst = type_data; >- TNC_PACKET *reply; >+ size_t buflen = 71; >+ size_t ret = 0; >+ char buf[buflen]; >+ REQUEST * request = NULL; >+ TNC_Result result; >+ TNC_ConnectionID conID; >+ TNC_BufferReference username; > >+ // check if we run inside a secure EAP method. >+ // FIXME check concrete outer EAP method > if (!handler->request || !handler->request->parent) { >- DEBUG("rlm_eap_tnc: EAP-TNC can only be run inside of a TLS-based method."); >+ DEBUG2("rlm_eap_tnc: EAP_TNC must only be used as an inner method within a protected tunneled EAP created by an outer EAP method."); >+ request = handler->request; > return 0; >+ } else { >+ request = handler->request->parent; > } > >- /* >- * FIXME: Update this when the TTLS and PEAP methods can >- * run EAP-TLC *after* the user has been authenticated. >- * This likely means moving the phase2 handlers to a >- * common code base. >- */ >- if (1) { >- DEBUG("rlm-eap_tnc: EAP-TNC can only be run after the user has been authenticated."); >+ if (request->packet == NULL) { >+ DEBUG2("rlm_eap_tnc: ERROR request->packet is NULL."); > return 0; > } > > DEBUG("tnc_initiate: %ld", handler->timestamp); > >- if(connectToTncs(inst->tnc_path)==-1){ >- DEBUG("Could not connect to TNCS"); >+ //calculate connectionString >+ ret = calculateConnectionString(request->packet, buf, buflen); >+ if(ret == 0){ >+ radlog(L_ERR, "rlm_eap_tnc:tnc_attach: calculating connection String failed."); >+ return 0; > } > >+ DEBUG2("TNC-INITIATE getting connection from NAA-EAP"); >+ > /* >- * Allocate an EAP-MD5 packet. >+ * get connection >+ * (uses a function from the NAA-EAP-library) >+ * the presence of the library is checked via the configure-script > */ >- reply = eaptnc_alloc(); >- if (reply == NULL) { >- radlog(L_ERR, "rlm_eap_tnc: out of memory"); >+ result = getConnection(buf, &conID); >+ >+ // check for errors >+ if (result != TNC_RESULT_SUCCESS) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_initiate error while calling NAA-EAP getConnection"); > return 0; > } > > /* >- * Fill it with data. >+ * tries to get the username from FreeRADIUS; >+ * copied from modules/rlm_eap/types/rlm_eap_ttls/ttls.c > */ >- reply->code = PW_TNC_REQUEST; >- flags_ver = SET_START(flags_ver); //set start-flag >- DEBUG("$$$$$$$$$$$$$$$$Flags: %d", flags_ver); >- reply->flags_ver = flags_ver; >- reply->length = 1+1; /* one byte of flags_ver */ >+ VALUE_PAIR *usernameValuePair; >+ usernameValuePair = pairfind(request->packet->vps, PW_USER_NAME); > >+ VALUE_PAIR *eapMessageValuePair; >+ if (!usernameValuePair) { >+ eapMessageValuePair = pairfind(request->packet->vps, PW_EAP_MESSAGE); >+ >+ if (eapMessageValuePair && >+ (eapMessageValuePair->length >= EAP_HEADER_LEN + 2) && >+ (eapMessageValuePair->vp_strvalue[0] == PW_EAP_RESPONSE) && >+ (eapMessageValuePair->vp_strvalue[EAP_HEADER_LEN] == PW_EAP_IDENTITY) && >+ (eapMessageValuePair->vp_strvalue[EAP_HEADER_LEN + 1] != 0)) { >+ >+ /* >+ * Create & remember a User-Name >+ */ >+ usernameValuePair = pairmake("User-Name", "", T_OP_EQ); >+ rad_assert(usernameValuePair != NULL); >+ >+ memcpy(usernameValuePair->vp_strvalue, eapMessageValuePair->vp_strvalue + 5, >+ eapMessageValuePair->length - 5); >+ usernameValuePair->length = eapMessageValuePair->length - 5; >+ usernameValuePair->vp_strvalue[usernameValuePair->length] = 0; >+ } >+ } >+ >+ username = malloc(usernameValuePair->length + 1); >+ memcpy(username, usernameValuePair->vp_strvalue, usernameValuePair->length); >+ username[usernameValuePair->length] = '\0'; >+ >+ RDEBUG("Username for current TNC connection: %s", username); >+ >+ /* >+ * stores the username of this connection >+ * (uses a function from the NAA-EAP-library) >+ * the presence of the library is checked via the configure-script >+ */ >+ result = storeUsername(conID, username, usernameValuePair->length); >+ >+ // check for errors >+ if (result != TNC_RESULT_SUCCESS) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_initiate error while calling NAA-EAP storeUsername"); >+ return 0; >+ } >+ >+ // set connection ID in FreeRADIUS >+ handler->opaque = malloc(sizeof(TNC_ConnectionID)); >+ memcpy(handler->opaque, &conID, sizeof(TNC_ConnectionID)); >+ >+ // build first EAP TNC request >+ TNC_BufferReference eap_tnc_request = malloc(sizeof(unsigned char)); >+ if (eap_tnc_request == NULL) { >+ radlog(L_ERR, "rlm_eap_tnc:tnc_initiate: malloc failed."); >+ return 0; >+ } >+ *eap_tnc_request = SET_START(1); >+ TNC_UInt32 eap_tnc_length = 1; >+ type_data = type_data; /* suppress -Wunused */ > > /* > * Compose the EAP-TNC packet out of the data structure, > * and free it. > */ >- eaptnc_compose(handler->eap_ds, reply); >- eaptnc_free(&reply); >+ eaptnc_compose(handler, eap_tnc_request, eap_tnc_length, PW_EAP_REQUEST); > >- //put sessionAttribute to Handler and increase sessionCounter >- handler->opaque = calloc(sizeof(TNC_ConnectionID), 1); >- if (handler->opaque == NULL) { >- radlog(L_ERR, "rlm_eap_tnc: out of memory"); >- return 0; >- } >- handler->free_opaque = free; >- memcpy(handler->opaque, &sessionCounter, sizeof(int)); >- sessionCounter++; >- > /* > * We don't need to authorize the user at this point. > * >@@ -124,246 +316,117 @@ static int tnc_initiate(void *type_data, > * to us... > */ > handler->stage = AUTHENTICATE; >- >- return 1; >-} > >-static void setVlanAttribute(rlm_eap_tnc_t *inst, EAP_HANDLER *handler, >- VlanAccessMode mode){ >- VALUE_PAIR *vp; >- char *vlanNumber = NULL; >- switch(mode){ >- case VLAN_ISOLATE: >- vlanNumber = inst->vlan_isolate; >- vp = pairfind(handler->request->config_items, >- PW_TNC_VLAN_ISOLATE); >- if (vp) vlanNumber = vp->vp_strvalue; >- break; >- case VLAN_ACCESS: >- vlanNumber = inst->vlan_access; >- vp = pairfind(handler->request->config_items, >- PW_TNC_VLAN_ACCESS); >- if (vp) vlanNumber = vp->vp_strvalue; >- break; >- >- default: >- DEBUG2(" rlm_eap_tnc: Internal error. Not setting vlan number"); >- return; >- } >- pairadd(&handler->request->reply->vps, >- pairmake("Tunnel-Type", "VLAN", T_OP_SET)); >- >- pairadd(&handler->request->reply->vps, >- pairmake("Tunnel-Medium-Type", "IEEE-802", T_OP_SET)); >- >- pairadd(&handler->request->reply->vps, >- pairmake("Tunnel-Private-Group-ID", vlanNumber, T_OP_SET)); >- >+ return 1; > } > >-/* >- * Authenticate a previously sent challenge. >+/** >+ * This function is called when a EAP_TNC_RESPONSE was received. >+ * It basically forwards the EAP_TNC data to NAA-TNCS and forms >+ * and appropriate EAP_RESPONSE. Furthermore, it sets the VlanID >+ * based on the TNC_ConnectionState determined by NAA-TNCS. >+ * >+ * @param type_arg The configuration data >+ * @param handler The EAP_HANDLER >+ * @return True, if successfully, else false. > */ >-static int tnc_authenticate(void *type_arg, EAP_HANDLER *handler) >-{ >- TNC_PACKET *packet; >- TNC_PACKET *reply; >- TNC_ConnectionID connId = *((TNC_ConnectionID *) (handler->opaque)); >- TNC_ConnectionState state; >- rlm_eap_tnc_t *inst = type_arg; >- int isAcknowledgement = 0; >- TNC_UInt32 tnccsMsgLength = 0; >- int isLengthIncluded; >- int moreFragments; >- TNC_UInt32 overallLength; >- TNC_BufferReference outMessage; >- TNC_UInt32 outMessageLength = 2; >- int outIsLengthIncluded=0; >- int outMoreFragments=0; >- TNC_UInt32 outOverallLength=0; >+static int tnc_authenticate(void *type_arg, EAP_HANDLER *handler) { > >- DEBUG2("HANDLER_OPAQUE: %d", (int) *((TNC_ConnectionID *) (handler->opaque))); >- DEBUG2("TNC-AUTHENTICATE is starting now for %d..........", (int) connId); >+ rad_assert(handler->request != NULL); // check that request has been sent previously >+ rad_assert(handler->stage == AUTHENTICATE); // check if initiate has been called > >- /* >- * Get the User-Password for this user. >- */ >- rad_assert(handler->request != NULL); >- rad_assert(handler->stage == AUTHENTICATE); >- >- /* >- * Extract the EAP-TNC packet. >- */ >- if (!(packet = eaptnc_extract(handler->eap_ds))) >+ if (handler == NULL) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_authenticate invalid parameters: handler == NULL"); > return 0; >+ } >+ if (handler->eap_ds == NULL) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_authenticate invalid parameters: handler->eap_ds == NULL"); >+ return 0; >+ } >+ if (handler->eap_ds->response == NULL) { >+ radlog( >+ L_ERR, >+ "rlm_eap_tnc: tnc_authenticate invalid parameters: handler->eap_ds->resonse == NULL"); >+ return 0; >+ } >+ if (handler->eap_ds->response->type.type != PW_EAP_TNC >+ || handler->eap_ds->response->type.length < 1 >+ || handler->eap_ds->response->type.data == NULL) { >+ radlog( >+ L_ERR, >+ "rlm_eap_tnc: tnc_authenticate invalid parameters: handler->eap_ds->response->type.type == %X, ->type.length == %u, ->type.data == %p", >+ handler->eap_ds->response->type.type, >+ handler->eap_ds->response->type.length, >+ handler->eap_ds->response->type.data); >+ return 0; >+ } > >- /* >- * Create a reply, and initialize it. >- */ >- reply = eaptnc_alloc(); >- if (!reply) { >- eaptnc_free(&packet); >- return 0; >- } >- >- reply->id = handler->eap_ds->request->id; >- reply->length = 0; >- if(packet->data_length==0){ >- tnccsMsgLength = packet->length-TNC_PACKET_LENGTH_WITHOUT_DATA_LENGTH; >- }else{ >- tnccsMsgLength = packet->length-TNC_PACKET_LENGTH; >- } >- isLengthIncluded = TNC_LENGTH_INCLUDED(packet->flags_ver); >- moreFragments = TNC_MORE_FRAGMENTS(packet->flags_ver); >- overallLength = packet->data_length; >- if(isLengthIncluded == 0 >- && moreFragments == 0 >- && overallLength == 0 >- && tnccsMsgLength == 0 >- && TNC_START(packet->flags_ver)==0){ >- >- isAcknowledgement = 1; >- } >- >- DEBUG("Data received: (%d)", (int) tnccsMsgLength); >-/* int i; >- for(i=0;i<tnccsMsgLength;i++){ >- DEBUG2("%c", (packet->data)[i]); >- } >- DEBUG2("\n"); >- */ >- state = exchangeTNCCSMessages(inst->tnc_path, >- connId, >- isAcknowledgement, >- packet->data, >- tnccsMsgLength, >- isLengthIncluded, >- moreFragments, >- overallLength, >- &outMessage, >- &outMessageLength, >- &outIsLengthIncluded, >- &outMoreFragments, >- &outOverallLength); >- DEBUG("GOT State %08x from TNCS", (unsigned int) state); >- if(state == TNC_CONNECTION_EAP_ACKNOWLEDGEMENT){ //send back acknoledgement >- reply->code = PW_TNC_REQUEST; >- reply->data = NULL; >- reply->data_length = 0; >- reply->flags_ver = 1; >- reply->length =TNC_PACKET_LENGTH_WITHOUT_DATA_LENGTH; >- }else{ //send back normal message >- DEBUG("GOT Message from TNCS (length: %d)", (int) outMessageLength); >- >- /* for(i=0;i<outMessageLength;i++){ >- DEBUG2("%c", outMessage[i]); >- } >- DEBUG2("\n"); >- */ >- DEBUG("outIsLengthIncluded: %d, outMoreFragments: %d, outOverallLength: %d", >- outIsLengthIncluded, outMoreFragments, (int) outOverallLength); >- DEBUG("NEW STATE: %08x", (unsigned int) state); >- switch(state){ >- case TNC_CONNECTION_STATE_HANDSHAKE: >- reply->code = PW_TNC_REQUEST; >- DEBUG2("Set Reply->Code to EAP-REQUEST\n"); >- break; >- case TNC_CONNECTION_STATE_ACCESS_ALLOWED: >- reply->code = PW_TNC_SUCCESS; >- setVlanAttribute(inst, handler,VLAN_ACCESS); >- break; >- case TNC_CONNECTION_STATE_ACCESS_NONE: >- reply->code = PW_TNC_FAILURE; >- //setVlanAttribute(inst, handler, VLAN_ISOLATE); >- break; >- case TNC_CONNECTION_STATE_ACCESS_ISOLATED: >- reply->code = PW_TNC_SUCCESS; >- setVlanAttribute(inst, handler, VLAN_ISOLATE); >- break; >- default: >- reply->code= PW_TNC_FAILURE; >- >- } >- if(outMessage!=NULL && outMessageLength!=0){ >- reply->data = outMessage; >- } >- reply->flags_ver = 1; >- if(outIsLengthIncluded){ >- reply->flags_ver = SET_LENGTH_INCLUDED(reply->flags_ver); >- reply->data_length = outOverallLength; >- reply->length = TNC_PACKET_LENGTH + outMessageLength; >- DEBUG("SET LENGTH: %d", reply->length); >- DEBUG("SET DATALENGTH: %d", (int) outOverallLength); >- }else{ >- reply->data_length = 0; >- reply->length = TNC_PACKET_LENGTH_WITHOUT_DATA_LENGTH + outMessageLength; >- DEBUG("SET LENGTH: %d", reply->length); >- } >- if(outMoreFragments){ >- reply->flags_ver = SET_MORE_FRAGMENTS(reply->flags_ver); >- } >- } >- >- /* >- * Compose the EAP-MD5 packet out of the data structure, >- * and free it. >- */ >- eaptnc_compose(handler->eap_ds, reply); >- eaptnc_free(&reply); >- >- handler->stage = AUTHENTICATE; >- >- eaptnc_free(&packet); >- return 1; >-} >- >-/* >- * Detach the EAP-TNC module. >- */ >-static int tnc_detach(void *arg) >-{ >- free(arg); >- return 0; >-} >+ // get connection ID >+ TNC_ConnectionID conID = *((TNC_ConnectionID *) (handler->opaque)); > > >-static CONF_PARSER module_config[] = { >- { "vlan_access", PW_TYPE_STRING_PTR, >- offsetof(rlm_eap_tnc_t, vlan_access), NULL, NULL }, >- { "vlan_isolate", PW_TYPE_STRING_PTR, >- offsetof(rlm_eap_tnc_t, vlan_isolate), NULL, NULL }, >- { "tnc_path", PW_TYPE_STRING_PTR, >- offsetof(rlm_eap_tnc_t, tnc_path), NULL, >- "/usr/local/lib/libTNCS.so"}, > >- { NULL, -1, 0, NULL, NULL } /* end the list */ >-}; >+ DEBUG2("TNC-AUTHENTICATE is starting now for connection ID %lX !", conID); > >-/* >- * Attach the EAP-TNC module. >- */ >-static int tnc_attach(CONF_SECTION *cs, void **instance) >-{ >- rlm_eap_tnc_t *inst; >+ // pass EAP_TNC data to NAA-EAP and get answer data >+ TNC_BufferReference output = NULL; >+ TNC_UInt32 outputLength = 0; >+ TNC_ConnectionState connectionState = TNC_CONNECTION_STATE_CREATE; > >- inst = malloc(sizeof(*inst)); >- if (!inst) return -1; >- memset(inst, 0, sizeof(*inst)); >+ /* >+ * forwards the eap_tnc data to NAA-EAP and gets the response >+ * (uses a function from the NAA-EAP-library) >+ * the presence of the library is checked via the configure-script >+ */ >+ TNC_Result result = processEAPTNCData(conID, handler->eap_ds->response->type.data, >+ handler->eap_ds->response->type.length, &output, &outputLength, >+ &connectionState); >+ >+ // check for errors >+ if (result != TNC_RESULT_SUCCESS) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_authenticate error while calling NAA-EAP processEAPTNCData"); >+ return 0; >+ } > >- if (cf_section_parse(cs, inst, module_config) < 0) { >- tnc_detach(inst); >- return -1; >+ // output contains now the answer from NAA-EAP >+ uint8_t eapCode = 0; >+ // determine eapCode for request >+ switch (connectionState) { >+ case TNC_CONNECTION_STATE_HANDSHAKE: >+ eapCode = PW_EAP_REQUEST; >+ break; >+ case TNC_CONNECTION_STATE_ACCESS_NONE: >+ eapCode = PW_EAP_FAILURE; >+// pairadd(&handler->request->config_items, pairmake("TNC-Status", "None", T_OP_SET)); >+ break; >+ case TNC_CONNECTION_STATE_ACCESS_ALLOWED: >+ eapCode = PW_EAP_SUCCESS; >+ pairadd(&handler->request->config_items, pairmake("TNC-Status", "Access", T_OP_SET)); >+ break; >+ case TNC_CONNECTION_STATE_ACCESS_ISOLATED: >+ eapCode = PW_EAP_SUCCESS; >+ pairadd(&handler->request->config_items, pairmake("TNC-Status", "Isolate", T_OP_SET)); >+ break; >+ default: >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_authenticate invalid TNC_CONNECTION_STATE."); >+ return 0; > } > >- >- if (!inst->vlan_access || !inst->vlan_isolate) { >- radlog(L_ERR, "rlm_eap_tnc: Must set both vlan_access and vlan_isolate"); >- tnc_detach(inst); >- return -1; >+ // form EAP_REQUEST >+ if (!eaptnc_compose(handler, output, outputLength, eapCode)) { >+ radlog(L_ERR, >+ "rlm_eap_tnc: tnc_authenticate error while forming EAP_REQUEST."); >+ return 0; > } > >- *instance = inst; >- return 0; >+ // FIXME: Why is that needed? >+ handler->stage = AUTHENTICATE; >+ >+ return 1; > } > > /* >@@ -371,10 +434,10 @@ static int tnc_attach(CONF_SECTION *cs, > * That is, everything else should be 'static'. > */ > EAP_TYPE rlm_eap_tnc = { >- "eap_tnc", >- tnc_attach, /* attach */ >- tnc_initiate, /* Start the initial request */ >- NULL, /* authorization */ >- tnc_authenticate, /* authentication */ >- tnc_detach /* detach */ >+ "eap_tnc", >+ tnc_attach, /* attach */ >+ tnc_initiate, /* Start the initial request */ >+ NULL, /* authorization */ >+ tnc_authenticate, /* authentication */ >+ tnc_detach /* detach */ > }; >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/tncs_connect.c freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/tncs_connect.c >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/tncs_connect.c 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/tncs_connect.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,146 +0,0 @@ >-/* >- * This software is Copyright (C) 2006,2007 FH Hannover >- * >- * Portions of this code unrelated to FreeRADIUS are available >- * separately under a commercial license. If you require an >- * implementation of EAP-TNC that is not under the GPLv2, please >- * contact tnc@inform.fh-hannover.de for details. >- * >- * This program is free software; you can redistribute it and/or modify >- * it under the terms of the GNU General Public License as published by >- * the Free Software Foundation; either version 2 of the License, or >- * (at your option) any later version. >- * >- * This program is distributed in the hope that it will be useful, >- * but WITHOUT ANY WARRANTY; without even the implied warranty of >- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >- * GNU General Public License for more details. >- * >- * You should have received a copy of the GNU General Public License >- * along with this program; if not, write to the Free Software >- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA >- * >- */ >-#include <freeradius-devel/ident.h> >-RCSID("$Id$") >- >-#include "tncs_connect.h" >-#include <ltdl.h> >-#include <stdlib.h> >-#include <stdio.h> >-#include <eap.h> >- >- /* >- * FIXME: This linking should really be done at compile time. >- */ >-static lt_dlhandle handle = NULL; >- >-static ExchangeTNCCSMessagePointer callTNCS = NULL; >- >-/* >- * returns the function-pointer to a function of a shared-object >- * >- * soHandle: handle to a shared-object >- * name: name of the requested function >- * >- * return: the procAddress if found, else NULL >- */ >-static void *getProcAddress(lt_dlhandle soHandle, const char *name){ >- void *proc = lt_dlsym(soHandle, name); >- DEBUG("Searching for function %s", name); >- if(proc == NULL){ >- DEBUG("rlm_eap_tnc: Failed to resolve symbol %s: %s", >- name, lt_dlerror()); >- } >- return proc; >-} >- >- >-/* >- * establishs the connection to the TNCCS without calling functionality. >- * That means that the TNCS-shared-object is loaded and the function-pointer >- * to "exchangeTNCCSMessages" is explored. >- * >- * return: -1 if connect failed, 0 if connect was successful >- */ >-int connectToTncs(char *pathToSO){ >- int state = -1; >- if(handle==NULL){ >- handle = lt_dlopen(pathToSO); >- DEBUG("OPENED HANDLE!"); >- } >- >- if(handle==NULL){ >- DEBUG("HANDLE IS NULL"); >- DEBUG("rlm_eap_tnc: Failed to link to library %s: %s", >- pathToSO, lt_dlerror()); >- }else{ >- DEBUG("SO %s found!", pathToSO); >- if(callTNCS==NULL){ >- callTNCS = (ExchangeTNCCSMessagePointer) getProcAddress(handle, "exchangeTNCCSMessages"); >- } >- if(callTNCS!=NULL){ >- DEBUG("TNCS is connected"); >- state = 0; >-// int ret = callTNCS2(2, "Bla", NULL); >- // DEBUG("GOT %d from exchangeTNCCSMessages", ret); >- }else{ >- DEBUG("Could not find exchangeTNCCSMessages"); >- } >- >- } >- return state; >-} >- >-/* >- * Accesspoint to the TNCS for sending and receiving TNCCS-Messages. >- * -pathToSO: Path to TNCCS-Shared Object >- * -connId: identifies the client which the passed message belongs to. >- * -isAcknoledgement: 1 if acknoledgement received (then all following in-parameters unimportant >- * -input: input-TNCCS-message received from the client with connId >- * -inputLength: length of input-TNCCS-message >- * -isFirst: 1 if first message in fragmentation else 0 >- * -moreFragments: are there more Fragments to come (yes: 1, no: 0)? >- * -overallLength: length of all fragments together (only set if fragmentation) >- * -output: answer-TNCCS-message from the TNCS to the client >- * -outputLength: length of answer-TNCCS-message >- * -answerIsFirst: returned answer is first in row >- * -moreFragmentsFollow: more fragments after this answer >- * -overallLengthOut: length of all fragments together (only set if fragmentation) as answer >- * >- * return: state of connection as result of the exchange >- */ >-TNC_ConnectionState exchangeTNCCSMessages(/*in*/ char *pathToSO, >- /*in*/ TNC_ConnectionID connId, >- /*in*/ int isAcknoledgement, >- /*in*/ TNC_BufferReference input, >- /*in*/ TNC_UInt32 inputLength, >- /*in*/ int isFirst, >- /*in*/ int moreFragments, >- /*in*/ TNC_UInt32 overallLength, >- /*out*/ TNC_BufferReference *output, >- /*out*/ TNC_UInt32 *outputLength, >- /*out*/ int *answerIsFirst, >- /*out*/ int *moreFragmentsFollow, >- /*out*/ TNC_UInt32 *overallLengthOut){ >- TNC_ConnectionState state = TNC_CONNECTION_STATE_ACCESS_NONE; >- int connectStatus = connectToTncs(pathToSO); >- if(connectStatus!=-1){ >- state = callTNCS(connId, >- isAcknoledgement, >- input, >- inputLength, >- isFirst, >- moreFragments, >- overallLength, >- output, >- outputLength, >- answerIsFirst, >- moreFragmentsFollow, >- overallLengthOut); >- DEBUG("GOT TNC_ConnectionState (juhuuu): %u", (unsigned int) state); >- }else{ >- DEBUG("CAN NOT CONNECT TO TNCS"); >- } >- return state; >-} >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/tncs_connect.h freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/tncs_connect.h >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/tncs_connect.h 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/tncs_connect.h 1969-12-31 19:00:00.000000000 -0500 >@@ -1,70 +0,0 @@ >-/* >- * This software is Copyright (C) 2006,2007 FH Hannover >- * >- * Portions of this code unrelated to FreeRADIUS are available >- * separately under a commercial license. If you require an >- * implementation of EAP-TNC that is not under the GPLv2, please >- * contact tnc@inform.fh-hannover.de for details. >- * >- * This program is free software; you can redistribute it and/or modify >- * it under the terms of the GNU General Public License as published by >- * the Free Software Foundation; either version 2 of the License, or >- * (at your option) any later version. >- * >- * This program is distributed in the hope that it will be useful, >- * but WITHOUT ANY WARRANTY; without even the implied warranty of >- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >- * GNU General Public License for more details. >- * >- * You should have received a copy of the GNU General Public License >- * along with this program; if not, write to the Free Software >- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA >- * >- */ >- >-#ifndef _TNCS_CONNECT_H_ >-#define _TNCS_CONNECT_H_ >- >-#include "tncs.h" >- >-/* >- * establishs the connection to the TNCCS without calling functionality. >- * That means that the TNCS-shared-object is loaded and the function-pointer >- * to "exchangeTNCCSMessages" is explored. >- * >- * return: -1 if connect failed, 0 if connect was successful >- */ >-int connectToTncs(char *pathToSO); >-/* >- * Accesspoint to the TNCS for sending and receiving TNCCS-Messages. >- * -pathToSO: Path to TNCCS-Shared Object >- * -connId: identifies the client which the passed message belongs to. >- * -isAcknoledgement: 1 if acknoledgement received (then all following in-parameters unimportant >- * -input: input-TNCCS-message received from the client with connId >- * -inputLength: length of input-TNCCS-message >- * -isFirst: 1 if first message in fragmentation else 0 >- * -moreFragments: are there more Fragments to come (yes: 1, no: 0)? >- * -overallLength: length of all fragments together (only set if fragmentation) >- * -output: answer-TNCCS-message from the TNCS to the client >- * -outputLength: length of answer-TNCCS-message >- * -answerIsFirst: returned answer is first in row >- * -moreFragmentsFollow: more fragments after this answer >- * -overallLengthOut: length of all fragments together (only set if fragmentation) as answer >- * >- * return: state of connection as result of the exchange >- */ >-TNC_ConnectionState exchangeTNCCSMessages(/*in*/ char *pathToSO, >- /*in*/ TNC_ConnectionID connId, >- /*in*/ int isAcknoledgement, >- /*in*/ TNC_BufferReference input, >- /*in*/ TNC_UInt32 inputLength, >- /*in*/ int isFirst, >- /*in*/ int moreFragments, >- /*in*/ TNC_UInt32 overallLength, >- /*out*/ TNC_BufferReference *output, >- /*out*/ TNC_UInt32 *outputLength, >- /*out*/ int *answerIsFirst, >- /*out*/ int *moreFragmentsFollow, >- /*out*/ TNC_UInt32 *overallLengthOut); >- >-#endif //_TNCS_CONNECT_H_ >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/tncs.h freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/tncs.h >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_tnc/tncs.h 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_tnc/tncs.h 1969-12-31 19:00:00.000000000 -0500 >@@ -1,86 +0,0 @@ >-/* >- * This software is Copyright (C) 2006,2007 FH Hannover >- * >- * Portions of this code unrelated to FreeRADIUS are available >- * separately under a commercial license. If you require an >- * implementation of EAP-TNC that is not under the GPLv2, please >- * contact tnc@inform.fh-hannover.de for details. >- * >- * This program is free software; you can redistribute it and/or modify >- * it under the terms of the GNU General Public License as published by >- * the Free Software Foundation; either version 2 of the License, or >- * (at your option) any later version. >- * >- * This program is distributed in the hope that it will be useful, >- * but WITHOUT ANY WARRANTY; without even the implied warranty of >- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >- * GNU General Public License for more details. >- * >- * You should have received a copy of the GNU General Public License >- * along with this program; if not, write to the Free Software >- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA >- * >- */ >- >-#ifndef _TNCS_H_ >-#define _TNCS_H_ >- >- >- >-#ifdef __cplusplus >-extern "C" { >-#endif >- >-/* >- * copied from tncimv.h: >- */ >-typedef unsigned long TNC_UInt32; >-typedef TNC_UInt32 TNC_ConnectionState; >-typedef unsigned char *TNC_BufferReference; >-typedef TNC_UInt32 TNC_ConnectionID; >- >-#define TNC_CONNECTION_STATE_CREATE 0 >-#define TNC_CONNECTION_STATE_HANDSHAKE 1 >-#define TNC_CONNECTION_STATE_ACCESS_ALLOWED 2 >-#define TNC_CONNECTION_STATE_ACCESS_ISOLATED 3 >-#define TNC_CONNECTION_STATE_ACCESS_NONE 4 >-#define TNC_CONNECTION_STATE_DELETE 5 >-#define TNC_CONNECTION_EAP_ACKNOWLEDGEMENT 6 >- >-/* >- * Accesspoint (as function-pointer) to the TNCS for sending and receiving >- * TNCCS-Messages. >- * >- * -connId: identifies the client which the passed message belongs to. >- * -isAcknoledgement: 1 if acknoledgement received (then all following in-parameters unimportant >- * -input: input-TNCCS-message received from the client with connId >- * -inputLength: length of input-TNCCS-message >- * -isFirst: 1 if first message in fragmentation else 0 >- * -moreFragments: are there more Fragments to come (yes: 1, no: 0)? >- * -overallLength: length of all fragments together (only set if fragmentation) >- * -output: answer-TNCCS-message from the TNCS to the client >- * -outputLength: length of answer-TNCCS-message >- * -answerIsFirst: returned answer is first in row >- * -moreFragmentsFollow: more fragments after this answer >- * -overallLengthOut: length of all fragments together (only set if fragmentation) as answer >- * >- * return: state of connection as result of the exchange >- */ >-typedef TNC_ConnectionState (*ExchangeTNCCSMessagePointer)(/*in*/ TNC_ConnectionID connId, >- /*in*/ int isAcknoledgement, >- /*in*/ TNC_BufferReference input, >- /*in*/ TNC_UInt32 inputLength, >- /*in*/ int isFirst, >- /*in*/ int moreFragments, >- /*in*/ TNC_UInt32 overallLength, >- /*out*/ TNC_BufferReference *output, >- /*out*/ TNC_UInt32 *outputLength, >- /*out*/ int *answerIsFirst, >- /*out*/ int *moreFragmentsFollow, >- /*out*/ TNC_UInt32 *overallLengthOut >-); >- >-#ifdef __cplusplus >-} >-#endif >-#endif //_TNCS_H_ >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_ttls/eap_ttls.h 2013-01-29 17:08:07.593590415 -0500 >@@ -37,6 +37,10 @@ typedef struct ttls_tunnel_t { > int copy_request_to_tunnel; > int use_tunneled_reply; > const char *virtual_server; >+ const char *tnc_virtual_server; // virtual server for EAP-TNC as the second inner method >+ VALUE_PAIR *auth_reply; // cache storage of the last reply of the first inner method >+ int auth_code; // cache storage of the reply-code of the first inner method >+ int doing_tnc; // status if we're doing EAP-TNC > } ttls_tunnel_t; > > /* >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_ttls/rlm_eap_ttls.c freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_ttls/rlm_eap_ttls.c >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_ttls/rlm_eap_ttls.c 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_ttls/rlm_eap_ttls.c 2013-01-29 17:08:33.849575983 -0500 >@@ -62,6 +62,11 @@ typedef struct rlm_eap_ttls_t { > * Virtual server for inner tunnel session. > */ > char *virtual_server; >+ >+ /* >+ * Virtual server for the second inner tunnel method, which is EAP-TNC. >+ */ >+ char *tnc_virtual_server; > } rlm_eap_ttls_t; > > >@@ -78,6 +83,9 @@ static CONF_PARSER module_config[] = { > { "virtual_server", PW_TYPE_STRING_PTR, > offsetof(rlm_eap_ttls_t, virtual_server), NULL, NULL }, > >+ { "tnc_virtual_server", PW_TYPE_STRING_PTR, >+ offsetof(rlm_eap_ttls_t, tnc_virtual_server), NULL, NULL }, >+ > { "include_length", PW_TYPE_BOOLEAN, > offsetof(rlm_eap_ttls_t, include_length), NULL, "yes" }, > >@@ -171,6 +179,10 @@ static ttls_tunnel_t *ttls_alloc(rlm_eap > t->copy_request_to_tunnel = inst->copy_request_to_tunnel; > t->use_tunneled_reply = inst->use_tunneled_reply; > t->virtual_server = inst->virtual_server; >+ t->tnc_virtual_server = inst->tnc_virtual_server; // virtual server for EAP-TNC as the second inner method >+ t->auth_reply = NULL; // cache storage of the last reply of the first inner method >+ t->auth_code = -1; // cache storage of the reply-code of the first inner method >+ t->doing_tnc = 0; // status if we're doing EAP-TNC (on start we're doing NOT) > return t; > } > >diff -urNp freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c >--- freeradius-server-2.2.0-patched/src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c 2013-01-29 16:40:54.095387360 -0500 >+++ freeradius-server-2.2.0-current/src/modules/rlm_eap/types/rlm_eap_ttls/ttls.c 2013-01-30 12:47:59.656749384 -0500 >@@ -585,6 +585,94 @@ static int vp2diameter(REQUEST *request, > } > > /* >+ * Start EAP-TNC as a second inner method. >+ * Creates a new fake-request out of the original incoming request (via EAP_HANDLER). >+ * If it's the first time, we create a EAP-START-packet and send >+ * EAP-START := code = PW_EAP_REQUEST >+ * >+ */ >+static REQUEST* start_tnc(EAP_HANDLER *handler, ttls_tunnel_t *t) { >+ REQUEST* request = handler->request; >+ RDEBUG2("EAP-TNC as second inner authentication method starts now"); >+ >+ /* >+ * Allocate a fake REQUEST struct, >+ * to make a new request, based on the original request. >+ */ >+ REQUEST* fake = request_alloc_fake(request); >+ >+ /* >+ * Set the virtual server to that of EAP-TNC. >+ */ >+ fake->server = t->tnc_virtual_server; >+ >+ /* >+ * Build a new EAP-Message. >+ */ >+ VALUE_PAIR *eap_msg; >+ eap_msg = paircreate(PW_EAP_MESSAGE, PW_TYPE_OCTETS); >+ >+ /* >+ * Set the EAP-Message to look like EAP-Start >+ */ >+ eap_msg->vp_octets[0] = PW_EAP_RESPONSE; >+ eap_msg->vp_octets[1] = 0x00; >+ >+ /* >+ * Only setting EAP-TNC here, >+ * because it is intended to do user-authentication in the first inner method, >+ * and then a hardware-authentication (like EAP-TNC) as the second method. >+ */ >+ eap_msg->vp_octets[4] = PW_EAP_TNC; >+ >+ eap_msg->length = 0; >+ >+ /* >+ * Add the EAP-Message to the request. >+ */ >+ pairadd(&(fake->packet->vps), eap_msg); >+ >+ /* >+ * Process the new request by the virtual server configured for >+ * EAP-TNC. >+ */ >+ rad_authenticate(fake); >+ >+ /* >+ * From now on we're doing EAP-TNC as the second inner authentication method. >+ */ >+ t->doing_tnc = TRUE; >+ >+ return fake; >+} >+ >+/* >+ * Stop EAP-TNC as a second inner method. >+ * Copy the value pairs from the cached Access-Accept of the first inner method >+ * to the Access-Accept/Reject package of EAP-TNC. >+ */ >+static REQUEST* stop_tnc(REQUEST *request, ttls_tunnel_t *t) { >+ RDEBUG2("EAP-TNC as second inner authentication method stops now"); >+ >+ /* >+ * Copy the value-pairs of the origina Access-Accept of the first >+ * inner authentication method to the Access-Accept/Reject of the >+ * second inner authentication method (EAP-TNC). >+ */ >+ if (request->reply->code == PW_AUTHENTICATION_ACK) { >+ pairadd(&(request->reply->vps), t->auth_reply); >+ } else if (request->reply->code == PW_AUTHENTICATION_REJECT) { >+ pairadd(&(request->reply->vps), t->auth_reply); >+ } >+ >+ pairdelete(&(request->reply->vps), PW_MESSAGE_AUTHENTICATOR); >+ pairdelete(&(request->reply->vps), PW_PROXY_STATE); >+ pairdelete(&(request->reply->vps), PW_USER_NAME); >+ >+ return request; >+} >+ >+/* > * Use a reply packet to determine what to do. > */ > static int process_reply(EAP_HANDLER *handler, tls_session_t *tls_session, >@@ -1135,6 +1223,16 @@ int eapttls_process(EAP_HANDLER *handler > > } /* else fake->server == request->server */ > >+ /* >+ * If we're doing EAP-TNC as a second method, >+ * then set the server to that one. >+ * Then, rad_authenticate will run EAP-TNC, >+ * so that afterwards we have to look for the state of >+ * EAP-TNC. >+ */ >+ if (t->doing_tnc) { >+ fake->server = t->tnc_virtual_server; >+ } > > if ((debug_flag > 0) && fr_log_fp) { > RDEBUG("Sending tunneled request"); >@@ -1248,6 +1346,52 @@ int eapttls_process(EAP_HANDLER *handler > > default: > /* >+ * If the result of the first method was an acknowledgment OR >+ * if were already running EAP-TNC, >+ * we're doing additional things before processing the reply. >+ * Also the configuration for EAP-TTLS has to contain a virtual server >+ * for EAP-TNC as the second method. >+ */ >+ if (t->tnc_virtual_server) { >+ /* >+ * If the reply code of the first inner method is PW_AUTHENTICATION_ACK >+ * which means that the method was successful, >+ * and we're not doing EAP-TNC as the second method, >+ * then we want to intercept the Access-Accept and start EAP-TNC as the second inner method. >+ */ >+ if (fake->reply->code == PW_AUTHENTICATION_ACK >+ && t->doing_tnc == FALSE) { >+ RDEBUG2("Reply-Code of the first inner method was: %d (PW_AUTHENTICATION_ACK)", fake->reply->code); >+ >+ /* >+ * Save reply-value pairs and reply-code of the first method. >+ */ >+ t->auth_reply = fake->reply->vps; >+ fake->reply->vps = NULL; >+ t->auth_code = fake->reply->code; >+ >+ /* >+ * Create the start package for EAP-TNC. >+ */ >+ fake = start_tnc(handler, t); >+ /* >+ * If we're doing EAP-TNC as the second inner method, >+ * and the reply->code was PW_AUTHENTICATION_ACK or PW_AUTHENTICATION_REJECT, >+ * then we stop EAP-TNC and create an combined Access-Accept or Access-Reject. >+ */ >+ } else if (t->doing_tnc == TRUE >+ && (fake->reply->code == PW_AUTHENTICATION_ACK || fake->reply->code == PW_AUTHENTICATION_REJECT)) { >+ >+ /* >+ * Create the combined Access-Accept or -Reject. >+ */ >+ RDEBUG2("Reply-Code of EAP-TNC as the second inner method was: %d (%s)", fake->reply->code, >+ fake->reply->code == PW_AUTHENTICATION_ACK ? "PW_AUTHENTICATION_ACK" : "PW_AUTHENTICATION_REJECT"); >+ fake = stop_tnc(fake, t); >+ } >+ } >+ >+ /* > * Returns RLM_MODULE_FOO, and we want to return > * PW_FOO > */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 712903
:
504466
| 699571 |
708447