]> git.sur5r.net Git - openldap/commitdiff
Suck in changes from HEAD
authorKurt Zeilenga <kurt@openldap.org>
Thu, 20 Jun 2002 22:11:59 +0000 (22:11 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Thu, 20 Jun 2002 22:11:59 +0000 (22:11 +0000)
    Fix slapd schema error alignment bug
    Update slapd SASL proxy policy code
    Update slapd require "strong" check
    Update back-bdb entry locking
    Add slapd disallow bind_simple_unprotected directive
    Add back-monitor added monitorContext support
    Add slapd IPv4/v6 only options
    Ass slapd SASL setpass support
    Remove lint
    Build Environment
        Add monitor backend test
        Update <ac/socket.h> SHUT_RDWR
        Fix SASL-less build issues
        Fix back-perl build issues

132 files changed:
CHANGES
build/man.mk [new file with mode: 0644]
build/openldap.m4
build/top.mk
configure
configure.in
doc/devel/args
doc/devel/todo
doc/drafts/draft-ietf-ldapext-locate-xx.txt
doc/drafts/draft-ietf-ldup-lcup-xx.txt
doc/man/man1/ldapdelete.1
doc/man/man1/ldapmodify.1
doc/man/man1/ldapmodrdn.1
doc/man/man1/ldappasswd.1
doc/man/man1/ldapsearch.1
doc/man/man1/ud.1
doc/man/man3/lber-decode.3
doc/man/man3/lber-encode.3
doc/man/man3/lber-memory.3
doc/man/man3/lber-types.3
doc/man/man3/ldap.3
doc/man/man3/ldap_abandon.3
doc/man/man3/ldap_add.3
doc/man/man3/ldap_bind.3
doc/man/man3/ldap_cache.3
doc/man/man3/ldap_compare.3
doc/man/man3/ldap_delete.3
doc/man/man3/ldap_error.3
doc/man/man3/ldap_first_attribute.3
doc/man/man3/ldap_first_entry.3
doc/man/man3/ldap_first_message.3
doc/man/man3/ldap_first_reference.3
doc/man/man3/ldap_get_dn.3
doc/man/man3/ldap_get_values.3
doc/man/man3/ldap_modify.3
doc/man/man3/ldap_modrdn.3
doc/man/man3/ldap_open.3
doc/man/man3/ldap_parse_reference.3 [new file with mode: 0644]
doc/man/man3/ldap_parse_result.3
doc/man/man3/ldap_result.3
doc/man/man3/ldap_schema.3
doc/man/man3/ldap_search.3
doc/man/man3/ldap_sort.3
doc/man/man3/ldap_url.3
doc/man/man5/ldap.conf.5
doc/man/man5/ldif.5
doc/man/man5/slapd-bdb.5
doc/man/man5/slapd-dnssrv.5
doc/man/man5/slapd-ldap.5
doc/man/man5/slapd-ldbm.5
doc/man/man5/slapd-meta.5
doc/man/man5/slapd-null.5
doc/man/man5/slapd-passwd.5
doc/man/man5/slapd-perl.5
doc/man/man5/slapd-shell.5
doc/man/man5/slapd-sql.5
doc/man/man5/slapd-tcl.5
doc/man/man5/slapd.access.5
doc/man/man5/slapd.conf.5
doc/man/man5/slapd.replog.5
doc/man/man5/ud.conf.5
doc/man/man8/mail500.8
doc/man/man8/slapadd.8 [new file with mode: 0644]
doc/man/man8/slapcat.8 [new file with mode: 0644]
doc/man/man8/slapd.8
doc/man/man8/slapindex.8
doc/man/man8/slappasswd.8 [new file with mode: 0644]
doc/man/man8/slurpd.8
include/ac/socket.h [new file with mode: 0644]
include/portable.h.in
libraries/liblber/io.c
libraries/libldap/extended.c
libraries/libldap/os-ip.c
libraries/libldap/tls.c
libraries/liblutil/passwd.c
servers/slapd/acl.c
servers/slapd/back-bdb/delete.c
servers/slapd/back-bdb/dn2entry.c
servers/slapd/back-bdb/dn2id.c
servers/slapd/back-bdb/id2entry.c
servers/slapd/back-bdb/modify.c
servers/slapd/back-bdb/modrdn.c
servers/slapd/back-bdb/operational.c
servers/slapd/back-bdb/proto-bdb.h
servers/slapd/back-ldap/bind.c
servers/slapd/back-ldap/config.c
servers/slapd/back-ldap/map.c [new file with mode: 0644]
servers/slapd/back-meta/config.c
servers/slapd/back-meta/conn.c [new file with mode: 0644]
servers/slapd/back-monitor/conn.c
servers/slapd/back-monitor/database.c
servers/slapd/back-perl/bind.c
servers/slapd/back-perl/init.c
servers/slapd/back-perl/modify.c
servers/slapd/backend.c
servers/slapd/backglue.c
servers/slapd/bind.c
servers/slapd/config.c
servers/slapd/connection.c
servers/slapd/daemon.c
servers/slapd/entry.c
servers/slapd/main.c
servers/slapd/passwd.c
servers/slapd/proto-slap.h
servers/slapd/result.c
servers/slapd/root_dse.c
servers/slapd/sasl.c
servers/slapd/saslauthz.c
servers/slapd/schema_prep.c
servers/slapd/schemaparse.c
servers/slapd/slap.h
servers/slapd/tools/mimic.c
tests/Makefile.in [new file with mode: 0644]
tests/data/slapd-schema.conf
tests/scripts/all
tests/scripts/conf.sh
tests/scripts/test000-rootdse [new file with mode: 0755]
tests/scripts/test001-slapadd
tests/scripts/test002-populate
tests/scripts/test003-search
tests/scripts/test004-modify
tests/scripts/test005-modrdn
tests/scripts/test006-acls
tests/scripts/test007-replication
tests/scripts/test008-concurrency [new file with mode: 0755]
tests/scripts/test009-referral
tests/scripts/test010-passwd
tests/scripts/test011-subtree-repl
tests/scripts/test012-glue
tests/scripts/test013-language
tests/scripts/test014-whoami
tests/scripts/test015-xsearch

diff --git a/CHANGES b/CHANGES
index a121eac933f19a10b7c5a5d84f45f0c1c0b1d025..21f5125430c6f9a71cbd3e844115d234b3e0e91d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,7 +1,20 @@
 OpenLDAP 2.1 Change Log
 
-OpenLDAP 2.1.2 Engineering
-       <insert changes here>
+OpenLDAP 2.1.3 Engineering
+       Fix slapd schema error alignment bug
+       Update slapd SASL proxy policy code
+       Update slapd require "strong" check
+       Update back-bdb entry locking
+       Add slapd disallow bind_simple_unprotected directive
+       Add back-monitor added monitorContext support
+       Add slapd IPv4/v6 only options
+       Ass slapd SASL setpass support
+       Remove lint
+       Build Environment
+               Add monitor backend test
+               Update <ac/socket.h> SHUT_RDWR 
+               Fix SASL-less build issues
+               Fix back-perl build issues
 
 OpenLDAP 2.1.2 Release
        Initial release for "general" use.
diff --git a/build/man.mk b/build/man.mk
new file mode 100644 (file)
index 0000000..5c09377
--- /dev/null
@@ -0,0 +1,48 @@
+# $OpenLDAP$
+## Copyright 1998-2002 The OpenLDAP Foundation
+## COPYING RESTRICTIONS APPLY.  See COPYRIGHT File in top level directory
+## of this package for details.
+##---------------------------------------------------------------------------
+##
+## Makefile Template for Manual Pages
+##
+
+MANDIR=$(mandir)/man$(MANSECT)
+TMP_SUFFIX=tmp
+
+all-common:
+       PAGES=`cd $(srcdir); echo *.$(MANSECT)`; \
+       for page in $$PAGES; do \
+               $(SED) -e "s%LDVERSION%$(VERSION)%" \
+                       -e 's%ETCDIR%$(sysconfdir)%' \
+                       -e 's%LOCALSTATEDIR%$(localstatedir)%' \
+                       -e 's%SYSCONFDIR%$(sysconfdir)%' \
+                       -e 's%DATADIR%$(datadir)%' \
+                       -e 's%SBINDIR%$(sbindir)%' \
+                       -e 's%BINDIR%$(bindir)%' \
+                       -e 's%LIBDIR%$(libdir)%' \
+                       -e 's%LIBEXECDIR%$(libexecdir)%' \
+                       -e 's%RELEASEDATE%$(RELEASEDATE)%' \
+                       $(srcdir)/$$page > $$page.$(TMP_SUFFIX); \
+       done
+
+install-common:
+       -$(MKDIR) $(DESTDIR)$(MANDIR)
+       PAGES=`cd $(srcdir); echo *.$(MANSECT)`; \
+       for page in $$PAGES; do \
+               echo "installing $(MANDIR)/$$page"; \
+               $(RM) $(DESTDIR)$(MANDIR)/$$page; \
+               $(INSTALL) $(INSTALLFLAGS) -m 644 $$page.$(TMP_SUFFIX) $(DESTDIR)$(MANDIR)/$$page; \
+               if test -f "$(srcdir)/$$page.links" ; then \
+                       for link in `$(CAT) $(srcdir)/$$page.links`; do \
+                               echo "installing $(MANDIR)/$$link as link to $$page"; \
+                               $(RM) $(DESTDIR)$(MANDIR)/$$link ; \
+                               $(LN_S) $$page $(DESTDIR)$(MANDIR)/$$link; \
+                       done; \
+               fi; \
+       done
+
+clean-common:   FORCE
+       $(RM) *.tmp all-common
+
+Makefile: $(top_srcdir)/build/man.mk
index 21f8f2b5ef0ac769689b35fbfede178f6c1faa76..c50acd4a96a65e3b50aabac3c009be72dd876f77 100644 (file)
@@ -313,10 +313,14 @@ AC_DEFUN([OL_BERKELEY_DB_LINK],
 [ol_cv_lib_db=no
 OL_BERKELEY_DB_TRY(ol_cv_db_none)
 OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4])
 OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb])
 OL_BERKELEY_DB_TRY(ol_cv_db_db3,[-ldb3])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_3,[-ldb-3])
 OL_BERKELEY_DB_TRY(ol_cv_db_db2,[-ldb2])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_2,[-ldb-2])
 OL_BERKELEY_DB_TRY(ol_cv_db_db1,[-ldb1])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_1,[-ldb-1])
 ])
 dnl
 dnl --------------------------------------------------------------------
index e9d460fd5833c3c901dfc6f1faec65a439e9aaf9..d0fa2b6bdec37cc915c4dab82c445235690371f1 100644 (file)
@@ -10,6 +10,7 @@
 ##
 PACKAGE= @PACKAGE@
 VERSION= @VERSION@
+RELEASEDATE= @OPENLDAP_RELEASE_DATE@
 
 @SET_MAKE@
 SHELL = /bin/sh
index ae55fd228a6d93d6dbf9a2a51f125517641f3da5..34d422cbe438696110a44e58ca73997f16f91fd7 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # $OpenLDAP$
-# from OpenLDAP: pkg/ldap/configure.in,v 1.420 2002/05/18 00:06:32 hyc Exp  
+# from OpenLDAP: pkg/ldap/configure.in,v 1.408.2.6 2002/05/22 14:25:38 kurt Exp  
 
 # Copyright 1998-2002 The OpenLDAP Foundation.  All Rights Reserved.
 # 
@@ -37,8 +37,6 @@ ac_help="$ac_help
   --enable-cache         enable caching (experimental) [no]"
 ac_help="$ac_help
   --enable-referrals     enable LDAPv2+ Referrals (experimental) [no]"
-ac_help="$ac_help
-  --enable-kbind         enable LDAPv2+ Kerberos IV bind (deprecated) [no]"
 ac_help="$ac_help
   --enable-ipv6          enable IPv6 support [auto]"
 ac_help="$ac_help
@@ -875,7 +873,7 @@ echo "Configuring $TB$OL_STRING$TN ..."
 
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:879: checking host system type" >&5
+echo "configure:877: checking host system type" >&5
 if test "x$ac_cv_host" = "x" || (test "x$host" != "xNONE" && test "x$host" != "x$ac_cv_host_alias"); then
 
 # Make sure we can run config.sub.
@@ -916,7 +914,7 @@ host_os=$ac_cv_host_os
 
 
 echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:920: checking target system type" >&5
+echo "configure:918: checking target system type" >&5
 if test "x$ac_cv_target" = "x" || (test "x$target" != "xNONE" && test "x$target" != "x$ac_cv_target_alias"); then
 
 # Make sure we can run config.sub.
@@ -956,7 +954,7 @@ target_os=$ac_cv_target_os
 
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:960: checking build system type" >&5
+echo "configure:958: checking build system type" >&5
 if test "x$ac_cv_build" = "x" || (test "x$build" != "xNONE" && test "x$build" != "x$ac_cv_build_alias"); then
 
 # Make sure we can run config.sub.
@@ -1033,7 +1031,7 @@ test "$host_alias" != "$target_alias" &&
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1037: checking for a BSD compatible install" >&5
+echo "configure:1035: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"\${ac_cv_path_install+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1090,7 +1088,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
-echo "configure:1094: checking whether build environment is sane" >&5
+echo "configure:1092: checking whether build environment is sane" >&5
 # Just in case
 sleep 1
 echo timestamp > conftestfile
@@ -1151,7 +1149,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1155: checking for $ac_word" >&5
+echo "configure:1153: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AWK+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1181,7 +1179,7 @@ test -n "$AWK" && break
 done
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1185: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1183: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1221,7 +1219,7 @@ fi
 
 missing_dir=`cd $ac_aux_dir && pwd`
 echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:1225: checking for working aclocal" >&5
+echo "configure:1223: checking for working aclocal" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -1234,7 +1232,7 @@ else
 fi
 
 echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:1238: checking for working autoconf" >&5
+echo "configure:1236: checking for working autoconf" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -1247,7 +1245,7 @@ else
 fi
 
 echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:1251: checking for working automake" >&5
+echo "configure:1249: checking for working automake" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -1260,7 +1258,7 @@ else
 fi
 
 echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:1264: checking for working autoheader" >&5
+echo "configure:1262: checking for working autoheader" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -1273,7 +1271,7 @@ else
 fi
 
 echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:1277: checking for working makeinfo" >&5
+echo "configure:1275: checking for working makeinfo" >&5
 # Run test in a subshell; some versions of sh will print an error if
 # an executable is not found, even if stderr is redirected.
 # Redirect stdin to placate older versions of autoconf.  Sigh.
@@ -1293,7 +1291,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1297: checking for $ac_word" >&5
+echo "configure:1295: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AMTAR+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1358,6 +1356,8 @@ EOF
 
 OPENLDAP_LIBVERSION=$OL_API_LIB
 
+OPENLDAP_RELEASE_DATE="$OL_RELEASE_DATE"
+
 
 
 echo $ac_n "checking configure arguments""... $ac_c" 1>&6
@@ -1487,26 +1487,7 @@ else
        ol_enable_referrals="no"
 fi
 # end --enable-referrals
-# OpenLDAP --enable-kbind
-       # Check whether --enable-kbind or --disable-kbind was given.
-if test "${enable_kbind+set}" = set; then
-  enableval="$enable_kbind"
-  
-       ol_arg=invalid
-       for ol_val in auto yes no ; do
-               if test "$enableval" = "$ol_val" ; then
-                       ol_arg="$ol_val"
-               fi
-       done
-       if test "$ol_arg" = "invalid" ; then
-               { echo "configure: error: bad value $enableval for --enable-kbind" 1>&2; exit 1; }
-       fi
-       ol_enable_kbind="$ol_arg"
-
-else
-       ol_enable_kbind="no"
-fi
-# end --enable-kbind
+ol_enable_kbind=${ol_enable_kbind-no}
 # OpenLDAP --enable-ipv6
        # Check whether --enable-ipv6 or --disable-ipv6 was given.
 if test "${enable_ipv6+set}" = set; then
@@ -1904,6 +1885,7 @@ else
        ol_enable_modules="no"
 fi
 # end --enable-modules
+ol_enable_multimaster=${ol_enable_multimaster-no}
 # OpenLDAP --enable-phonetic
        # Check whether --enable-phonetic or --disable-phonetic was given.
 if test "${enable_phonetic+set}" = set; then
@@ -2618,6 +2600,9 @@ if test $ol_enable_slapd = no ; then
        if test $ol_enable_modules = yes ; then
                echo "configure: warning: slapd disabled, ignoring --enable-modules argument" 1>&2
        fi
+       if test $ol_enable_multimaster = yes ; then
+               echo "configure: warning: slapd disabled, ignoring --enable-multimaster argument" 1>&2
+       fi
        if test $ol_enable_wrappers = yes ; then
                echo "configure: warning: slapd disabled, ignoring --enable-wrappers argument" 1>&2
        fi
@@ -2690,6 +2675,7 @@ if test $ol_enable_slapd = no ; then
        ol_enable_sql=no
 
        ol_enable_modules=no
+       ol_enable_multimaster=no
        ol_enable_phonetic=no
        ol_enable_rlookups=no
        ol_enable_aci=no
@@ -2901,7 +2887,7 @@ SLAPD_SLP_LIBS=
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2905: checking for a BSD compatible install" >&5
+echo "configure:2891: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"\${ac_cv_path_install+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2982,7 +2968,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2986: checking for $ac_word" >&5
+echo "configure:2972: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3034,7 +3020,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3038: checking for $ac_word" >&5
+echo "configure:3024: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3072,7 +3058,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3076: checking for $ac_word" >&5
+echo "configure:3062: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AR+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3122,12 +3108,12 @@ if test "X${PATH_SEPARATOR+set}" != Xset; then
 fi
 
 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:3126: checking for Cygwin environment" >&5
+echo "configure:3112: checking for Cygwin environment" >&5
 if eval "test \"\${ac_cv_cygwin+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3131 "configure"
+#line 3117 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3138,7 +3124,7 @@ int main() {
 return __CYGWIN__;
 ; return 0; }
 EOF
-if { (eval echo configure:3142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3128: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cygwin=yes
 else
@@ -3154,19 +3140,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
 CYGWIN=
 test "$ac_cv_cygwin" = yes && CYGWIN=yes
 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:3158: checking for mingw32 environment" >&5
+echo "configure:3144: checking for mingw32 environment" >&5
 if eval "test \"\${ac_cv_mingw32+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3163 "configure"
+#line 3149 "configure"
 #include "confdefs.h"
 
 int main() {
 return __MINGW32__;
 ; return 0; }
 EOF
-if { (eval echo configure:3170: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mingw32=yes
 else
@@ -3182,19 +3168,19 @@ echo "$ac_t""$ac_cv_mingw32" 1>&6
 MINGW32=
 test "$ac_cv_mingw32" = yes && MINGW32=yes
 echo $ac_n "checking for EMX OS/2 environment""... $ac_c" 1>&6
-echo "configure:3186: checking for EMX OS/2 environment" >&5
+echo "configure:3172: checking for EMX OS/2 environment" >&5
 if eval "test \"\${ac_cv_emxos2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3191 "configure"
+#line 3177 "configure"
 #include "confdefs.h"
 
 int main() {
 return __EMX__;
 ; return 0; }
 EOF
-if { (eval echo configure:3198: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_emxos2=yes
 else
@@ -3210,7 +3196,7 @@ echo "$ac_t""$ac_cv_emxos2" 1>&6
 EMXOS2=
 test "$ac_cv_emxos2" = yes && EMXOS2=yes
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:3214: checking how to run the C preprocessor" >&5
+echo "configure:3200: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -3225,13 +3211,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 3229 "configure"
+#line 3215 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -3242,13 +3228,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 3246 "configure"
+#line 3232 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3238: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -3259,13 +3245,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 3263 "configure"
+#line 3249 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -3315,7 +3301,7 @@ fi
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3319: checking for $ac_word" >&5
+echo "configure:3305: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3345,7 +3331,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3349: checking for $ac_word" >&5
+echo "configure:3335: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3396,7 +3382,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3400: checking for $ac_word" >&5
+echo "configure:3386: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3428,7 +3414,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:3432: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" >&5
+echo "configure:3418: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -3439,12 +3425,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 3443 "configure"
+#line 3429 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:3448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -3470,12 +3456,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:3474: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:3460: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:3479: checking whether we are using GNU C" >&5
+echo "configure:3465: checking whether we are using GNU C" >&5
 if eval "test \"\${ac_cv_prog_gcc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3484,7 +3470,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3488: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3474: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -3503,7 +3489,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:3507: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:3493: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"\${ac_cv_prog_cc_g+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3546,7 +3532,7 @@ ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
   echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:3550: checking for ld used by GCC" >&5
+echo "configure:3536: checking for ld used by GCC" >&5
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return which upsets mingw
@@ -3576,10 +3562,10 @@ echo "configure:3550: checking for ld used by GCC" >&5
   esac
 elif test "$with_gnu_ld" = yes; then
   echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:3580: checking for GNU ld" >&5
+echo "configure:3566: checking for GNU ld" >&5
 else
   echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:3583: checking for non-GNU ld" >&5
+echo "configure:3569: checking for non-GNU ld" >&5
 fi
 if eval "test \"\${lt_cv_path_LD+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3614,7 +3600,7 @@ else
 fi
 test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
 echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:3618: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:3604: checking if the linker ($LD) is GNU ld" >&5
 if eval "test \"\${lt_cv_prog_gnu_ld+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3631,7 +3617,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
-echo "configure:3635: checking for $LD option to reload object files" >&5
+echo "configure:3621: checking for $LD option to reload object files" >&5
 if eval "test \"\${lt_cv_ld_reload_flag+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3643,7 +3629,7 @@ reload_flag=$lt_cv_ld_reload_flag
 test -n "$reload_flag" && reload_flag=" $reload_flag"
 
 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:3647: checking for BSD-compatible nm" >&5
+echo "configure:3633: checking for BSD-compatible nm" >&5
 if eval "test \"\${lt_cv_path_NM+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3681,7 +3667,7 @@ NM="$lt_cv_path_NM"
 echo "$ac_t""$NM" 1>&6
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:3685: checking whether ln -s works" >&5
+echo "configure:3671: checking whether ln -s works" >&5
 if eval "test \"\${ac_cv_prog_LN_S+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3702,7 +3688,7 @@ else
 fi
 
 echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
-echo "configure:3706: checking how to recognise dependant libraries" >&5
+echo "configure:3692: checking how to recognise dependant libraries" >&5
 if eval "test \"\${lt_cv_deplibs_check_method+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3885,13 +3871,13 @@ file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
 
 echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-echo "configure:3889: checking for object suffix" >&5
+echo "configure:3875: checking for object suffix" >&5
 if eval "test \"\${ac_cv_objext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   rm -f conftest*
 echo 'int i = 1;' > conftest.$ac_ext
-if { (eval echo configure:3895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   for ac_file in conftest.*; do
     case $ac_file in
     *.c) ;;
@@ -3912,7 +3898,7 @@ ac_objext=$ac_cv_objext
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3916: checking for executable suffix" >&5
+echo "configure:3902: checking for executable suffix" >&5
 if eval "test \"\${ac_cv_exeext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3922,7 +3908,7 @@ else
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:3926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:3912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
       *.c | *.C | *.o | *.obj | *.xcoff) ;;
@@ -3953,7 +3939,7 @@ fi
 
 # Check for command to grab the raw symbol name followed by C symbol from nm.
 echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6
-echo "configure:3957: checking command to parse $NM output" >&5
+echo "configure:3943: checking command to parse $NM output" >&5
 if eval "test \"\${lt_cv_sys_global_symbol_pipe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4033,10 +4019,10 @@ void nm_test_func(){}
 int main(){nm_test_var='a';nm_test_func();return(0);}
 EOF
 
-  if { (eval echo configure:4037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  if { (eval echo configure:4023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if { (eval echo configure:4040: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
+    if { (eval echo configure:4026: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
        mv -f "$nlist"T "$nlist"
@@ -4087,7 +4073,7 @@ EOF
          save_CFLAGS="$CFLAGS"
          LIBS="conftstm.$ac_objext"
          CFLAGS="$CFLAGS$no_builtin_flag"
-         if { (eval echo configure:4091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+         if { (eval echo configure:4077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
            pipe_works=yes
          fi
          LIBS="$save_LIBS"
@@ -4136,17 +4122,17 @@ for ac_hdr in dlfcn.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4140: checking for $ac_hdr" >&5
+echo "configure:4126: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4145 "configure"
+#line 4131 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4150: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4181,7 +4167,7 @@ case $deplibs_check_method in
 file_magic*)
   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
     echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
-echo "configure:4185: checking for ${ac_tool_prefix}file" >&5
+echo "configure:4171: checking for ${ac_tool_prefix}file" >&5
 if eval "test \"\${lt_cv_path_MAGIC_CMD+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4243,7 +4229,7 @@ fi
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
     echo $ac_n "checking for file""... $ac_c" 1>&6
-echo "configure:4247: checking for file" >&5
+echo "configure:4233: checking for file" >&5
 if eval "test \"\${lt_cv_path_MAGIC_CMD+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4314,7 +4300,7 @@ esac
 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4318: checking for $ac_word" >&5
+echo "configure:4304: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_RANLIB+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4346,7 +4332,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4350: checking for $ac_word" >&5
+echo "configure:4336: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_RANLIB+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4381,7 +4367,7 @@ fi
 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
 set dummy ${ac_tool_prefix}strip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4385: checking for $ac_word" >&5
+echo "configure:4371: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_STRIP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4413,7 +4399,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4417: checking for $ac_word" >&5
+echo "configure:4403: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_STRIP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4462,8 +4448,8 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
 case $host in
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4466 "configure"' > conftest.$ac_ext
-  if { (eval echo configure:4467: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  echo '#line 4452 "configure"' > conftest.$ac_ext
+  if { (eval echo configure:4453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     case `/usr/bin/file conftest.$ac_objext` in
     *32-bit*)
       LD="${LD-ld} -32"
@@ -4484,7 +4470,7 @@ case $host in
   SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
   echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:4488: checking whether the C compiler needs -belf" >&5
+echo "configure:4474: checking whether the C compiler needs -belf" >&5
 if eval "test \"\${lt_cv_cc_needs_belf+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4497,14 +4483,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
 cross_compiling=$ac_cv_prog_cc_cross
 
      cat > conftest.$ac_ext <<EOF
-#line 4501 "configure"
+#line 4487 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_cc_needs_belf=yes
 else
@@ -4534,7 +4520,7 @@ echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6
   # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
 set dummy ${ac_tool_prefix}dlltool; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4538: checking for $ac_word" >&5
+echo "configure:4524: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_DLLTOOL+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4566,7 +4552,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "dlltool", so it can be a program name with args.
 set dummy dlltool; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4570: checking for $ac_word" >&5
+echo "configure:4556: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_DLLTOOL+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4601,7 +4587,7 @@ fi
   # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
 set dummy ${ac_tool_prefix}as; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4605: checking for $ac_word" >&5
+echo "configure:4591: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AS+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4633,7 +4619,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "as", so it can be a program name with args.
 set dummy as; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4637: checking for $ac_word" >&5
+echo "configure:4623: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AS+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4668,7 +4654,7 @@ fi
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
 set dummy ${ac_tool_prefix}objdump; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4672: checking for $ac_word" >&5
+echo "configure:4658: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_OBJDUMP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4700,7 +4686,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "objdump", so it can be a program name with args.
 set dummy objdump; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4704: checking for $ac_word" >&5
+echo "configure:4690: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_OBJDUMP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4736,12 +4722,12 @@ fi
   # recent cygwin and mingw systems supply a stub DllMain which the user
   # can override, but on older systems we have to supply one
   echo $ac_n "checking if libtool should supply DllMain function""... $ac_c" 1>&6
-echo "configure:4740: checking if libtool should supply DllMain function" >&5
+echo "configure:4726: checking if libtool should supply DllMain function" >&5
 if eval "test \"\${lt_cv_need_dllmain+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4745 "configure"
+#line 4731 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4749,7 +4735,7 @@ extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
       DllMain (0, 0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:4753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_need_dllmain=no
 else
@@ -4770,19 +4756,19 @@ echo "$ac_t""$lt_cv_need_dllmain" 1>&6
     SAVE_CFLAGS="$CFLAGS"
     CFLAGS="$CFLAGS -mdll"
     echo $ac_n "checking how to link DLLs""... $ac_c" 1>&6
-echo "configure:4774: checking how to link DLLs" >&5
+echo "configure:4760: checking how to link DLLs" >&5
 if eval "test \"\${lt_cv_cc_dll_switch+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4779 "configure"
+#line 4765 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_cc_dll_switch=-mdll
 else
@@ -4896,7 +4882,7 @@ set dummy $CC
 compiler="$2"
 
 echo $ac_n "checking for objdir""... $ac_c" 1>&6
-echo "configure:4900: checking for objdir" >&5
+echo "configure:4886: checking for objdir" >&5
 rm -f .libs 2>/dev/null
 mkdir .libs 2>/dev/null
 if test -d .libs; then
@@ -4923,7 +4909,7 @@ test -z "$pic_mode" && pic_mode=default
 # in isolation, and that seeing it set (from the cache) indicates that
 # the associated values are set (in the cache) correctly too.
 echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6
-echo "configure:4927: checking for $compiler option to produce PIC" >&5
+echo "configure:4913: checking for $compiler option to produce PIC" >&5
 if eval "test \"\${lt_cv_prog_cc_pic+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5075,21 +5061,21 @@ else
 
   # Check to make sure the pic_flag actually works.
   echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6
-echo "configure:5079: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
+echo "configure:5065: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
   if eval "test \"\${lt_cv_prog_cc_pic_works+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
       save_CFLAGS="$CFLAGS"
     CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
     cat > conftest.$ac_ext <<EOF
-#line 5086 "configure"
+#line 5072 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5093: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
         case $host_os in
       hpux9* | hpux10* | hpux11*)
@@ -5141,7 +5127,7 @@ if test -n "$lt_cv_prog_cc_shlib"; then
 fi
 
 echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6
-echo "configure:5145: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
+echo "configure:5131: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
 if eval "test \"\${lt_cv_prog_cc_static_works+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5149,14 +5135,14 @@ else
   save_LDFLAGS="$LDFLAGS"
   LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
   cat > conftest.$ac_ext <<EOF
-#line 5153 "configure"
+#line 5139 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_prog_cc_static_works=yes
 else
@@ -5183,7 +5169,7 @@ can_build_shared="$lt_cv_prog_cc_can_build_shared"
 
 # Check to see if options -o and -c are simultaneously supported by compiler
 echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6
-echo "configure:5187: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo "configure:5173: checking if $compiler supports -c -o file.$ac_objext" >&5
 if eval "test \"\${lt_cv_compiler_c_o+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5202,7 +5188,7 @@ chmod -w .
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
 compiler_c_o=no
-if { (eval echo configure:5206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+if { (eval echo configure:5192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
   # The compiler can only warn and ignore the option if not recognized
   # So say no if there are warnings
   if test -s out/conftest.err; then
@@ -5231,7 +5217,7 @@ echo "$ac_t""$compiler_c_o" 1>&6
 if test x"$compiler_c_o" = x"yes"; then
   # Check to see if we can write to a .lo
   echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6
-echo "configure:5235: checking if $compiler supports -c -o file.lo" >&5
+echo "configure:5221: checking if $compiler supports -c -o file.lo" >&5
   if eval "test \"\${lt_cv_compiler_o_lo+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5242,14 +5228,14 @@ else
   save_objext="$ac_objext"
   ac_objext=lo
   cat > conftest.$ac_ext <<EOF
-#line 5246 "configure"
+#line 5232 "configure"
 #include "confdefs.h"
 
 int main() {
 int some_variable = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5253: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
       # The compiler can only warn and ignore the option if not recognized
     # So say no if there are warnings
@@ -5280,7 +5266,7 @@ hard_links="nottested"
 if test "$compiler_c_o" = no && test "$need_locks" != no; then
   # do not overwrite the value of need_locks provided by the user
   echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6
-echo "configure:5284: checking if we can lock with hard links" >&5
+echo "configure:5270: checking if we can lock with hard links" >&5
   hard_links=yes
   $rm conftest*
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
@@ -5299,20 +5285,20 @@ fi
 if test "$GCC" = yes; then
   # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
   echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6
-echo "configure:5303: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo "configure:5289: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
   echo "int some_variable = 0;" > conftest.$ac_ext
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
   compiler_rtti_exceptions=no
   cat > conftest.$ac_ext <<EOF
-#line 5309 "configure"
+#line 5295 "configure"
 #include "confdefs.h"
 
 int main() {
 int some_variable = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5316: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
       # The compiler can only warn and ignore the option if not recognized
     # So say no if there are warnings
@@ -5339,7 +5325,7 @@ fi
 
 # See if the linker supports building shared libraries.
 echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6
-echo "configure:5343: checking whether the linker ($LD) supports shared libraries" >&5
+echo "configure:5329: checking whether the linker ($LD) supports shared libraries" >&5
 
 allow_undefined_flag=
 no_undefined_flag=
@@ -6023,7 +6009,7 @@ test "$ld_shlibs" = no && can_build_shared=no
 
 # Check hardcoding attributes.
 echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6
-echo "configure:6027: checking how to hardcode library paths into programs" >&5
+echo "configure:6013: checking how to hardcode library paths into programs" >&5
 hardcode_action=
 if test -n "$hardcode_libdir_flag_spec" || \
    test -n "$runpath_var"; then
@@ -6051,7 +6037,7 @@ echo "$ac_t""$hardcode_action" 1>&6
 striplib=
 old_striplib=
 echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6
-echo "configure:6055: checking whether stripping libraries is possible" >&5
+echo "configure:6041: checking whether stripping libraries is possible" >&5
 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
   test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
   test -z "$striplib" && striplib="$STRIP --strip-unneeded"
@@ -6065,7 +6051,7 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 # PORTME Fill in your ld.so characteristics
 echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6
-echo "configure:6069: checking dynamic linker characteristics" >&5
+echo "configure:6055: checking dynamic linker characteristics" >&5
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
@@ -6462,11 +6448,11 @@ test "$dynamic_linker" = no && can_build_shared=no
 
 # Report the final consequences.
 echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
-echo "configure:6466: checking if libtool supports shared libraries" >&5
+echo "configure:6452: checking if libtool supports shared libraries" >&5
 echo "$ac_t""$can_build_shared" 1>&6
 
 echo $ac_n "checking whether to build shared libraries""... $ac_c" 1>&6
-echo "configure:6470: checking whether to build shared libraries" >&5
+echo "configure:6456: checking whether to build shared libraries" >&5
 test "$can_build_shared" = "no" && enable_shared=no
 
 # On AIX, shared libraries and static libraries use the same namespace, and
@@ -6489,7 +6475,7 @@ esac
 echo "$ac_t""$enable_shared" 1>&6
 
 echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6
-echo "configure:6493: checking whether to build static libraries" >&5
+echo "configure:6479: checking whether to build static libraries" >&5
 # Make sure either enable_shared or enable_static is yes.
 test "$enable_shared" = yes || enable_static=yes
 echo "$ac_t""$enable_static" 1>&6
@@ -6530,12 +6516,12 @@ else
 
   *)
     echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "configure:6534: checking for shl_load" >&5
+echo "configure:6520: checking for shl_load" >&5
 if eval "test \"\${ac_cv_func_shl_load+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6539 "configure"
+#line 6525 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shl_load(); below.  */
@@ -6559,7 +6545,7 @@ f = shl_load;
 
 ; return 0; }
 EOF
-if { (eval echo configure:6563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shl_load=yes"
 else
@@ -6577,7 +6563,7 @@ if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:6581: checking for shl_load in -ldld" >&5
+echo "configure:6567: checking for shl_load in -ldld" >&5
 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6585,7 +6571,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6589 "configure"
+#line 6575 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6596,7 +6582,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:6600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6615,12 +6601,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "configure:6619: checking for dlopen" >&5
+echo "configure:6605: checking for dlopen" >&5
 if eval "test \"\${ac_cv_func_dlopen+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6624 "configure"
+#line 6610 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dlopen(); below.  */
@@ -6644,7 +6630,7 @@ f = dlopen;
 
 ; return 0; }
 EOF
-if { (eval echo configure:6648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dlopen=yes"
 else
@@ -6662,7 +6648,7 @@ if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:6666: checking for dlopen in -ldl" >&5
+echo "configure:6652: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6670,7 +6656,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6674 "configure"
+#line 6660 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6681,7 +6667,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:6685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6700,7 +6686,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
-echo "configure:6704: checking for dlopen in -lsvld" >&5
+echo "configure:6690: checking for dlopen in -lsvld" >&5
 ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6708,7 +6694,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsvld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6712 "configure"
+#line 6698 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6719,7 +6705,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:6723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6738,7 +6724,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-echo "configure:6742: checking for dld_link in -ldld" >&5
+echo "configure:6728: checking for dld_link in -ldld" >&5
 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6746,7 +6732,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6750 "configure"
+#line 6736 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6757,7 +6743,7 @@ int main() {
 dld_link()
 ; return 0; }
 EOF
-if { (eval echo configure:6761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6813,7 +6799,7 @@ fi
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
     echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "configure:6817: checking whether a program can dlopen itself" >&5
+echo "configure:6803: checking whether a program can dlopen itself" >&5
 if eval "test \"\${lt_cv_dlopen_self+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6823,7 +6809,7 @@ else
     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 6827 "configure"
+#line 6813 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -6884,7 +6870,7 @@ int main ()
     exit (status);
 }
 EOF
-  if { (eval echo configure:6888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+  if { (eval echo configure:6874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -6907,7 +6893,7 @@ echo "$ac_t""$lt_cv_dlopen_self" 1>&6
     if test "x$lt_cv_dlopen_self" = xyes; then
       LDFLAGS="$LDFLAGS $link_static_flag"
       echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-echo "configure:6911: checking whether a statically linked program can dlopen itself" >&5
+echo "configure:6897: checking whether a statically linked program can dlopen itself" >&5
 if eval "test \"\${lt_cv_dlopen_self_static+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6917,7 +6903,7 @@ else
     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 6921 "configure"
+#line 6907 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -6978,7 +6964,7 @@ int main ()
     exit (status);
 }
 EOF
-  if { (eval echo configure:6982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+  if { (eval echo configure:6968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -7027,14 +7013,14 @@ if test "$enable_shared" = yes && test "$GCC" = yes; then
     # systems, -lgcc has to come before -lc. If gcc already passes -lc
     # to ld, don't add -lc before -lgcc.
     echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
-echo "configure:7031: checking whether -lc should be explicitly linked in" >&5
+echo "configure:7017: checking whether -lc should be explicitly linked in" >&5
     if eval "test \"\${lt_cv_archive_cmds_need_lc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   $rm conftest*
     echo 'static int dummy;' > conftest.$ac_ext
 
-    if { (eval echo configure:7038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    if { (eval echo configure:7024: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
       soname=conftest
       lib=conftest
       libobjs=conftest.$ac_objext
@@ -7047,7 +7033,7 @@ else
       libname=conftest
       save_allow_undefined_flag=$allow_undefined_flag
       allow_undefined_flag=
-      if { (eval echo configure:7051: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
+      if { (eval echo configure:7037: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
       then
        lt_cv_archive_cmds_need_lc=no
       else
@@ -7634,7 +7620,7 @@ 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7638: checking for $ac_word" >&5
+echo "configure:7624: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AWK+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7665,7 +7651,7 @@ done
 
 # test for ln hardlink support
 echo $ac_n "checking whether ln works""... $ac_c" 1>&6
-echo "configure:7669: checking whether ln works" >&5
+echo "configure:7655: checking whether ln works" >&5
 if eval "test \"\${ol_cv_prog_LN_H+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7688,7 +7674,7 @@ else
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:7692: checking whether ln -s works" >&5
+echo "configure:7678: checking whether ln -s works" >&5
 if eval "test \"\${ac_cv_prog_LN_S+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7712,7 +7698,7 @@ fi
 # Extract the first word of "sendmail", so it can be a program name with args.
 set dummy sendmail; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7716: checking for $ac_word" >&5
+echo "configure:7702: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_path_SENDMAIL+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7748,7 +7734,7 @@ fi
 # Extract the first word of "vi", so it can be a program name with args.
 set dummy vi; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7752: checking for $ac_word" >&5
+echo "configure:7738: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_path_EDITOR+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7787,7 +7773,7 @@ if test $ol_enable_perl != no ; then
        # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7791: checking for $ac_word" >&5
+echo "configure:7777: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_path_PERLBIN+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7838,7 +7824,7 @@ fi
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:7842: checking how to run the C preprocessor" >&5
+echo "configure:7828: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -7853,13 +7839,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 7857 "configure"
+#line 7843 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -7870,13 +7856,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 7874 "configure"
+#line 7860 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -7887,13 +7873,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 7891 "configure"
+#line 7877 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -7932,12 +7918,12 @@ fi
 
 
 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:7936: checking for Cygwin environment" >&5
+echo "configure:7922: checking for Cygwin environment" >&5
 if eval "test \"\${ac_cv_cygwin+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7941 "configure"
+#line 7927 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -7948,7 +7934,7 @@ int main() {
 return __CYGWIN__;
 ; return 0; }
 EOF
-if { (eval echo configure:7952: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cygwin=yes
 else
@@ -7964,19 +7950,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
 CYGWIN=
 test "$ac_cv_cygwin" = yes && CYGWIN=yes
 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:7968: checking for mingw32 environment" >&5
+echo "configure:7954: checking for mingw32 environment" >&5
 if eval "test \"\${ac_cv_mingw32+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7973 "configure"
+#line 7959 "configure"
 #include "confdefs.h"
 
 int main() {
 return __MINGW32__;
 ; return 0; }
 EOF
-if { (eval echo configure:7980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mingw32=yes
 else
@@ -7995,7 +7981,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:7999: checking for executable suffix" >&5
+echo "configure:7985: checking for executable suffix" >&5
 if eval "test \"\${ac_cv_exeext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8005,7 +7991,7 @@ else
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:8009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:7995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
       *.c | *.C | *.o | *.obj | *.xcoff) ;;
@@ -8026,13 +8012,13 @@ echo "$ac_t""${ac_cv_exeext}" 1>&6
 ac_exeext=$EXEEXT
 
 echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-echo "configure:8030: checking for object suffix" >&5
+echo "configure:8016: checking for object suffix" >&5
 if eval "test \"\${ac_cv_objext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   rm -f conftest*
 echo 'int i = 1;' > conftest.$ac_ext
-if { (eval echo configure:8036: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   for ac_file in conftest.*; do
     case $ac_file in
     *.c) ;;
@@ -8056,7 +8042,7 @@ EOF
 
 
 echo $ac_n "checking for be_app in -lbe""... $ac_c" 1>&6
-echo "configure:8060: checking for be_app in -lbe" >&5
+echo "configure:8046: checking for be_app in -lbe" >&5
 ac_lib_var=`echo be'_'be_app | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8064,7 +8050,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbe -lroot -lnet $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8068 "configure"
+#line 8054 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8075,7 +8061,7 @@ int main() {
 be_app()
 ; return 0; }
 EOF
-if { (eval echo configure:8079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8101,7 +8087,7 @@ fi
 
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:8105: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:8091: checking for ${CC-cc} option to accept ANSI C" >&5
 if eval "test \"\${am_cv_prog_cc_stdc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8118,7 +8104,7 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
 do
   CC="$ac_save_CC $ac_arg"
   cat > conftest.$ac_ext <<EOF
-#line 8122 "configure"
+#line 8108 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 #include <stdio.h>
@@ -8155,7 +8141,7 @@ return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
 
 ; return 0; }
 EOF
-if { (eval echo configure:8159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_prog_cc_stdc="$ac_arg"; break
 else
@@ -8189,7 +8175,7 @@ if test -z "${MKDEP}"; then
        OL_MKDEP="${CC-cc}"
        if test -z "${MKDEP_FLAGS}"; then
                echo $ac_n "checking for ${OL_MKDEP} depend flag""... $ac_c" 1>&6
-echo "configure:8193: checking for ${OL_MKDEP} depend flag" >&5
+echo "configure:8179: checking for ${OL_MKDEP} depend flag" >&5
 if eval "test \"\${ol_cv_mkdep+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8199,7 +8185,7 @@ else
                                cat > conftest.c <<EOF
  noCode;
 EOF
-                               if { ac_try='$OL_MKDEP $flag conftest.c'; { (eval echo configure:8203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
+                               if { ac_try='$OL_MKDEP $flag conftest.c'; { (eval echo configure:8189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
                                        | egrep '^conftest\.'"${ac_objext}" >/dev/null 2>&1
                                then
                                        if test ! -f conftest."${ac_object}" ; then
@@ -8232,7 +8218,7 @@ if test "${ol_cv_mkdep}" = no ; then
 fi
 
 echo $ac_n "checking for afopen in -ls""... $ac_c" 1>&6
-echo "configure:8236: checking for afopen in -ls" >&5
+echo "configure:8222: checking for afopen in -ls" >&5
 ac_lib_var=`echo s'_'afopen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8240,7 +8226,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ls  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8244 "configure"
+#line 8230 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8251,7 +8237,7 @@ int main() {
 afopen()
 ; return 0; }
 EOF
-if { (eval echo configure:8255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8285,17 +8271,17 @@ if test $ol_enable_modules != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8289: checking for $ac_hdr" >&5
+echo "configure:8275: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8294 "configure"
+#line 8280 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8299: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8285: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8327,7 +8313,7 @@ done
        fi
 
        echo $ac_n "checking for lt_dlinit in -lltdl""... $ac_c" 1>&6
-echo "configure:8331: checking for lt_dlinit in -lltdl" >&5
+echo "configure:8317: checking for lt_dlinit in -lltdl" >&5
 ac_lib_var=`echo ltdl'_'lt_dlinit | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8335,7 +8321,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lltdl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8339 "configure"
+#line 8325 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8346,7 +8332,7 @@ int main() {
 lt_dlinit()
 ; return 0; }
 EOF
-if { (eval echo configure:8350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8393,13 +8379,13 @@ fi
 
 # test for EBCDIC
 echo $ac_n "checking for EBCDIC""... $ac_c" 1>&6
-echo "configure:8397: checking for EBCDIC" >&5
+echo "configure:8383: checking for EBCDIC" >&5
 if eval "test \"\${ol_cv_cpp_ebcdic+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 8403 "configure"
+#line 8389 "configure"
 #include "confdefs.h"
 
 #if !('M' == 0xd4)
@@ -8408,7 +8394,7 @@ else
 
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8412: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8398: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8432,12 +8418,12 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:8436: checking for ANSI C header files" >&5
+echo "configure:8422: checking for ANSI C header files" >&5
 if eval "test \"\${ol_cv_header_stdc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8441 "configure"
+#line 8427 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -8445,7 +8431,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8462,7 +8448,7 @@ rm -f conftest*
 if test $ol_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 8466 "configure"
+#line 8452 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -8480,7 +8466,7 @@ fi
 if test $ol_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 8484 "configure"
+#line 8470 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -8501,7 +8487,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 8505 "configure"
+#line 8491 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #ifndef HAVE_EBCDIC
@@ -8519,7 +8505,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:8523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -8553,12 +8539,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:8557: checking for $ac_hdr that defines DIR" >&5
+echo "configure:8543: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"\${ac_cv_header_dirent_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8562 "configure"
+#line 8548 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -8566,7 +8552,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:8570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -8591,7 +8577,7 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:8595: checking for opendir in -ldir" >&5
+echo "configure:8581: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8599,7 +8585,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8603 "configure"
+#line 8589 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8610,7 +8596,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:8614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8632,7 +8618,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:8636: checking for opendir in -lx" >&5
+echo "configure:8622: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8640,7 +8626,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8644 "configure"
+#line 8630 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8651,7 +8637,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:8655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8674,12 +8660,12 @@ fi
 fi
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:8678: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:8664: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"\${ac_cv_header_sys_wait_h+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8683 "configure"
+#line 8669 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -8695,7 +8681,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:8699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8685: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -8716,12 +8702,12 @@ EOF
 fi
 
 echo $ac_n "checking POSIX termios""... $ac_c" 1>&6
-echo "configure:8720: checking POSIX termios" >&5
+echo "configure:8706: checking POSIX termios" >&5
 if eval "test \"\${am_cv_sys_posix_termios+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8725 "configure"
+#line 8711 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <unistd.h>
@@ -8731,7 +8717,7 @@ int main() {
    tcgetattr(0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:8735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_sys_posix_termios=yes
 else
@@ -8747,7 +8733,7 @@ echo "$ac_t""$am_cv_sys_posix_termios" 1>&6
 
 
  echo $ac_n "checking whether use of TIOCGWINSZ requires sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:8751: checking whether use of TIOCGWINSZ requires sys/ioctl.h" >&5
+echo "configure:8737: checking whether use of TIOCGWINSZ requires sys/ioctl.h" >&5
 if eval "test \"\${am_cv_sys_tiocgwinsz_needs_sys_ioctl_h+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8756,7 +8742,7 @@ else
   gwinsz_in_termios_h=no
   if test $am_cv_sys_posix_termios = yes; then
     cat > conftest.$ac_ext <<EOF
-#line 8760 "configure"
+#line 8746 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #     include <termios.h>
@@ -8776,7 +8762,7 @@ rm -f conftest*
 
   if test $gwinsz_in_termios_h = no; then
     cat > conftest.$ac_ext <<EOF
-#line 8780 "configure"
+#line 8766 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #     include <sys/ioctl.h>
@@ -8860,17 +8846,17 @@ for ac_hdr in \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8864: checking for $ac_hdr" >&5
+echo "configure:8850: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8869 "configure"
+#line 8855 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8900,12 +8886,12 @@ done
 
 
 echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "configure:8904: checking for dlopen" >&5
+echo "configure:8890: checking for dlopen" >&5
 if eval "test \"\${ac_cv_func_dlopen+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8909 "configure"
+#line 8895 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dlopen(); below.  */
@@ -8929,7 +8915,7 @@ f = dlopen;
 
 ; return 0; }
 EOF
-if { (eval echo configure:8933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dlopen=yes"
 else
@@ -8947,7 +8933,7 @@ if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:8951: checking for dlopen in -ldl" >&5
+echo "configure:8937: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8955,7 +8941,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8959 "configure"
+#line 8945 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8966,7 +8952,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:8970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8997,7 +8983,7 @@ fi
 
 
 echo $ac_n "checking for sigset in -lV3""... $ac_c" 1>&6
-echo "configure:9001: checking for sigset in -lV3" >&5
+echo "configure:8987: checking for sigset in -lV3" >&5
 ac_lib_var=`echo V3'_'sigset | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9005,7 +8991,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lV3  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9009 "configure"
+#line 8995 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9016,7 +9002,7 @@ int main() {
 sigset()
 ; return 0; }
 EOF
-if { (eval echo configure:9020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9045,12 +9031,12 @@ fi
 
 
 echo $ac_n "checking for winsock""... $ac_c" 1>&6
-echo "configure:9049: checking for winsock" >&5
+echo "configure:9035: checking for winsock" >&5
 save_LIBS="$LIBS"
 for curlib in ws2_32 wsock32; do
        LIBS="$LIBS -l$curlib"
        cat > conftest.$ac_ext <<EOF
-#line 9054 "configure"
+#line 9040 "configure"
 #include "confdefs.h"
 
                        char socket@12();
@@ -9067,7 +9053,7 @@ int main() {
                        
 ; return 0; }
 EOF
-if { (eval echo configure:9071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   have_winsock=yes
 else
@@ -9102,12 +9088,12 @@ echo "$ac_t""$have_winsock" 1>&6
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:9106: checking for socket" >&5
+echo "configure:9092: checking for socket" >&5
 if eval "test \"\${ac_cv_func_socket+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9111 "configure"
+#line 9097 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -9131,7 +9117,7 @@ f = socket;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9135: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_socket=yes"
 else
@@ -9150,7 +9136,7 @@ else
   echo "$ac_t""no" 1>&6
        
        echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
-echo "configure:9154: checking for main in -lsocket" >&5
+echo "configure:9140: checking for main in -lsocket" >&5
 ac_lib_var=`echo socket'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9158,14 +9144,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9162 "configure"
+#line 9148 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9193,7 +9179,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnet""... $ac_c" 1>&6
-echo "configure:9197: checking for main in -lnet" >&5
+echo "configure:9183: checking for main in -lnet" >&5
 ac_lib_var=`echo net'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9201,14 +9187,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9205 "configure"
+#line 9191 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9236,7 +9222,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnsl_s""... $ac_c" 1>&6
-echo "configure:9240: checking for main in -lnsl_s" >&5
+echo "configure:9226: checking for main in -lnsl_s" >&5
 ac_lib_var=`echo nsl_s'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9244,14 +9230,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9248 "configure"
+#line 9234 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9279,7 +9265,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:9283: checking for main in -lnsl" >&5
+echo "configure:9269: checking for main in -lnsl" >&5
 ac_lib_var=`echo nsl'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9287,14 +9273,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9291 "configure"
+#line 9277 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9322,7 +9308,7 @@ else
 fi
 
        echo $ac_n "checking for socket in -linet""... $ac_c" 1>&6
-echo "configure:9326: checking for socket in -linet" >&5
+echo "configure:9312: checking for socket in -linet" >&5
 ac_lib_var=`echo inet'_'socket | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9330,7 +9316,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-linet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9334 "configure"
+#line 9320 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9341,7 +9327,7 @@ int main() {
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:9345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9369,7 +9355,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lgen""... $ac_c" 1>&6
-echo "configure:9373: checking for main in -lgen" >&5
+echo "configure:9359: checking for main in -lgen" >&5
 ac_lib_var=`echo gen'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9377,14 +9363,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgen  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9381 "configure"
+#line 9367 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9416,12 +9402,12 @@ fi
 
 
 echo $ac_n "checking for select""... $ac_c" 1>&6
-echo "configure:9420: checking for select" >&5
+echo "configure:9406: checking for select" >&5
 if eval "test \"\${ac_cv_func_select+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9425 "configure"
+#line 9411 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char select(); below.  */
@@ -9445,7 +9431,7 @@ f = select;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_select=yes"
 else
@@ -9468,7 +9454,7 @@ fi
 
 if test "${ac_cv_header_winsock_h}" != yes; then
                                echo $ac_n "checking types of arguments for select()""... $ac_c" 1>&6
-echo "configure:9472: checking types of arguments for select()" >&5
+echo "configure:9458: checking types of arguments for select()" >&5
  if eval "test \"\${ac_cv_func_select_arg234+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9482,7 +9468,7 @@ else
      for ac_cv_func_select_arg1 in 'int' 'size_t' 'unsigned long' 'unsigned'; do
       for ac_cv_func_select_arg5 in 'struct timeval *' 'const struct timeval *'; do
        cat > conftest.$ac_ext <<EOF
-#line 9486 "configure"
+#line 9472 "configure"
 #include "confdefs.h"
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -9501,7 +9487,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:9505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
           ac_not_found=no ; break 3
 else
@@ -9546,17 +9532,17 @@ for ac_hdr in regex.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9550: checking for $ac_hdr" >&5
+echo "configure:9536: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9555 "configure"
+#line 9541 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9546: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9587,14 +9573,14 @@ if test "$ac_cv_header_regex_h" != yes ; then
 fi
 
 echo $ac_n "checking for library containing regfree""... $ac_c" 1>&6
-echo "configure:9591: checking for library containing regfree" >&5
+echo "configure:9577: checking for library containing regfree" >&5
 if eval "test \"\${ac_cv_search_regfree+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_func_search_save_LIBS="$LIBS"
 ac_cv_search_regfree="no"
 cat > conftest.$ac_ext <<EOF
-#line 9598 "configure"
+#line 9584 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9605,7 +9591,7 @@ int main() {
 regfree()
 ; return 0; }
 EOF
-if { (eval echo configure:9609: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_search_regfree="none required"
 else
@@ -9616,7 +9602,7 @@ rm -f conftest*
 test "$ac_cv_search_regfree" = "no" && for ac_lib in regex gnuregex; do
 LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9620 "configure"
+#line 9606 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9627,7 +9613,7 @@ int main() {
 regfree()
 ; return 0; }
 EOF
-if { (eval echo configure:9631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_search_regfree="-l$ac_lib"
 break
@@ -9650,7 +9636,7 @@ fi
 
 
 echo $ac_n "checking for compatible POSIX regex""... $ac_c" 1>&6
-echo "configure:9654: checking for compatible POSIX regex" >&5
+echo "configure:9640: checking for compatible POSIX regex" >&5
 if eval "test \"\${ol_cv_c_posix_regex+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9659,7 +9645,7 @@ else
   ol_cv_c_posix_regex=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9663 "configure"
+#line 9649 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -9685,7 +9671,7 @@ main()
        return rc;
 }
 EOF
-if { (eval echo configure:9689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_c_posix_regex=yes
 else
@@ -9711,17 +9697,17 @@ for ac_hdr in sys/uuid.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9715: checking for $ac_hdr" >&5
+echo "configure:9701: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9720 "configure"
+#line 9706 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9725: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9751,14 +9737,14 @@ if test $ac_cv_header_sys_uuid_h = yes ; then
        save_LIBS="$LIBS"
        
 echo $ac_n "checking for library containing uuid_to_str""... $ac_c" 1>&6
-echo "configure:9755: checking for library containing uuid_to_str" >&5
+echo "configure:9741: checking for library containing uuid_to_str" >&5
 if eval "test \"\${ac_cv_search_uuid_to_str+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_func_search_save_LIBS="$LIBS"
 ac_cv_search_uuid_to_str="no"
 cat > conftest.$ac_ext <<EOF
-#line 9762 "configure"
+#line 9748 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9769,7 +9755,7 @@ int main() {
 uuid_to_str()
 ; return 0; }
 EOF
-if { (eval echo configure:9773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_search_uuid_to_str="none required"
 else
@@ -9780,7 +9766,7 @@ rm -f conftest*
 test "$ac_cv_search_uuid_to_str" = "no" && for ac_lib in uuid; do
 LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9784 "configure"
+#line 9770 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9791,7 +9777,7 @@ int main() {
 uuid_to_str()
 ; return 0; }
 EOF
-if { (eval echo configure:9795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_search_uuid_to_str="-l$ac_lib"
 break
@@ -9826,11 +9812,11 @@ fi
 
 if test $have_uuid = no ; then
        echo $ac_n "checking to see if -lrpcrt4 is needed for win32 UUID support""... $ac_c" 1>&6
-echo "configure:9830: checking to see if -lrpcrt4 is needed for win32 UUID support" >&5
+echo "configure:9816: checking to see if -lrpcrt4 is needed for win32 UUID support" >&5
        save_LIBS="$LIBS"
        LIBS="$LIBS -lrpcrt4"
        cat > conftest.$ac_ext <<EOF
-#line 9834 "configure"
+#line 9820 "configure"
 #include "confdefs.h"
 
                char UuidCreate@4();
@@ -9843,7 +9829,7 @@ int main() {
                
 ; return 0; }
 EOF
-if { (eval echo configure:9847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   need_rpcrt=yes
 else
@@ -9862,12 +9848,12 @@ fi
 
 ol_link_dnssrv=no
 echo $ac_n "checking for res_query""... $ac_c" 1>&6
-echo "configure:9866: checking for res_query" >&5
+echo "configure:9852: checking for res_query" >&5
 if eval "test \"\${ac_cv_func_res_query+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9871 "configure"
+#line 9857 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char res_query(); below.  */
@@ -9891,7 +9877,7 @@ f = res_query;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_res_query=yes"
 else
@@ -9912,12 +9898,12 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for __res_query""... $ac_c" 1>&6
-echo "configure:9916: checking for __res_query" >&5
+echo "configure:9902: checking for __res_query" >&5
 if eval "test \"\${ac_cv_func___res_query+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9921 "configure"
+#line 9907 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char __res_query(); below.  */
@@ -9941,7 +9927,7 @@ f = __res_query;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func___res_query=yes"
 else
@@ -9965,7 +9951,7 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for res_query in -lbind""... $ac_c" 1>&6
-echo "configure:9969: checking for res_query in -lbind" >&5
+echo "configure:9955: checking for res_query in -lbind" >&5
 ac_lib_var=`echo bind'_'res_query | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9973,7 +9959,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbind  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9977 "configure"
+#line 9963 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9984,7 +9970,7 @@ int main() {
 res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:9988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10016,7 +10002,7 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for __res_query in -lbind""... $ac_c" 1>&6
-echo "configure:10020: checking for __res_query in -lbind" >&5
+echo "configure:10006: checking for __res_query in -lbind" >&5
 ac_lib_var=`echo bind'_'__res_query | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10024,7 +10010,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbind  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10028 "configure"
+#line 10014 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10035,7 +10021,7 @@ int main() {
 __res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10067,7 +10053,7 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for res_query in -lresolv""... $ac_c" 1>&6
-echo "configure:10071: checking for res_query in -lresolv" >&5
+echo "configure:10057: checking for res_query in -lresolv" >&5
 ac_lib_var=`echo resolv'_'res_query | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10075,7 +10061,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10079 "configure"
+#line 10065 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10086,7 +10072,7 @@ int main() {
 res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10118,7 +10104,7 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for __res_query in -lresolv""... $ac_c" 1>&6
-echo "configure:10122: checking for __res_query in -lresolv" >&5
+echo "configure:10108: checking for __res_query in -lresolv" >&5
 ac_lib_var=`echo resolv'_'__res_query | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10126,7 +10112,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10130 "configure"
+#line 10116 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10137,7 +10123,7 @@ int main() {
 __res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 for ac_func in getaddrinfo gai_strerror inet_ntop 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10189: checking for $ac_func" >&5
+echo "configure:10175: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10194 "configure"
+#line 10180 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10214,7 +10200,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:10218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -10246,13 +10232,13 @@ if test $ac_cv_func_getaddrinfo = no -o $ac_cv_func_inet_ntop = no ; then
        fi
 elif test $ol_enable_ipv6 != no ; then
        echo $ac_n "checking INET6_ADDRSTRLEN""... $ac_c" 1>&6
-echo "configure:10250: checking INET6_ADDRSTRLEN" >&5
+echo "configure:10236: checking INET6_ADDRSTRLEN" >&5
 if eval "test \"\${ol_cv_inet6_addrstrlen+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 10256 "configure"
+#line 10242 "configure"
 #include "confdefs.h"
 
 #                      include <netinet/in.h>
@@ -10287,17 +10273,17 @@ if test $ol_enable_local != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10291: checking for $ac_hdr" >&5
+echo "configure:10277: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10296 "configure"
+#line 10282 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10301: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10344,17 +10330,17 @@ if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10348: checking for $ac_hdr" >&5
+echo "configure:10334: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10353 "configure"
+#line 10339 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10344: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10386,17 +10372,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10390: checking for $ac_hdr" >&5
+echo "configure:10376: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10395 "configure"
+#line 10381 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10430,7 +10416,7 @@ done
 
                if test $krb5_impl = mit; then
                        echo $ac_n "checking for main in -lk5crypto""... $ac_c" 1>&6
-echo "configure:10434: checking for main in -lk5crypto" >&5
+echo "configure:10420: checking for main in -lk5crypto" >&5
 ac_lib_var=`echo k5crypto'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10438,14 +10424,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lk5crypto  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10442 "configure"
+#line 10428 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10468,7 +10454,7 @@ fi
 
 
                        echo $ac_n "checking for main in -lkrb5""... $ac_c" 1>&6
-echo "configure:10472: checking for main in -lkrb5" >&5
+echo "configure:10458: checking for main in -lkrb5" >&5
 ac_lib_var=`echo krb5'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10476,14 +10462,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb5 -l$krb5crypto -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10480 "configure"
+#line 10466 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10508,7 +10494,7 @@ fi
 
                elif test $krb5_impl = heimdal; then
                        echo $ac_n "checking for main in -ldes""... $ac_c" 1>&6
-echo "configure:10512: checking for main in -ldes" >&5
+echo "configure:10498: checking for main in -ldes" >&5
 ac_lib_var=`echo des'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10516,14 +10502,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldes  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10520 "configure"
+#line 10506 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10546,7 +10532,7 @@ fi
 
 
                        echo $ac_n "checking for main in -lkrb5""... $ac_c" 1>&6
-echo "configure:10550: checking for main in -lkrb5" >&5
+echo "configure:10536: checking for main in -lkrb5" >&5
 ac_lib_var=`echo krb5'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10554,14 +10540,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10558 "configure"
+#line 10544 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10624,17 +10610,17 @@ if test $ol_link_krb5 = yes -a \( $ol_with_kerberos = yes -o \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10628: checking for $ac_hdr" >&5
+echo "configure:10614: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10633 "configure"
+#line 10619 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10624: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10664,7 +10650,7 @@ done
        if test $ac_cv_header_kerberosIV_krb_h = yes ; then
                if test $krb5_impl = mit; then
                        echo $ac_n "checking for main in -lkrb4""... $ac_c" 1>&6
-echo "configure:10668: checking for main in -lkrb4" >&5
+echo "configure:10654: checking for main in -lkrb4" >&5
 ac_lib_var=`echo krb4'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10672,14 +10658,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb4 -ldes425 -lkrb5 -l$krb5crypto -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10676 "configure"
+#line 10662 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10704,7 +10690,7 @@ fi
 
                elif test $krb5_impl = heimdal; then
                        echo $ac_n "checking for main in -lkrb4""... $ac_c" 1>&6
-echo "configure:10708: checking for main in -lkrb4" >&5
+echo "configure:10694: checking for main in -lkrb4" >&5
 ac_lib_var=`echo krb4'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10712,14 +10698,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb4 -lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10716 "configure"
+#line 10702 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10761,7 +10747,7 @@ EOF
 
 
                        echo $ac_n "checking for des_debug in Kerberos libraries""... $ac_c" 1>&6
-echo "configure:10765: checking for des_debug in Kerberos libraries" >&5
+echo "configure:10751: checking for des_debug in Kerberos libraries" >&5
 if eval "test \"\${ol_cv_var_des_debug+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -10769,7 +10755,7 @@ else
                                                                save_LIBS="$LIBS"
                                LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
                                cat > conftest.$ac_ext <<EOF
-#line 10773 "configure"
+#line 10759 "configure"
 #include "confdefs.h"
 
 #include <kerberosIV/krb.h>
@@ -10782,7 +10768,7 @@ des_debug = 1;
 
 ; return 0; }
 EOF
-if { (eval echo configure:10786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_var_des_debug=yes
 else
@@ -10821,17 +10807,17 @@ if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10825: checking for $ac_hdr" >&5
+echo "configure:10811: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10830 "configure"
+#line 10816 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10860,7 +10846,7 @@ done
 
        if test $ac_cv_header_krb_h = yes ; then
                echo $ac_n "checking for main in -lkrb""... $ac_c" 1>&6
-echo "configure:10864: checking for main in -lkrb" >&5
+echo "configure:10850: checking for main in -lkrb" >&5
 ac_lib_var=`echo krb'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10868,14 +10854,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb -ldes $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10872 "configure"
+#line 10858 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10945,17 +10931,17 @@ if test $ol_with_tls != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10949: checking for $ac_hdr" >&5
+echo "configure:10935: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10954 "configure"
+#line 10940 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10959: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10984,7 +10970,7 @@ done
        
        if test $ac_cv_header_openssl_ssl_h = yes -o $ac_cv_header_ssl_h = yes ; then
                echo $ac_n "checking for SSLeay_add_ssl_algorithms in -lssl""... $ac_c" 1>&6
-echo "configure:10988: checking for SSLeay_add_ssl_algorithms in -lssl" >&5
+echo "configure:10974: checking for SSLeay_add_ssl_algorithms in -lssl" >&5
 ac_lib_var=`echo ssl'_'SSLeay_add_ssl_algorithms | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10992,7 +10978,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10996 "configure"
+#line 10982 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11003,7 +10989,7 @@ int main() {
 SSLeay_add_ssl_algorithms()
 ; return 0; }
 EOF
-if { (eval echo configure:11007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11028,7 +11014,7 @@ fi
                        
                if test $have_ssleay = no ; then
                        echo $ac_n "checking for SSL_library_init in -lssl""... $ac_c" 1>&6
-echo "configure:11032: checking for SSL_library_init in -lssl" >&5
+echo "configure:11018: checking for SSL_library_init in -lssl" >&5
 ac_lib_var=`echo ssl'_'SSL_library_init | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -11036,7 +11022,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 11040 "configure"
+#line 11026 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11047,7 +11033,7 @@ int main() {
 SSL_library_init()
 ; return 0; }
 EOF
-if { (eval echo configure:11051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11073,7 +11059,7 @@ fi
 
                if test $have_ssleay = no ; then
                        echo $ac_n "checking for ssl3_accept in -lssl""... $ac_c" 1>&6
-echo "configure:11077: checking for ssl3_accept in -lssl" >&5
+echo "configure:11063: checking for ssl3_accept in -lssl" >&5
 ac_lib_var=`echo ssl'_'ssl3_accept | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -11081,7 +11067,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto -lRSAglue -lrsaref $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 11085 "configure"
+#line 11071 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11092,7 +11078,7 @@ int main() {
 ssl3_accept()
 ; return 0; }
 EOF
-if { (eval echo configure:11096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11173,12 +11159,12 @@ for ac_func in \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11177: checking for $ac_func" >&5
+echo "configure:11163: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11182 "configure"
+#line 11168 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11202,7 +11188,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:11206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -11231,19 +11217,19 @@ if test "$ac_cv_func_ctime_r" = no ; then
        ol_cv_func_ctime_r_nargs=0
 else
        echo $ac_n "checking number of arguments of ctime_r""... $ac_c" 1>&6
-echo "configure:11235: checking number of arguments of ctime_r" >&5
+echo "configure:11221: checking number of arguments of ctime_r" >&5
 if eval "test \"\${ol_cv_func_ctime_r_nargs+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11240 "configure"
+#line 11226 "configure"
 #include "confdefs.h"
 #include <time.h>
 int main() {
 time_t ti; char *buffer; ctime_r(&ti,buffer,32);
 ; return 0; }
 EOF
-if { (eval echo configure:11247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_ctime_r_nargs3=yes
 else
 rm -f conftest*
 
        cat > conftest.$ac_ext <<EOF
-#line 11259 "configure"
+#line 11245 "configure"
 #include "confdefs.h"
 #include <time.h>
 int main() {
 time_t ti; char *buffer; ctime_r(&ti,buffer);
 ; return 0; }
 EOF
-if { (eval echo configure:11266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11252: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_ctime_r_nargs2=yes
 else
 
 if test "$ac_cv_func_gethostbyname_r" = yes ; then
        echo $ac_n "checking number of arguments of gethostbyname_r""... $ac_c" 1>&6
-echo "configure:11306: checking number of arguments of gethostbyname_r" >&5
+echo "configure:11292: checking number of arguments of gethostbyname_r" >&5
 if eval "test \"\${ol_cv_func_gethostbyname_r_nargs+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11311 "configure"
+#line 11297 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -11321,7 +11307,7 @@ struct hostent hent; char buffer[BUFSIZE];
                        buffer, bufsize, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:11325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyname_r_nargs5=yes
 else
@@ -11333,7 +11319,7 @@ fi
 rm -f conftest*
 
        cat > conftest.$ac_ext <<EOF
-#line 11337 "configure"
+#line 11323 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -11348,7 +11334,7 @@ struct hostent hent;struct hostent *rhent;
                        &rhent, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:11352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyname_r_nargs6=yes
 else
  
 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
        echo $ac_n "checking number of arguments of gethostbyaddr_r""... $ac_c" 1>&6
-echo "configure:11393: checking number of arguments of gethostbyaddr_r" >&5
+echo "configure:11379: checking number of arguments of gethostbyaddr_r" >&5
 if eval "test \"\${ol_cv_func_gethostbyaddr_r_nargs+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11398 "configure"
+#line 11384 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -11410,7 +11396,7 @@ struct hostent hent; char buffer[BUFSIZE];
                        alen, AF_INET, &hent, buffer, bufsize, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:11414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11400: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyaddr_r_nargs7=yes
 else
@@ -11422,7 +11408,7 @@ fi
 rm -f conftest*
 
        cat > conftest.$ac_ext <<EOF
-#line 11426 "configure"
+#line 11412 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -11440,7 +11426,7 @@ struct hostent hent;
                        &rhent, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:11444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyaddr_r_nargs8=yes
 else
@@ -11503,12 +11489,12 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 
        
        echo $ac_n "checking for _beginthread""... $ac_c" 1>&6
-echo "configure:11507: checking for _beginthread" >&5
+echo "configure:11493: checking for _beginthread" >&5
 if eval "test \"\${ac_cv_func__beginthread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11512 "configure"
+#line 11498 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _beginthread(); below.  */
@@ -11532,7 +11518,7 @@ f = _beginthread;
 
 ; return 0; }
 EOF
-if { (eval echo configure:11536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__beginthread=yes"
 else
@@ -11588,17 +11574,17 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11592: checking for $ac_hdr" >&5
+echo "configure:11578: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11597 "configure"
+#line 11583 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11627,13 +11613,13 @@ done
 
        if test $ac_cv_header_pthread_h = yes ; then
                echo $ac_n "checking POSIX thread version""... $ac_c" 1>&6
-echo "configure:11631: checking POSIX thread version" >&5
+echo "configure:11617: checking POSIX thread version" >&5
 if eval "test \"\${ol_cv_pthread_version+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 11637 "configure"
+#line 11623 "configure"
 #include "confdefs.h"
 
 #              include <pthread.h>
@@ -11655,7 +11641,7 @@ rm -f conftest*
 
 
        cat > conftest.$ac_ext <<EOF
-#line 11659 "configure"
+#line 11645 "configure"
 #include "confdefs.h"
 
 #              include <pthread.h>
@@ -11708,12 +11694,12 @@ EOF
 
                
        echo $ac_n "checking for LinuxThreads pthread.h""... $ac_c" 1>&6
-echo "configure:11712: checking for LinuxThreads pthread.h" >&5
+echo "configure:11698: checking for LinuxThreads pthread.h" >&5
 if eval "test \"\${ol_cv_header_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11717 "configure"
+#line 11703 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -11740,12 +11726,12 @@ EOF
 
                
        echo $ac_n "checking for GNU Pth pthread.h""... $ac_c" 1>&6
-echo "configure:11744: checking for GNU Pth pthread.h" >&5
+echo "configure:11730: checking for GNU Pth pthread.h" >&5
 if eval "test \"\${ol_cv_header_gnu_pth_pthread_h+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11749 "configure"
+#line 11735 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 #ifdef _POSIX_THREAD_IS_GNU_PTH
@@ -11774,17 +11760,17 @@ echo "$ac_t""$ol_cv_header_gnu_pth_pthread_h" 1>&6
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11778: checking for $ac_hdr" >&5
+echo "configure:11764: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11783 "configure"
+#line 11769 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11774: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11814,14 +11800,14 @@ done
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
                                echo $ac_n "checking for pthread_create in default libraries""... $ac_c" 1>&6
-echo "configure:11818: checking for pthread_create in default libraries" >&5
+echo "configure:11804: checking for pthread_create in default libraries" >&5
 if eval "test \"\${ol_cv_pthread_create+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 11825 "configure"
+#line 11811 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -11902,7 +11888,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_create=yes
 else
@@ -11914,7 +11900,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 11918 "configure"
+#line 11904 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12000,7 +11986,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_create=yes
 else
@@ -12025,7 +12011,7 @@ echo "$ac_t""$ol_cv_pthread_create" 1>&6
 if test "$ol_link_threads" = no ; then
        # try -kthread
        echo $ac_n "checking for pthread link with -kthread""... $ac_c" 1>&6
-echo "configure:12029: checking for pthread link with -kthread" >&5
+echo "configure:12015: checking for pthread link with -kthread" >&5
 if eval "test \"\${ol_cv_pthread_kthread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12036,7 +12022,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12040 "configure"
+#line 12026 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12117,7 +12103,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_kthread=yes
 else
@@ -12129,7 +12115,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12133 "configure"
+#line 12119 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12215,7 +12201,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_kthread=yes
 else
@@ -12245,7 +12231,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -pthread
        echo $ac_n "checking for pthread link with -pthread""... $ac_c" 1>&6
-echo "configure:12249: checking for pthread link with -pthread" >&5
+echo "configure:12235: checking for pthread link with -pthread" >&5
 if eval "test \"\${ol_cv_pthread_pthread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12256,7 +12242,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12260 "configure"
+#line 12246 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12337,7 +12323,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_pthread=yes
 else
@@ -12349,7 +12335,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12353 "configure"
+#line 12339 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12435,7 +12421,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_pthread=yes
 else
@@ -12465,7 +12451,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -pthreads
        echo $ac_n "checking for pthread link with -pthreads""... $ac_c" 1>&6
-echo "configure:12469: checking for pthread link with -pthreads" >&5
+echo "configure:12455: checking for pthread link with -pthreads" >&5
 if eval "test \"\${ol_cv_pthread_pthreads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12476,7 +12462,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12480 "configure"
+#line 12466 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12557,7 +12543,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_pthreads=yes
 else
@@ -12569,7 +12555,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12573 "configure"
+#line 12559 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12655,7 +12641,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_pthreads=yes
 else
@@ -12685,7 +12671,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -mthreads
        echo $ac_n "checking for pthread link with -mthreads""... $ac_c" 1>&6
-echo "configure:12689: checking for pthread link with -mthreads" >&5
+echo "configure:12675: checking for pthread link with -mthreads" >&5
 if eval "test \"\${ol_cv_pthread_mthreads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12696,7 +12682,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12700 "configure"
+#line 12686 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12777,7 +12763,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_mthreads=yes
 else
@@ -12789,7 +12775,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12793 "configure"
+#line 12779 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12875,7 +12861,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_mthreads=yes
 else
@@ -12905,7 +12891,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -thread
        echo $ac_n "checking for pthread link with -thread""... $ac_c" 1>&6
-echo "configure:12909: checking for pthread link with -thread" >&5
+echo "configure:12895: checking for pthread link with -thread" >&5
 if eval "test \"\${ol_cv_pthread_thread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12916,7 +12902,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12920 "configure"
+#line 12906 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12997,7 +12983,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_thread=yes
 else
@@ -13009,7 +12995,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13013 "configure"
+#line 12999 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13095,7 +13081,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_thread=yes
 else
@@ -13126,7 +13112,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthread -lmach -lexc -lc_r
        echo $ac_n "checking for pthread link with -lpthread -lmach -lexc -lc_r""... $ac_c" 1>&6
-echo "configure:13130: checking for pthread link with -lpthread -lmach -lexc -lc_r" >&5
+echo "configure:13116: checking for pthread link with -lpthread -lmach -lexc -lc_r" >&5
 if eval "test \"\${ol_cv_pthread_lpthread_lmach_lexc_lc_r+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13137,7 +13123,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13141 "configure"
+#line 13127 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13218,7 +13204,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthread_lmach_lexc_lc_r=yes
 else
@@ -13230,7 +13216,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13234 "configure"
+#line 13220 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13316,7 +13302,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthread_lmach_lexc_lc_r=yes
 else
@@ -13346,7 +13332,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthread -lmach -lexc
        echo $ac_n "checking for pthread link with -lpthread -lmach -lexc""... $ac_c" 1>&6
-echo "configure:13350: checking for pthread link with -lpthread -lmach -lexc" >&5
+echo "configure:13336: checking for pthread link with -lpthread -lmach -lexc" >&5
 if eval "test \"\${ol_cv_pthread_lpthread_lmach_lexc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13357,7 +13343,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13361 "configure"
+#line 13347 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13438,7 +13424,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthread_lmach_lexc=yes
 else
@@ -13450,7 +13436,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13454 "configure"
+#line 13440 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13536,7 +13522,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthread_lmach_lexc=yes
 else
@@ -13567,7 +13553,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthread -Wl,-woff,85
        echo $ac_n "checking for pthread link with -lpthread -Wl,-woff,85""... $ac_c" 1>&6
-echo "configure:13571: checking for pthread link with -lpthread -Wl,-woff,85" >&5
+echo "configure:13557: checking for pthread link with -lpthread -Wl,-woff,85" >&5
 if eval "test \"\${ol_cv_pthread_lib_lpthread_woff+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13578,7 +13564,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13582 "configure"
+#line 13568 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13659,7 +13645,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lib_lpthread_woff=yes
 else
@@ -13671,7 +13657,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13675 "configure"
+#line 13661 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13757,7 +13743,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lib_lpthread_woff=yes
 else
@@ -13788,7 +13774,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthread
        echo $ac_n "checking for pthread link with -lpthread""... $ac_c" 1>&6
-echo "configure:13792: checking for pthread link with -lpthread" >&5
+echo "configure:13778: checking for pthread link with -lpthread" >&5
 if eval "test \"\${ol_cv_pthread_lpthread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13799,7 +13785,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13803 "configure"
+#line 13789 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13880,7 +13866,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthread=yes
 else
@@ -13892,7 +13878,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13896 "configure"
+#line 13882 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13978,7 +13964,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthread=yes
 else
@@ -14008,7 +13994,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lc_r
        echo $ac_n "checking for pthread link with -lc_r""... $ac_c" 1>&6
-echo "configure:14012: checking for pthread link with -lc_r" >&5
+echo "configure:13998: checking for pthread link with -lc_r" >&5
 if eval "test \"\${ol_cv_pthread_lc_r+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14019,7 +14005,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14023 "configure"
+#line 14009 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14100,7 +14086,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lc_r=yes
 else
@@ -14112,7 +14098,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14116 "configure"
+#line 14102 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14198,7 +14184,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lc_r=yes
 else
@@ -14229,7 +14215,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -threads
        echo $ac_n "checking for pthread link with -threads""... $ac_c" 1>&6
-echo "configure:14233: checking for pthread link with -threads" >&5
+echo "configure:14219: checking for pthread link with -threads" >&5
 if eval "test \"\${ol_cv_pthread_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14240,7 +14226,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14244 "configure"
+#line 14230 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14321,7 +14307,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_threads=yes
 else
@@ -14333,7 +14319,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14337 "configure"
+#line 14323 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14419,7 +14405,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_threads=yes
 else
@@ -14450,7 +14436,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthreads -lmach -lexc -lc_r
        echo $ac_n "checking for pthread link with -lpthreads -lmach -lexc -lc_r""... $ac_c" 1>&6
-echo "configure:14454: checking for pthread link with -lpthreads -lmach -lexc -lc_r" >&5
+echo "configure:14440: checking for pthread link with -lpthreads -lmach -lexc -lc_r" >&5
 if eval "test \"\${ol_cv_pthread_lpthreads_lmach_lexc_lc_r+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14461,7 +14447,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14465 "configure"
+#line 14451 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14542,7 +14528,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthreads_lmach_lexc_lc_r=yes
 else
@@ -14554,7 +14540,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14558 "configure"
+#line 14544 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14640,7 +14626,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14630: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthreads_lmach_lexc_lc_r=yes
 else
@@ -14670,7 +14656,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthreads -lmach -lexc
        echo $ac_n "checking for pthread link with -lpthreads -lmach -lexc""... $ac_c" 1>&6
-echo "configure:14674: checking for pthread link with -lpthreads -lmach -lexc" >&5
+echo "configure:14660: checking for pthread link with -lpthreads -lmach -lexc" >&5
 if eval "test \"\${ol_cv_pthread_lpthreads_lmach_lexc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14681,7 +14667,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14685 "configure"
+#line 14671 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14762,7 +14748,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthreads_lmach_lexc=yes
 else
@@ -14774,7 +14760,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14778 "configure"
+#line 14764 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14860,7 +14846,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthreads_lmach_lexc=yes
 else
@@ -14890,7 +14876,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthreads -lexc
        echo $ac_n "checking for pthread link with -lpthreads -lexc""... $ac_c" 1>&6
-echo "configure:14894: checking for pthread link with -lpthreads -lexc" >&5
+echo "configure:14880: checking for pthread link with -lpthreads -lexc" >&5
 if eval "test \"\${ol_cv_pthread_lpthreads_lexc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14901,7 +14887,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14905 "configure"
+#line 14891 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14982,7 +14968,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthreads_lexc=yes
 else
@@ -14994,7 +14980,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14998 "configure"
+#line 14984 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15080,7 +15066,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:15084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthreads_lexc=yes
 else
@@ -15111,7 +15097,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthreads
        echo $ac_n "checking for pthread link with -lpthreads""... $ac_c" 1>&6
-echo "configure:15115: checking for pthread link with -lpthreads" >&5
+echo "configure:15101: checking for pthread link with -lpthreads" >&5
 if eval "test \"\${ol_cv_pthread_lib_lpthreads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15122,7 +15108,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 15126 "configure"
+#line 15112 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15203,7 +15189,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:15207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lib_lpthreads=yes
 else
@@ -15215,7 +15201,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 15219 "configure"
+#line 15205 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15301,7 +15287,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:15305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lib_lpthreads=yes
 else
@@ -15343,12 +15329,12 @@ EOF
                                                                                                for ac_func in sched_yield pthread_yield
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15347: checking for $ac_func" >&5
+echo "configure:15333: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15352 "configure"
+#line 15338 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15372,7 +15358,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15400,7 +15386,7 @@ done
                        if test $ac_cv_func_sched_yield = no -a \
                                $ac_cv_func_pthread_yield = no ; then
                                                                echo $ac_n "checking for sched_yield in -lrt""... $ac_c" 1>&6
-echo "configure:15404: checking for sched_yield in -lrt" >&5
+echo "configure:15390: checking for sched_yield in -lrt" >&5
 ac_lib_var=`echo rt'_'sched_yield | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -15408,7 +15394,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lrt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 15412 "configure"
+#line 15398 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -15419,7 +15405,7 @@ int main() {
 sched_yield()
 ; return 0; }
 EOF
-if { (eval echo configure:15423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
                                                                                                for ac_func in thr_yield
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15455: checking for $ac_func" >&5
+echo "configure:15441: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15460 "configure"
+#line 15446 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15480,7 +15466,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15514,12 +15500,12 @@ done
                                                for ac_func in pthread_kill pthread_rwlock_destroy
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15518: checking for $ac_func" >&5
+echo "configure:15504: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15523 "configure"
+#line 15509 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15543,7 +15529,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15569,13 +15555,13 @@ done
 
 
                                                                        echo $ac_n "checking for pthread_detach with <pthread.h>""... $ac_c" 1>&6
-echo "configure:15573: checking for pthread_detach with <pthread.h>" >&5
+echo "configure:15559: checking for pthread_detach with <pthread.h>" >&5
 if eval "test \"\${ol_cv_func_pthread_detach+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                                                                cat > conftest.$ac_ext <<EOF
-#line 15579 "configure"
+#line 15565 "configure"
 #include "confdefs.h"
 
 #include <pthread.h>
@@ -15587,7 +15573,7 @@ int main() {
 pthread_detach(NULL);
 ; return 0; }
 EOF
-if { (eval echo configure:15591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_func_pthread_detach=yes
 else
@@ -15619,12 +15605,12 @@ EOF
                        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15623: checking for $ac_func" >&5
+echo "configure:15609: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15628 "configure"
+#line 15614 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15648,7 +15634,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15677,12 +15663,12 @@ done
        for ac_func in pthread_kill_other_threads_np
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15681: checking for $ac_func" >&5
+echo "configure:15667: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15686 "configure"
+#line 15672 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15706,7 +15692,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15731,7 +15717,7 @@ fi
 done
 
        echo $ac_n "checking for LinuxThreads implementation""... $ac_c" 1>&6
-echo "configure:15735: checking for LinuxThreads implementation" >&5
+echo "configure:15721: checking for LinuxThreads implementation" >&5
 if eval "test \"\${ol_cv_sys_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15744,7 +15730,7 @@ echo "$ac_t""$ol_cv_sys_linux_threads" 1>&6
        
        
        echo $ac_n "checking for LinuxThreads consistency""... $ac_c" 1>&6
-echo "configure:15748: checking for LinuxThreads consistency" >&5
+echo "configure:15734: checking for LinuxThreads consistency" >&5
 if eval "test \"\${ol_cv_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15769,7 +15755,7 @@ echo "$ac_t""$ol_cv_linux_threads" 1>&6
                        fi
 
                        echo $ac_n "checking if pthread_create() works""... $ac_c" 1>&6
-echo "configure:15773: checking if pthread_create() works" >&5
+echo "configure:15759: checking if pthread_create() works" >&5
 if eval "test \"\${ol_cv_pthread_create_works+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15778,7 +15764,7 @@ else
                                ol_cv_pthread_create_works=yes
 else
   cat > conftest.$ac_ext <<EOF
-#line 15782 "configure"
+#line 15768 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15864,7 +15850,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:15868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_create_works=yes
 else
@@ -15886,7 +15872,7 @@ echo "$ac_t""$ol_cv_pthread_create_works" 1>&6
 
                                                if test $ol_with_yielding_select = auto ; then
                                echo $ac_n "checking if select yields when using pthreads""... $ac_c" 1>&6
-echo "configure:15890: checking if select yields when using pthreads" >&5
+echo "configure:15876: checking if select yields when using pthreads" >&5
 if eval "test \"\${ol_cv_pthread_select_yields+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15895,7 +15881,7 @@ else
   ol_cv_pthread_select_yields=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 15899 "configure"
+#line 15885 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -15971,7 +15957,7 @@ int main(argc, argv)
        exit(2);
 }
 EOF
-if { (eval echo configure:15975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_select_yields=no
 else
@@ -16015,17 +16001,17 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16019: checking for $ac_hdr" >&5
+echo "configure:16005: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16024 "configure"
+#line 16010 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16015: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16055,12 +16041,12 @@ done
                ol_with_threads=found
 
                                echo $ac_n "checking for cthread_fork""... $ac_c" 1>&6
-echo "configure:16059: checking for cthread_fork" >&5
+echo "configure:16045: checking for cthread_fork" >&5
 if eval "test \"\${ac_cv_func_cthread_fork+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16064 "configure"
+#line 16050 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char cthread_fork(); below.  */
@@ -16084,7 +16070,7 @@ f = cthread_fork;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_cthread_fork=yes"
 else
@@ -16106,7 +16092,7 @@ fi
 
                if test $ol_link_threads = no ; then
                                                                        echo $ac_n "checking for cthread_fork with -all_load""... $ac_c" 1>&6
-echo "configure:16110: checking for cthread_fork with -all_load" >&5
+echo "configure:16096: checking for cthread_fork with -all_load" >&5
 if eval "test \"\${ol_cv_cthread_all_load+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -16114,7 +16100,7 @@ else
                                                                save_LIBS="$LIBS"
                                LIBS="-all_load $LIBS"
                                cat > conftest.$ac_ext <<EOF
-#line 16118 "configure"
+#line 16104 "configure"
 #include "confdefs.h"
 #include <mach/cthreads.h>
 int main() {
@@ -16123,7 +16109,7 @@ int main() {
                                        
 ; return 0; }
 EOF
-if { (eval echo configure:16127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_cthread_all_load=yes
 else
@@ -16153,12 +16139,12 @@ echo "$ac_t""$ol_cv_cthread_all_load" 1>&6
                                save_LIBS="$LIBS"
                LIBS="$LIBS -lthreads"
                echo $ac_n "checking for cthread_fork""... $ac_c" 1>&6
-echo "configure:16157: checking for cthread_fork" >&5
+echo "configure:16143: checking for cthread_fork" >&5
 if eval "test \"\${ac_cv_func_cthread_fork+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16162 "configure"
+#line 16148 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char cthread_fork(); below.  */
@@ -16182,7 +16168,7 @@ f = cthread_fork;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_cthread_fork=yes"
 else
@@ -16232,17 +16218,17 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16236: checking for $ac_hdr" >&5
+echo "configure:16222: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16241 "configure"
+#line 16227 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16232: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16271,7 +16257,7 @@ done
 
        if test $ac_cv_header_pth_h = yes ; then
                echo $ac_n "checking for pth_version in -lpth""... $ac_c" 1>&6
-echo "configure:16275: checking for pth_version in -lpth" >&5
+echo "configure:16261: checking for pth_version in -lpth" >&5
 ac_lib_var=`echo pth'_'pth_version | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -16279,7 +16265,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpth  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 16283 "configure"
+#line 16269 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -16290,7 +16276,7 @@ int main() {
 pth_version()
 ; return 0; }
 EOF
-if { (eval echo configure:16294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16280: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -16335,17 +16321,17 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16339: checking for $ac_hdr" >&5
+echo "configure:16325: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16344 "configure"
+#line 16330 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16349: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16335: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16373,7 +16359,7 @@ done
 
        if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then
                echo $ac_n "checking for thr_create in -lthread""... $ac_c" 1>&6
-echo "configure:16377: checking for thr_create in -lthread" >&5
+echo "configure:16363: checking for thr_create in -lthread" >&5
 ac_lib_var=`echo thread'_'thr_create | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -16381,7 +16367,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 16385 "configure"
+#line 16371 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -16392,7 +16378,7 @@ int main() {
 thr_create()
 ; return 0; }
 EOF
-if { (eval echo configure:16396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -16432,12 +16418,12 @@ EOF
                        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16436: checking for $ac_func" >&5
+echo "configure:16422: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16441 "configure"
+#line 16427 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -16461,7 +16447,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -16492,17 +16478,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16496: checking for $ac_hdr" >&5
+echo "configure:16482: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16501 "configure"
+#line 16487 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16506: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16530,7 +16516,7 @@ done
 
        if test $ac_cv_header_lwp_lwp_h = yes ; then
                echo $ac_n "checking for lwp_create in -llwp""... $ac_c" 1>&6
-echo "configure:16534: checking for lwp_create in -llwp" >&5
+echo "configure:16520: checking for lwp_create in -llwp" >&5
 ac_lib_var=`echo lwp'_'lwp_create | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -16538,7 +16524,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-llwp  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 16542 "configure"
+#line 16528 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -16549,7 +16535,7 @@ int main() {
 lwp_create()
 ; return 0; }
 EOF
-if { (eval echo configure:16553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -16602,17 +16588,17 @@ if test $ol_with_threads = manual ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16606: checking for $ac_hdr" >&5
+echo "configure:16592: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16611 "configure"
+#line 16597 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16641,12 +16627,12 @@ done
        for ac_func in sched_yield pthread_yield
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16645: checking for $ac_func" >&5
+echo "configure:16631: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16650 "configure"
+#line 16636 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -16670,7 +16656,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -16696,12 +16682,12 @@ done
 
        
        echo $ac_n "checking for LinuxThreads pthread.h""... $ac_c" 1>&6
-echo "configure:16700: checking for LinuxThreads pthread.h" >&5
+echo "configure:16686: checking for LinuxThreads pthread.h" >&5
 if eval "test \"\${ol_cv_header_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16705 "configure"
+#line 16691 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -16731,17 +16717,17 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16735: checking for $ac_hdr" >&5
+echo "configure:16721: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16740 "configure"
+#line 16726 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16745: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16731: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16771,17 +16757,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16775: checking for $ac_hdr" >&5
+echo "configure:16761: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16780 "configure"
+#line 16766 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16811,17 +16797,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16815: checking for $ac_hdr" >&5
+echo "configure:16801: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16820 "configure"
+#line 16806 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16880,20 +16866,20 @@ EOF
 
 
                        echo $ac_n "checking for thread specific errno""... $ac_c" 1>&6
-echo "configure:16884: checking for thread specific errno" >&5
+echo "configure:16870: checking for thread specific errno" >&5
 if eval "test \"\${ol_cv_errno_thread_specific+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 16890 "configure"
+#line 16876 "configure"
 #include "confdefs.h"
 #include <errno.h>
 int main() {
 errno = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:16897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_errno_thread_specific=yes
 else
 echo "$ac_t""$ol_cv_errno_thread_specific" 1>&6
 
                        echo $ac_n "checking for thread specific h_errno""... $ac_c" 1>&6
-echo "configure:16913: checking for thread specific h_errno" >&5
+echo "configure:16899: checking for thread specific h_errno" >&5
 if eval "test \"\${ol_cv_h_errno_thread_specific+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 16919 "configure"
+#line 16905 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 h_errno = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:16926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_h_errno_thread_specific=yes
 else
@@ -16980,17 +16966,17 @@ if test $ol_with_ldbm_api = auto \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16984: checking for $ac_hdr" >&5
+echo "configure:16970: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16989 "configure"
+#line 16975 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16994: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -17018,13 +17004,13 @@ done
 
 if test $ac_cv_header_db_185_h = yes -o $ac_cv_header_db_h = yes; then
        echo $ac_n "checking if Berkeley DB header compatibility""... $ac_c" 1>&6
-echo "configure:17022: checking if Berkeley DB header compatibility" >&5
+echo "configure:17008: checking if Berkeley DB header compatibility" >&5
 if eval "test \"\${ol_cv_header_db1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 17028 "configure"
+#line 17014 "configure"
 #include "confdefs.h"
 
 #if HAVE_DB_185_H
@@ -17061,7 +17047,7 @@ echo "$ac_t""$ol_cv_header_db1" 1>&6
                ol_cv_lib_db=no
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (default)""... $ac_c" 1>&6
-echo "configure:17065: checking for Berkeley DB link (default)" >&5
+echo "configure:17051: checking for Berkeley DB link (default)" >&5
 if eval "test \"\${ol_cv_db_none+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17071,7 +17057,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17075 "configure"
+#line 17061 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17118,7 +17104,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_none=yes
 else
@@ -17142,7 +17128,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb4)""... $ac_c" 1>&6
-echo "configure:17146: checking for Berkeley DB link (-ldb4)" >&5
+echo "configure:17132: checking for Berkeley DB link (-ldb4)" >&5
 if eval "test \"\${ol_cv_db_db4+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17152,7 +17138,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17156 "configure"
+#line 17142 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17199,7 +17185,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db4=yes
 else
@@ -17222,18 +17208,18 @@ echo "$ac_t""$ol_cv_db_db4" 1>&6
 fi
 
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6
-echo "configure:17227: checking for Berkeley DB link (-ldb)" >&5
-if eval "test \"\${ol_cv_db_db+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb-4)""... $ac_c" 1>&6
+echo "configure:17213: checking for Berkeley DB link (-ldb-4)" >&5
+if eval "test \"\${ol_cv_db_db_4+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb
+       ol_DB_LIB=-ldb-4
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17237 "configure"
+#line 17223 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17280,14 +17266,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db=yes
+  ol_cv_db_db_4=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db=no
+  ol_cv_db_db_4=no
 fi
 rm -f conftest*
 
@@ -17295,26 +17281,26 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db" 1>&6
+echo "$ac_t""$ol_cv_db_db_4" 1>&6
 
-       if test $ol_cv_db_db = yes ; then
-               ol_cv_lib_db=-ldb
+       if test $ol_cv_db_db_4 = yes ; then
+               ol_cv_lib_db=-ldb-4
        fi
 fi
 
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6
-echo "configure:17308: checking for Berkeley DB link (-ldb3)" >&5
-if eval "test \"\${ol_cv_db_db3+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6
+echo "configure:17294: checking for Berkeley DB link (-ldb)" >&5
+if eval "test \"\${ol_cv_db_db+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb3
+       ol_DB_LIB=-ldb
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17318 "configure"
+#line 17304 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17361,14 +17347,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db3=yes
+  ol_cv_db_db=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db3=no
+  ol_cv_db_db=no
 fi
 rm -f conftest*
 
@@ -17376,26 +17362,26 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db3" 1>&6
+echo "$ac_t""$ol_cv_db_db" 1>&6
 
-       if test $ol_cv_db_db3 = yes ; then
-               ol_cv_lib_db=-ldb3
+       if test $ol_cv_db_db = yes ; then
+               ol_cv_lib_db=-ldb
        fi
 fi
 
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6
-echo "configure:17389: checking for Berkeley DB link (-ldb2)" >&5
-if eval "test \"\${ol_cv_db_db2+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6
+echo "configure:17375: checking for Berkeley DB link (-ldb3)" >&5
+if eval "test \"\${ol_cv_db_db3+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb2
+       ol_DB_LIB=-ldb3
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17399 "configure"
+#line 17385 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17442,14 +17428,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db2=yes
+  ol_cv_db_db3=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db2=no
+  ol_cv_db_db3=no
 fi
 rm -f conftest*
 
@@ -17457,26 +17443,26 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db2" 1>&6
+echo "$ac_t""$ol_cv_db_db3" 1>&6
 
-       if test $ol_cv_db_db2 = yes ; then
-               ol_cv_lib_db=-ldb2
+       if test $ol_cv_db_db3 = yes ; then
+               ol_cv_lib_db=-ldb3
        fi
 fi
 
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6
-echo "configure:17470: checking for Berkeley DB link (-ldb1)" >&5
-if eval "test \"\${ol_cv_db_db1+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb-3)""... $ac_c" 1>&6
+echo "configure:17456: checking for Berkeley DB link (-ldb-3)" >&5
+if eval "test \"\${ol_cv_db_db_3+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb1
+       ol_DB_LIB=-ldb-3
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17480 "configure"
+#line 17466 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17523,14 +17509,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db1=yes
+  ol_cv_db_db_3=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db1=no
+  ol_cv_db_db_3=no
 fi
 rm -f conftest*
 
@@ -17538,77 +17524,26 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db1" 1>&6
-
-       if test $ol_cv_db_db1 = yes ; then
-               ol_cv_lib_db=-ldb1
-       fi
-fi
-
+echo "$ac_t""$ol_cv_db_db_3" 1>&6
 
-               if test "$ol_cv_lib_db" != no ; then
-                       ol_cv_berkeley_db=yes
-               fi
+       if test $ol_cv_db_db_3 = yes ; then
+               ol_cv_lib_db=-ldb-3
        fi
 fi
 
-       else
-               ol_cv_berkeley_db=no
-for ac_hdr in db.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:17562: checking for $ac_hdr" >&5
-if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 17567 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-if test $ac_cv_header_db_h = yes; then
-       ol_cv_lib_db=no
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (default)""... $ac_c" 1>&6
-echo "configure:17602: checking for Berkeley DB link (default)" >&5
-if eval "test \"\${ol_cv_db_none+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6
+echo "configure:17537: checking for Berkeley DB link (-ldb2)" >&5
+if eval "test \"\${ol_cv_db_db2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=
+       ol_DB_LIB=-ldb2
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17612 "configure"
+#line 17547 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17655,14 +17590,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_none=yes
+  ol_cv_db_db2=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_none=no
+  ol_cv_db_db2=no
 fi
 rm -f conftest*
 
@@ -17670,26 +17605,26 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_none" 1>&6
+echo "$ac_t""$ol_cv_db_db2" 1>&6
 
-       if test $ol_cv_db_none = yes ; then
-               ol_cv_lib_db=yes
+       if test $ol_cv_db_db2 = yes ; then
+               ol_cv_lib_db=-ldb2
        fi
 fi
 
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb4)""... $ac_c" 1>&6
-echo "configure:17683: checking for Berkeley DB link (-ldb4)" >&5
-if eval "test \"\${ol_cv_db_db4+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb-2)""... $ac_c" 1>&6
+echo "configure:17618: checking for Berkeley DB link (-ldb-2)" >&5
+if eval "test \"\${ol_cv_db_db_2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb4
+       ol_DB_LIB=-ldb-2
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17693 "configure"
+#line 17628 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17736,14 +17671,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db4=yes
+  ol_cv_db_db_2=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db4=no
+  ol_cv_db_db_2=no
 fi
 rm -f conftest*
 
@@ -17751,26 +17686,26 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db4" 1>&6
+echo "$ac_t""$ol_cv_db_db_2" 1>&6
 
-       if test $ol_cv_db_db4 = yes ; then
-               ol_cv_lib_db=-ldb4
+       if test $ol_cv_db_db_2 = yes ; then
+               ol_cv_lib_db=-ldb-2
        fi
 fi
 
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6
-echo "configure:17764: checking for Berkeley DB link (-ldb)" >&5
-if eval "test \"\${ol_cv_db_db+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6
+echo "configure:17699: checking for Berkeley DB link (-ldb1)" >&5
+if eval "test \"\${ol_cv_db_db1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb
+       ol_DB_LIB=-ldb1
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17774 "configure"
+#line 17709 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17817,14 +17752,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db=yes
+  ol_cv_db_db1=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db=no
+  ol_cv_db_db1=no
 fi
 rm -f conftest*
 
@@ -17832,26 +17767,26 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db" 1>&6
+echo "$ac_t""$ol_cv_db_db1" 1>&6
 
-       if test $ol_cv_db_db = yes ; then
-               ol_cv_lib_db=-ldb
+       if test $ol_cv_db_db1 = yes ; then
+               ol_cv_lib_db=-ldb1
        fi
 fi
 
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6
-echo "configure:17845: checking for Berkeley DB link (-ldb3)" >&5
-if eval "test \"\${ol_cv_db_db3+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb-1)""... $ac_c" 1>&6
+echo "configure:17780: checking for Berkeley DB link (-ldb-1)" >&5
+if eval "test \"\${ol_cv_db_db_1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb3
+       ol_DB_LIB=-ldb-1
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17855 "configure"
+#line 17790 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17898,14 +17833,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db3=yes
+  ol_cv_db_db_1=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db3=no
+  ol_cv_db_db_1=no
 fi
 rm -f conftest*
 
@@ -17913,26 +17848,77 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db3" 1>&6
+echo "$ac_t""$ol_cv_db_db_1" 1>&6
 
-       if test $ol_cv_db_db3 = yes ; then
-               ol_cv_lib_db=-ldb3
+       if test $ol_cv_db_db_1 = yes ; then
+               ol_cv_lib_db=-ldb-1
+       fi
+fi
+
+
+               if test "$ol_cv_lib_db" != no ; then
+                       ol_cv_berkeley_db=yes
+               fi
        fi
 fi
 
+       else
+               ol_cv_berkeley_db=no
+for ac_hdr in db.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:17872: checking for $ac_hdr" >&5
+if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 17877 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:17882: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+if test $ac_cv_header_db_h = yes; then
+       ol_cv_lib_db=no
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6
-echo "configure:17926: checking for Berkeley DB link (-ldb2)" >&5
-if eval "test \"\${ol_cv_db_db2+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (default)""... $ac_c" 1>&6
+echo "configure:17912: checking for Berkeley DB link (default)" >&5
+if eval "test \"\${ol_cv_db_none+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb2
+       ol_DB_LIB=
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17936 "configure"
+#line 17922 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17979,14 +17965,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db2=yes
+  ol_cv_db_none=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db2=no
+  ol_cv_db_none=no
 fi
 rm -f conftest*
 
@@ -17994,26 +17980,26 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db2" 1>&6
+echo "$ac_t""$ol_cv_db_none" 1>&6
 
-       if test $ol_cv_db_db2 = yes ; then
-               ol_cv_lib_db=-ldb2
+       if test $ol_cv_db_none = yes ; then
+               ol_cv_lib_db=yes
        fi
 fi
 
 if test $ol_cv_lib_db = no ; then
-       echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6
-echo "configure:18007: checking for Berkeley DB link (-ldb1)" >&5
-if eval "test \"\${ol_cv_db_db1+set}\" = set"; then
+       echo $ac_n "checking for Berkeley DB link (-ldb4)""... $ac_c" 1>&6
+echo "configure:17993: checking for Berkeley DB link (-ldb4)" >&5
+if eval "test \"\${ol_cv_db_db4+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_DB_LIB=-ldb1
+       ol_DB_LIB=-ldb4
        ol_LIBS=$LIBS
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18017 "configure"
+#line 18003 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18060,14 +18046,14 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  ol_cv_db_db1=yes
+  ol_cv_db_db4=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ol_cv_db_db1=no
+  ol_cv_db_db4=no
 fi
 rm -f conftest*
 
@@ -18075,32 +18061,680 @@ rm -f conftest*
 
 fi
 
-echo "$ac_t""$ol_cv_db_db1" 1>&6
+echo "$ac_t""$ol_cv_db_db4" 1>&6
 
-       if test $ol_cv_db_db1 = yes ; then
-               ol_cv_lib_db=-ldb1
+       if test $ol_cv_db_db4 = yes ; then
+               ol_cv_lib_db=-ldb4
        fi
 fi
 
-
-       if test "$ol_cv_lib_db" != no ; then
-               ol_cv_berkeley_db=yes
-               echo $ac_n "checking for Berkeley DB thread support""... $ac_c" 1>&6
-echo "configure:18090: checking for Berkeley DB thread support" >&5
-if eval "test \"\${ol_cv_berkeley_db_thread+set}\" = set"; then
+if test $ol_cv_lib_db = no ; then
+       echo $ac_n "checking for Berkeley DB link (-ldb-4)""... $ac_c" 1>&6
+echo "configure:18074: checking for Berkeley DB link (-ldb-4)" >&5
+if eval "test \"\${ol_cv_db_db_4+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
-       ol_LIBS="$LIBS"
-       if test $ol_cv_lib_db != yes ; then
-               LIBS="$ol_cv_lib_db"
-       fi
+       ol_DB_LIB=-ldb-4
+       ol_LIBS=$LIBS
+       LIBS="$ol_DB_LIB $LIBS"
 
-       if test "$cross_compiling" = yes; then
-  ol_cv_berkeley_db_thread=cross
-else
-  cat > conftest.$ac_ext <<EOF
-#line 18104 "configure"
+       cat > conftest.$ac_ext <<EOF
+#line 18084 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_DB_185_H
+# include <db_185.h>
+#else
+# include <db.h>
+#endif
+
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+int main() {
+
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
+#if DB_VERSION_MAJOR > 2
+       db_env_create( NULL, 0 );
+#elif DB_VERSION_MAJOR > 1
+       db_appexit( NULL );
+#else
+       (void) dbopen( NULL, 0, 0, 0, NULL);
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:18131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ol_cv_db_db_4=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_db_db_4=no
+fi
+rm -f conftest*
+
+       LIBS="$ol_LIBS"
+
+fi
+
+echo "$ac_t""$ol_cv_db_db_4" 1>&6
+
+       if test $ol_cv_db_db_4 = yes ; then
+               ol_cv_lib_db=-ldb-4
+       fi
+fi
+
+if test $ol_cv_lib_db = no ; then
+       echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6
+echo "configure:18155: checking for Berkeley DB link (-ldb)" >&5
+if eval "test \"\${ol_cv_db_db+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       ol_DB_LIB=-ldb
+       ol_LIBS=$LIBS
+       LIBS="$ol_DB_LIB $LIBS"
+
+       cat > conftest.$ac_ext <<EOF
+#line 18165 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_DB_185_H
+# include <db_185.h>
+#else
+# include <db.h>
+#endif
+
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+int main() {
+
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
+#if DB_VERSION_MAJOR > 2
+       db_env_create( NULL, 0 );
+#elif DB_VERSION_MAJOR > 1
+       db_appexit( NULL );
+#else
+       (void) dbopen( NULL, 0, 0, 0, NULL);
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:18212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ol_cv_db_db=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_db_db=no
+fi
+rm -f conftest*
+
+       LIBS="$ol_LIBS"
+
+fi
+
+echo "$ac_t""$ol_cv_db_db" 1>&6
+
+       if test $ol_cv_db_db = yes ; then
+               ol_cv_lib_db=-ldb
+       fi
+fi
+
+if test $ol_cv_lib_db = no ; then
+       echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6
+echo "configure:18236: checking for Berkeley DB link (-ldb3)" >&5
+if eval "test \"\${ol_cv_db_db3+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       ol_DB_LIB=-ldb3
+       ol_LIBS=$LIBS
+       LIBS="$ol_DB_LIB $LIBS"
+
+       cat > conftest.$ac_ext <<EOF
+#line 18246 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_DB_185_H
+# include <db_185.h>
+#else
+# include <db.h>
+#endif
+
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+int main() {
+
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
+#if DB_VERSION_MAJOR > 2
+       db_env_create( NULL, 0 );
+#elif DB_VERSION_MAJOR > 1
+       db_appexit( NULL );
+#else
+       (void) dbopen( NULL, 0, 0, 0, NULL);
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:18293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ol_cv_db_db3=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_db_db3=no
+fi
+rm -f conftest*
+
+       LIBS="$ol_LIBS"
+
+fi
+
+echo "$ac_t""$ol_cv_db_db3" 1>&6
+
+       if test $ol_cv_db_db3 = yes ; then
+               ol_cv_lib_db=-ldb3
+       fi
+fi
+
+if test $ol_cv_lib_db = no ; then
+       echo $ac_n "checking for Berkeley DB link (-ldb-3)""... $ac_c" 1>&6
+echo "configure:18317: checking for Berkeley DB link (-ldb-3)" >&5
+if eval "test \"\${ol_cv_db_db_3+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       ol_DB_LIB=-ldb-3
+       ol_LIBS=$LIBS
+       LIBS="$ol_DB_LIB $LIBS"
+
+       cat > conftest.$ac_ext <<EOF
+#line 18327 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_DB_185_H
+# include <db_185.h>
+#else
+# include <db.h>
+#endif
+
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+int main() {
+
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
+#if DB_VERSION_MAJOR > 2
+       db_env_create( NULL, 0 );
+#elif DB_VERSION_MAJOR > 1
+       db_appexit( NULL );
+#else
+       (void) dbopen( NULL, 0, 0, 0, NULL);
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:18374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ol_cv_db_db_3=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_db_db_3=no
+fi
+rm -f conftest*
+
+       LIBS="$ol_LIBS"
+
+fi
+
+echo "$ac_t""$ol_cv_db_db_3" 1>&6
+
+       if test $ol_cv_db_db_3 = yes ; then
+               ol_cv_lib_db=-ldb-3
+       fi
+fi
+
+if test $ol_cv_lib_db = no ; then
+       echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6
+echo "configure:18398: checking for Berkeley DB link (-ldb2)" >&5
+if eval "test \"\${ol_cv_db_db2+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       ol_DB_LIB=-ldb2
+       ol_LIBS=$LIBS
+       LIBS="$ol_DB_LIB $LIBS"
+
+       cat > conftest.$ac_ext <<EOF
+#line 18408 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_DB_185_H
+# include <db_185.h>
+#else
+# include <db.h>
+#endif
+
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+int main() {
+
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
+#if DB_VERSION_MAJOR > 2
+       db_env_create( NULL, 0 );
+#elif DB_VERSION_MAJOR > 1
+       db_appexit( NULL );
+#else
+       (void) dbopen( NULL, 0, 0, 0, NULL);
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:18455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ol_cv_db_db2=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_db_db2=no
+fi
+rm -f conftest*
+
+       LIBS="$ol_LIBS"
+
+fi
+
+echo "$ac_t""$ol_cv_db_db2" 1>&6
+
+       if test $ol_cv_db_db2 = yes ; then
+               ol_cv_lib_db=-ldb2
+       fi
+fi
+
+if test $ol_cv_lib_db = no ; then
+       echo $ac_n "checking for Berkeley DB link (-ldb-2)""... $ac_c" 1>&6
+echo "configure:18479: checking for Berkeley DB link (-ldb-2)" >&5
+if eval "test \"\${ol_cv_db_db_2+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       ol_DB_LIB=-ldb-2
+       ol_LIBS=$LIBS
+       LIBS="$ol_DB_LIB $LIBS"
+
+       cat > conftest.$ac_ext <<EOF
+#line 18489 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_DB_185_H
+# include <db_185.h>
+#else
+# include <db.h>
+#endif
+
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+int main() {
+
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
+#if DB_VERSION_MAJOR > 2
+       db_env_create( NULL, 0 );
+#elif DB_VERSION_MAJOR > 1
+       db_appexit( NULL );
+#else
+       (void) dbopen( NULL, 0, 0, 0, NULL);
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:18536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ol_cv_db_db_2=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_db_db_2=no
+fi
+rm -f conftest*
+
+       LIBS="$ol_LIBS"
+
+fi
+
+echo "$ac_t""$ol_cv_db_db_2" 1>&6
+
+       if test $ol_cv_db_db_2 = yes ; then
+               ol_cv_lib_db=-ldb-2
+       fi
+fi
+
+if test $ol_cv_lib_db = no ; then
+       echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6
+echo "configure:18560: checking for Berkeley DB link (-ldb1)" >&5
+if eval "test \"\${ol_cv_db_db1+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       ol_DB_LIB=-ldb1
+       ol_LIBS=$LIBS
+       LIBS="$ol_DB_LIB $LIBS"
+
+       cat > conftest.$ac_ext <<EOF
+#line 18570 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_DB_185_H
+# include <db_185.h>
+#else
+# include <db.h>
+#endif
+
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+int main() {
+
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
+#if DB_VERSION_MAJOR > 2
+       db_env_create( NULL, 0 );
+#elif DB_VERSION_MAJOR > 1
+       db_appexit( NULL );
+#else
+       (void) dbopen( NULL, 0, 0, 0, NULL);
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:18617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ol_cv_db_db1=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_db_db1=no
+fi
+rm -f conftest*
+
+       LIBS="$ol_LIBS"
+
+fi
+
+echo "$ac_t""$ol_cv_db_db1" 1>&6
+
+       if test $ol_cv_db_db1 = yes ; then
+               ol_cv_lib_db=-ldb1
+       fi
+fi
+
+if test $ol_cv_lib_db = no ; then
+       echo $ac_n "checking for Berkeley DB link (-ldb-1)""... $ac_c" 1>&6
+echo "configure:18641: checking for Berkeley DB link (-ldb-1)" >&5
+if eval "test \"\${ol_cv_db_db_1+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       ol_DB_LIB=-ldb-1
+       ol_LIBS=$LIBS
+       LIBS="$ol_DB_LIB $LIBS"
+
+       cat > conftest.$ac_ext <<EOF
+#line 18651 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_DB_185_H
+# include <db_185.h>
+#else
+# include <db.h>
+#endif
+
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+
+#ifndef NULL
+#define NULL ((void*)0)
+#endif
+
+int main() {
+
+#if DB_VERSION_MAJOR > 1
+       {
+               char *version;
+               int major, minor, patch;
+
+               version = db_version( &major, &minor, &patch );
+
+               if( major != DB_VERSION_MAJOR ||
+                       minor < DB_VERSION_MINOR )
+               {
+                       printf("Berkeley DB version mismatch\n"
+                               "\texpected: %s\n\tgot: %s\n",
+                               DB_VERSION_STRING, version);
+                       return 1;
+               }
+       }
+#endif
+
+#if DB_VERSION_MAJOR > 2
+       db_env_create( NULL, 0 );
+#elif DB_VERSION_MAJOR > 1
+       db_appexit( NULL );
+#else
+       (void) dbopen( NULL, 0, 0, 0, NULL);
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:18698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ol_cv_db_db_1=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_db_db_1=no
+fi
+rm -f conftest*
+
+       LIBS="$ol_LIBS"
+
+fi
+
+echo "$ac_t""$ol_cv_db_db_1" 1>&6
+
+       if test $ol_cv_db_db_1 = yes ; then
+               ol_cv_lib_db=-ldb-1
+       fi
+fi
+
+
+       if test "$ol_cv_lib_db" != no ; then
+               ol_cv_berkeley_db=yes
+               echo $ac_n "checking for Berkeley DB thread support""... $ac_c" 1>&6
+echo "configure:18724: checking for Berkeley DB thread support" >&5
+if eval "test \"\${ol_cv_berkeley_db_thread+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       ol_LIBS="$LIBS"
+       if test $ol_cv_lib_db != yes ; then
+               LIBS="$ol_cv_lib_db"
+       fi
+
+       if test "$cross_compiling" = yes; then
+  ol_cv_berkeley_db_thread=cross
+else
+  cat > conftest.$ac_ext <<EOF
+#line 18738 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18167,7 +18801,7 @@ main()
        return rc;
 }
 EOF
-if { (eval echo configure:18171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:18805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_berkeley_db_thread=yes
 else
@@ -18228,13 +18862,13 @@ if test $ol_enable_bdb = yes -a $ol_link_ldbm != berkeley ; then
        { echo "configure: error: BDB: BerkeleyDB not available" 1>&2; exit 1; }
 elif test $ol_enable_bdb != no -a $ol_link_ldbm = berkeley ; then
        echo $ac_n "checking Berkeley DB version for BDB backend""... $ac_c" 1>&6
-echo "configure:18232: checking Berkeley DB version for BDB backend" >&5
+echo "configure:18866: checking Berkeley DB version for BDB backend" >&5
 if eval "test \"\${ol_cv_bdb_compat+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 18238 "configure"
+#line 18872 "configure"
 #include "confdefs.h"
 
 #include <db.h>
 
 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = mdbm ; then
        echo $ac_n "checking for MDBM library""... $ac_c" 1>&6
-echo "configure:18285: checking for MDBM library" >&5
+echo "configure:18919: checking for MDBM library" >&5
 if eval "test \"\${ol_cv_lib_mdbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
        ol_LIBS="$LIBS"
        echo $ac_n "checking for mdbm_set_chain""... $ac_c" 1>&6
-echo "configure:18291: checking for mdbm_set_chain" >&5
+echo "configure:18925: checking for mdbm_set_chain" >&5
 if eval "test \"\${ac_cv_func_mdbm_set_chain+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 18296 "configure"
+#line 18930 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char mdbm_set_chain(); below.  */
@@ -18316,7 +18950,7 @@ f = mdbm_set_chain;
 
 ; return 0; }
 EOF
-if { (eval echo configure:18320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_mdbm_set_chain=yes"
 else
@@ -18335,7 +18969,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for mdbm_set_chain in -lmdbm""... $ac_c" 1>&6
-echo "configure:18339: checking for mdbm_set_chain in -lmdbm" >&5
+echo "configure:18973: checking for mdbm_set_chain in -lmdbm" >&5
 ac_lib_var=`echo mdbm'_'mdbm_set_chain | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -18343,7 +18977,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmdbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 18347 "configure"
+#line 18981 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -18354,7 +18988,7 @@ int main() {
 mdbm_set_chain()
 ; return 0; }
 EOF
-if { (eval echo configure:18358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -18389,17 +19023,17 @@ echo "$ac_t""$ol_cv_lib_mdbm" 1>&6
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:18393: checking for $ac_hdr" >&5
+echo "configure:19027: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 18398 "configure"
+#line 19032 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:18403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -18426,7 +19060,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:18430: checking for db" >&5
+echo "configure:19064: checking for db" >&5
 if eval "test \"\${ol_cv_mdbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
 
 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
        echo $ac_n "checking for GDBM library""... $ac_c" 1>&6
-echo "configure:18463: checking for GDBM library" >&5
+echo "configure:19097: checking for GDBM library" >&5
 if eval "test \"\${ol_cv_lib_gdbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
        ol_LIBS="$LIBS"
        echo $ac_n "checking for gdbm_open""... $ac_c" 1>&6
-echo "configure:18469: checking for gdbm_open" >&5
+echo "configure:19103: checking for gdbm_open" >&5
 if eval "test \"\${ac_cv_func_gdbm_open+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 18474 "configure"
+#line 19108 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gdbm_open(); below.  */
@@ -18494,7 +19128,7 @@ f = gdbm_open;
 
 ; return 0; }
 EOF
-if { (eval echo configure:18498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gdbm_open=yes"
 else
@@ -18513,7 +19147,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for gdbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:18517: checking for gdbm_open in -lgdbm" >&5
+echo "configure:19151: checking for gdbm_open in -lgdbm" >&5
 ac_lib_var=`echo gdbm'_'gdbm_open | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -18521,7 +19155,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgdbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 18525 "configure"
+#line 19159 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -18532,7 +19166,7 @@ int main() {
 gdbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:18536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -18567,17 +19201,17 @@ echo "$ac_t""$ol_cv_lib_gdbm" 1>&6
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:18571: checking for $ac_hdr" >&5
+echo "configure:19205: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 18576 "configure"
+#line 19210 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:18581: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19215: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -18604,7 +19238,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:18608: checking for db" >&5
+echo "configure:19242: checking for db" >&5
 if eval "test \"\${ol_cv_gdbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
 
 if test $ol_with_ldbm_api = ndbm ; then
        echo $ac_n "checking for NDBM library""... $ac_c" 1>&6
-echo "configure:18642: checking for NDBM library" >&5
+echo "configure:19276: checking for NDBM library" >&5
 if eval "test \"\${ol_cv_lib_ndbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
        ol_LIBS="$LIBS"
        echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:18648: checking for dbm_open" >&5
+echo "configure:19282: checking for dbm_open" >&5
 if eval "test \"\${ac_cv_func_dbm_open+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 18653 "configure"
+#line 19287 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -18673,7 +19307,7 @@ f = dbm_open;
 
 ; return 0; }
 EOF
-if { (eval echo configure:18677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -18692,7 +19326,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for dbm_open in -lndbm""... $ac_c" 1>&6
-echo "configure:18696: checking for dbm_open in -lndbm" >&5
+echo "configure:19330: checking for dbm_open in -lndbm" >&5
 ac_lib_var=`echo ndbm'_'dbm_open | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -18700,7 +19334,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lndbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 18704 "configure"
+#line 19338 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -18711,7 +19345,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:18715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -18731,7 +19365,7 @@ else
   echo "$ac_t""no" 1>&6
 
                        echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:18735: checking for dbm_open in -ldbm" >&5
+echo "configure:19369: checking for dbm_open in -ldbm" >&5
 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -18739,7 +19373,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 18743 "configure"
+#line 19377 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -18750,7 +19384,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:18754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -18787,17 +19421,17 @@ echo "$ac_t""$ol_cv_lib_ndbm" 1>&6
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:18791: checking for $ac_hdr" >&5
+echo "configure:19425: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 18796 "configure"
+#line 19430 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:18801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -18824,7 +19458,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:18828: checking for db" >&5
+echo "configure:19462: checking for db" >&5
 if eval "test \"\${ol_cv_ndbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18881,17 +19515,17 @@ if test $ol_enable_wrappers != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:18885: checking for $ac_hdr" >&5
+echo "configure:19519: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 18890 "configure"
+#line 19524 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:18895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -18913,11 +19547,11 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
 EOF
  
                echo $ac_n "checking for TCP wrappers library""... $ac_c" 1>&6
-echo "configure:18917: checking for TCP wrappers library" >&5
+echo "configure:19551: checking for TCP wrappers library" >&5
                save_LIBS="$LIBS"
                LIBS="$LIBS -lwrap"
                cat > conftest.$ac_ext <<EOF
-#line 18921 "configure"
+#line 19555 "configure"
 #include "confdefs.h"
 
 #include <tcpd.h>
@@ -18932,7 +19566,7 @@ hosts_access(req)
                
 ; return 0; }
 EOF
-if { (eval echo configure:18936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""-lwrap" 1>&6
                have_wrappers=yes
@@ -18944,7 +19578,7 @@ else
   
                                LIBS="$LIBS -lnsl"
                cat > conftest.$ac_ext <<EOF
-#line 18948 "configure"
+#line 19582 "configure"
 #include "confdefs.h"
 
 #include <tcpd.h>
@@ -18959,7 +19593,7 @@ hosts_access(req)
                
 ; return 0; }
 EOF
-if { (eval echo configure:18963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""-lwrap -lnsl" 1>&6
                have_wrappers=yes
 
 if test $ol_enable_syslog != no ; then
        echo $ac_n "checking for openlog""... $ac_c" 1>&6
-echo "configure:19003: checking for openlog" >&5
+echo "configure:19637: checking for openlog" >&5
 if eval "test \"\${ac_cv_func_openlog+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19008 "configure"
+#line 19642 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char openlog(); below.  */
@@ -19028,7 +19662,7 @@ f = openlog;
 
 ; return 0; }
 EOF
-if { (eval echo configure:19032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_openlog=yes"
 else
@@ -19057,7 +19691,7 @@ fi
 ol_link_sql=no
 if test $ol_enable_sql != no ; then
        echo $ac_n "checking for SQLDriverConnect in -liodbc""... $ac_c" 1>&6
-echo "configure:19061: checking for SQLDriverConnect in -liodbc" >&5
+echo "configure:19695: checking for SQLDriverConnect in -liodbc" >&5
 ac_lib_var=`echo iodbc'_'SQLDriverConnect | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19065,7 +19699,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-liodbc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19069 "configure"
+#line 19703 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19076,7 +19710,7 @@ int main() {
 SQLDriverConnect()
 ; return 0; }
 EOF
-if { (eval echo configure:19080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19101,7 +19735,7 @@ fi
                ol_link_sql="-liodbc"
        else
                echo $ac_n "checking for SQLDriverConnect in -lodbc""... $ac_c" 1>&6
-echo "configure:19105: checking for SQLDriverConnect in -lodbc" >&5
+echo "configure:19739: checking for SQLDriverConnect in -lodbc" >&5
 ac_lib_var=`echo odbc'_'SQLDriverConnect | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19109,7 +19743,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lodbc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19113 "configure"
+#line 19747 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19120,7 +19754,7 @@ int main() {
 SQLDriverConnect()
 ; return 0; }
 EOF
-if { (eval echo configure:19124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19159,17 +19793,17 @@ for ac_hdr in termcap.h ncurses.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19163: checking for $ac_hdr" >&5
+echo "configure:19797: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19168 "configure"
+#line 19802 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19173: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19807: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19198,7 +19832,7 @@ done
 
 if test $ol_link_termcap = no ; then
        echo $ac_n "checking for tputs in -ltermcap""... $ac_c" 1>&6
-echo "configure:19202: checking for tputs in -ltermcap" >&5
+echo "configure:19836: checking for tputs in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tputs | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19206,7 +19840,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ltermcap  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19210 "configure"
+#line 19844 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19217,7 +19851,7 @@ int main() {
 tputs()
 ; return 0; }
 EOF
-if { (eval echo configure:19221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19250,7 +19884,7 @@ fi
 
 if test $ol_link_termcap = no ; then
        echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6
-echo "configure:19254: checking for initscr in -lncurses" >&5
+echo "configure:19888: checking for initscr in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19258,7 +19892,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19262 "configure"
+#line 19896 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19269,7 +19903,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:19273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19315,17 +19949,17 @@ if test $ol_with_cyrus_sasl != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19319: checking for $ac_hdr" >&5
+echo "configure:19953: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19324 "configure"
+#line 19958 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19963: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19354,7 +19988,7 @@ done
 
        if test $ac_cv_header_sasl_sasl_h = yes -o $ac_cv_header_sasl_h = yes; then
                echo $ac_n "checking for sasl_client_init in -lsasl2""... $ac_c" 1>&6
-echo "configure:19358: checking for sasl_client_init in -lsasl2" >&5
+echo "configure:19992: checking for sasl_client_init in -lsasl2" >&5
 ac_lib_var=`echo sasl2'_'sasl_client_init | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19362,7 +19996,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsasl2  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19366 "configure"
+#line 20000 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19373,7 +20007,7 @@ int main() {
 sasl_client_init()
 ; return 0; }
 EOF
-if { (eval echo configure:19377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19392,7 +20026,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for sasl_client_init in -lsasl""... $ac_c" 1>&6
-echo "configure:19396: checking for sasl_client_init in -lsasl" >&5
+echo "configure:20030: checking for sasl_client_init in -lsasl" >&5
 ac_lib_var=`echo sasl'_'sasl_client_init | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19400,7 +20034,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsasl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19404 "configure"
+#line 20038 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19411,7 +20045,7 @@ int main() {
 sasl_client_init()
 ; return 0; }
 EOF
-if { (eval echo configure:19415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
                fi
        else
                echo $ac_n "checking Cyrus SASL library version""... $ac_c" 1>&6
-echo "configure:19451: checking Cyrus SASL library version" >&5
+echo "configure:20085: checking Cyrus SASL library version" >&5
 if eval "test \"\${ol_cv_sasl_compat+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 19457 "configure"
+#line 20091 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SASL_SASL_H
@@ -19536,13 +20170,13 @@ if test $ol_with_fetch != no ; then
        ol_LIBS=$LIBS
 LIBS="-lfetch -lcom_err $LIBS"
 echo $ac_n "checking fetch(3) library""... $ac_c" 1>&6
-echo "configure:19540: checking fetch(3) library" >&5
+echo "configure:20174: checking fetch(3) library" >&5
 if eval "test \"\${ol_cv_lib_fetch+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 19546 "configure"
+#line 20180 "configure"
 #include "confdefs.h"
 
 #include <sys/param.h>
@@ -19552,7 +20186,7 @@ int main() {
 struct url *u = fetchParseURL("file:///"); 
 ; return 0; }
 EOF
-if { (eval echo configure:19556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_lib_fetch=yes
 else
@@ -19590,17 +20224,17 @@ if test $ol_with_readline != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19594: checking for $ac_hdr" >&5
+echo "configure:20228: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19599 "configure"
+#line 20233 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20238: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19631,7 +20265,7 @@ done
                save_LIBS="$LIBS"
                LIBS="$TERMCAP_LIBS $LIBS"
                echo $ac_n "checking for readline in -lreadline""... $ac_c" 1>&6
-echo "configure:19635: checking for readline in -lreadline" >&5
+echo "configure:20269: checking for readline in -lreadline" >&5
 ac_lib_var=`echo readline'_'readline | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19639,7 +20273,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lreadline  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19643 "configure"
+#line 20277 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19650,7 +20284,7 @@ int main() {
 readline()
 ; return 0; }
 EOF
-if { (eval echo configure:19654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test $ol_enable_crypt != no ; then
        echo $ac_n "checking for crypt""... $ac_c" 1>&6
-echo "configure:19696: checking for crypt" >&5
+echo "configure:20330: checking for crypt" >&5
 if eval "test \"\${ac_cv_func_crypt+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19701 "configure"
+#line 20335 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char crypt(); below.  */
@@ -19721,7 +20355,7 @@ f = crypt;
 
 ; return 0; }
 EOF
-if { (eval echo configure:19725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_crypt=yes"
 else
@@ -19740,7 +20374,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:19744: checking for crypt in -lcrypt" >&5
+echo "configure:20378: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19748,7 +20382,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19752 "configure"
+#line 20386 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19759,7 +20393,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:19763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test $ol_enable_proctitle != no ; then
        echo $ac_n "checking for setproctitle""... $ac_c" 1>&6
-echo "configure:19806: checking for setproctitle" >&5
+echo "configure:20440: checking for setproctitle" >&5
 if eval "test \"\${ac_cv_func_setproctitle+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19811 "configure"
+#line 20445 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char setproctitle(); below.  */
@@ -19831,7 +20465,7 @@ f = setproctitle;
 
 ; return 0; }
 EOF
-if { (eval echo configure:19835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_setproctitle=yes"
 else
@@ -19850,7 +20484,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for setproctitle in -lutil""... $ac_c" 1>&6
-echo "configure:19854: checking for setproctitle in -lutil" >&5
+echo "configure:20488: checking for setproctitle in -lutil" >&5
 ac_lib_var=`echo util'_'setproctitle | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19858,7 +20492,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lutil  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19862 "configure"
+#line 20496 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19869,7 +20503,7 @@ int main() {
 setproctitle()
 ; return 0; }
 EOF
-if { (eval echo configure:19873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19909,17 +20543,17 @@ if test $ol_enable_slp != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19913: checking for $ac_hdr" >&5
+echo "configure:20547: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19918 "configure"
+#line 20552 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19948,7 +20582,7 @@ done
 
        if test $ac_cv_header_slp_h = yes ; then
                echo $ac_n "checking for SLPOpen in -lslp""... $ac_c" 1>&6
-echo "configure:19952: checking for SLPOpen in -lslp" >&5
+echo "configure:20586: checking for SLPOpen in -lslp" >&5
 ac_lib_var=`echo slp'_'SLPOpen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19956,7 +20590,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lslp  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19960 "configure"
+#line 20594 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19967,7 +20601,7 @@ int main() {
 SLPOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:19971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -20002,12 +20636,12 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:20006: checking for ANSI C header files" >&5
+echo "configure:20640: checking for ANSI C header files" >&5
 if eval "test \"\${ac_cv_header_stdc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20011 "configure"
+#line 20645 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -20015,7 +20649,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20653: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -20032,7 +20666,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 20036 "configure"
+#line 20670 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -20050,7 +20684,7 @@ 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 <<EOF
-#line 20054 "configure"
+#line 20688 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -20071,7 +20705,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 20075 "configure"
+#line 20709 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #if ((' ' & 0x0FF) == 0x020)
@@ -20089,7 +20723,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:20093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:20727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -20113,12 +20747,12 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:20117: checking for mode_t" >&5
+echo "configure:20751: checking for mode_t" >&5
 if eval "test \"\${ac_cv_type_mode_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20122 "configure"
+#line 20756 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -20149,12 +20783,12 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:20153: checking for off_t" >&5
+echo "configure:20787: checking for off_t" >&5
 if eval "test \"\${ac_cv_type_off_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20158 "configure"
+#line 20792 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -20185,12 +20819,12 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:20189: checking for pid_t" >&5
+echo "configure:20823: checking for pid_t" >&5
 if eval "test \"\${ac_cv_type_pid_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20194 "configure"
+#line 20828 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -20221,19 +20855,19 @@ EOF
 fi
 
 echo $ac_n "checking for ptrdiff_t""... $ac_c" 1>&6
-echo "configure:20225: checking for ptrdiff_t" >&5
+echo "configure:20859: checking for ptrdiff_t" >&5
 if eval "test \"\${am_cv_type_ptrdiff_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20230 "configure"
+#line 20864 "configure"
 #include "confdefs.h"
 #include <stddef.h>
 int main() {
 ptrdiff_t p
 ; return 0; }
 EOF
-if { (eval echo configure:20237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_type_ptrdiff_t=yes
 else
@@ -20254,12 +20888,12 @@ EOF
    fi
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:20258: checking return type of signal handlers" >&5
+echo "configure:20892: checking return type of signal handlers" >&5
 if eval "test \"\${ac_cv_type_signal+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20263 "configure"
+#line 20897 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -20276,7 +20910,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:20280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -20295,12 +20929,12 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:20299: checking for size_t" >&5
+echo "configure:20933: checking for size_t" >&5
 if eval "test \"\${ac_cv_type_size_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20304 "configure"
+#line 20938 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
 
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:20336: checking for ssize_t" >&5
+echo "configure:20970: checking for ssize_t" >&5
 if eval "test \"\${ac_cv_type_ssize_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20341 "configure"
+#line 20975 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -20368,12 +21002,12 @@ EOF
 fi
 
 echo $ac_n "checking for caddr_t""... $ac_c" 1>&6
-echo "configure:20372: checking for caddr_t" >&5
+echo "configure:21006: checking for caddr_t" >&5
 if eval "test \"\${ac_cv_type_caddr_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20377 "configure"
+#line 21011 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
 
 
 echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:20409: checking for socklen_t" >&5
+echo "configure:21043: checking for socklen_t" >&5
 if eval "test \"\${ol_cv_type_socklen_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20414 "configure"
+#line 21048 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -20424,7 +21058,7 @@ int main() {
 socklen_t len;
 ; return 0; }
 EOF
-if { (eval echo configure:20428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_type_socklen_t=yes
 else
@@ -20445,12 +21079,12 @@ EOF
   fi
  
 echo $ac_n "checking for member st_blksize in aggregate type struct stat""... $ac_c" 1>&6
-echo "configure:20449: checking for member st_blksize in aggregate type struct stat" >&5
+echo "configure:21083: checking for member st_blksize in aggregate type struct stat" >&5
 if eval "test \"\${ac_cv_c_struct_member_st_blksize+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20454 "configure"
+#line 21088 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -20458,7 +21092,7 @@ int main() {
 struct stat foo; foo.st_blksize;
 ; return 0; }
 EOF
-if { (eval echo configure:20462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21096: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_struct_member_st_blksize=yes
 else
@@ -20480,12 +21114,12 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:20484: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:21118: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"\${ac_cv_header_time+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20489 "configure"
+#line 21123 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -20494,7 +21128,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:20498: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -20515,12 +21149,12 @@ EOF
 fi
 
 echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:20519: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:21153: checking whether struct tm is in sys/time.h or time.h" >&5
 if eval "test \"\${ac_cv_struct_tm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20524 "configure"
+#line 21158 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -20528,7 +21162,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:20532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -20549,12 +21183,12 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:20553: checking for uid_t in sys/types.h" >&5
+echo "configure:21187: checking for uid_t in sys/types.h" >&5
 if eval "test \"\${ac_cv_type_uid_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20558 "configure"
+#line 21192 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -20583,19 +21217,19 @@ EOF
 fi
 
 echo $ac_n "checking for sig_atomic_t""... $ac_c" 1>&6
-echo "configure:20587: checking for sig_atomic_t" >&5
+echo "configure:21221: checking for sig_atomic_t" >&5
 if eval "test \"\${ol_cv_type_sig_atomic_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20592 "configure"
+#line 21226 "configure"
 #include "confdefs.h"
 #include <signal.h>
 int main() {
 sig_atomic_t atomic;
 ; return 0; }
 EOF
-if { (eval echo configure:20599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_type_sig_atomic_t=yes
 else
@@ -20619,13 +21253,13 @@ EOF
 
 # test for pw_gecos in struct passwd
 echo $ac_n "checking struct passwd for pw_gecos""... $ac_c" 1>&6
-echo "configure:20623: checking struct passwd for pw_gecos" >&5
+echo "configure:21257: checking struct passwd for pw_gecos" >&5
 if eval "test \"\${ol_cv_struct_passwd_pw_gecos+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 20629 "configure"
+#line 21263 "configure"
 #include "confdefs.h"
 #include <pwd.h>
 int main() {
@@ -20635,7 +21269,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:20639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21273: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_struct_passwd_pw_gecos=yes
 else
 
 # test for pw_passwd in struct passwd
 echo $ac_n "checking struct passwd for pw_passwd""... $ac_c" 1>&6
-echo "configure:20661: checking struct passwd for pw_passwd" >&5
+echo "configure:21295: checking struct passwd for pw_passwd" >&5
 if eval "test \"\${ol_cv_struct_passwd_pw_passwd+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 20667 "configure"
+#line 21301 "configure"
 #include "confdefs.h"
 #include <pwd.h>
 int main() {
@@ -20673,7 +21307,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:20677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_struct_passwd_pw_passwd=yes
 else
@@ -20695,7 +21329,7 @@ fi
 
 
 echo $ac_n "checking if toupper() requires islower()""... $ac_c" 1>&6
-echo "configure:20699: checking if toupper() requires islower()" >&5
+echo "configure:21333: checking if toupper() requires islower()" >&5
 if eval "test \"\${ol_cv_c_upper_lower+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -20704,7 +21338,7 @@ else
   ol_cv_c_upper_lower=safe
 else
   cat > conftest.$ac_ext <<EOF
-#line 20708 "configure"
+#line 21342 "configure"
 #include "confdefs.h"
 
 #include <ctype.h>
@@ -20716,7 +21350,7 @@ main()
                exit(1);
 }
 EOF
-if { (eval echo configure:20720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:21354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_c_upper_lower=no
 else
@@ -20739,12 +21373,12 @@ EOF
 fi
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:20743: checking for working const" >&5
+echo "configure:21377: checking for working const" >&5
 if eval "test \"\${ac_cv_c_const+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20748 "configure"
+#line 21382 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -20793,7 +21427,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:20797: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -20814,12 +21448,12 @@ EOF
 fi
 
 echo $ac_n "checking if compiler understands volatile""... $ac_c" 1>&6
-echo "configure:20818: checking if compiler understands volatile" >&5
+echo "configure:21452: checking if compiler understands volatile" >&5
 if eval "test \"\${ol_cv_c_volatile+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20823 "configure"
+#line 21457 "configure"
 #include "confdefs.h"
 int x, y, z;
 int main() {
@@ -20828,7 +21462,7 @@ volatile int a; int * volatile b = x ? &y : &z;
       *b = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:20832: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21466: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_c_volatile=yes
 else
@@ -20858,14 +21492,14 @@ EOF
 
 else
        echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:20862: checking whether byte ordering is bigendian" >&5
+echo "configure:21496: checking whether byte ordering is bigendian" >&5
 if eval "test \"\${ac_cv_c_bigendian+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 20869 "configure"
+#line 21503 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -20876,11 +21510,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:20880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21514: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 20884 "configure"
+#line 21518 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -20891,7 +21525,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:20895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -20911,7 +21545,7 @@ if test "$cross_compiling" = yes; then
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 20915 "configure"
+#line 21549 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -20924,7 +21558,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:20928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:21562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_bigendian=no
 else
 fi
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:20954: checking size of short" >&5 
+echo "configure:21588: checking size of short" >&5 
 if eval "test \"\${ac_cv_sizeof_short+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence. 
   cat > conftest.$ac_ext <<EOF
-#line 20960 "configure"
+#line 21594 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -20966,7 +21600,7 @@ int main() {
 switch (0) case 0: case (sizeof (short) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:20970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_short=$ac_size
 else
@@ -20989,13 +21623,13 @@ EOF
  
  
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:20993: checking size of int" >&5 
+echo "configure:21627: checking size of int" >&5 
 if eval "test \"\${ac_cv_sizeof_int+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence. 
   cat > conftest.$ac_ext <<EOF
-#line 20999 "configure"
+#line 21633 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -21005,7 +21639,7 @@ int main() {
 switch (0) case 0: case (sizeof (int) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:21009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21643: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_int=$ac_size
 else
@@ -21028,13 +21662,13 @@ EOF
  
  
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:21032: checking size of long" >&5 
+echo "configure:21666: checking size of long" >&5 
 if eval "test \"\${ac_cv_sizeof_long+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence. 
   cat > conftest.$ac_ext <<EOF
-#line 21038 "configure"
+#line 21672 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -21044,7 +21678,7 @@ int main() {
 switch (0) case 0: case (sizeof (long) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:21048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_long=$ac_size
 else
@@ -21095,7 +21729,7 @@ EOF
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:21099: checking for 8-bit clean memcmp" >&5
+echo "configure:21733: checking for 8-bit clean memcmp" >&5
 if eval "test \"\${ac_cv_func_memcmp_clean+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -21103,7 +21737,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 21107 "configure"
+#line 21741 "configure"
 #include "confdefs.h"
 
 main()
@@ -21113,7 +21747,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:21117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:21751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -21131,12 +21765,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 
 echo $ac_n "checking for strftime""... $ac_c" 1>&6
-echo "configure:21135: checking for strftime" >&5
+echo "configure:21769: checking for strftime" >&5
 if eval "test \"\${ac_cv_func_strftime+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21140 "configure"
+#line 21774 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char strftime(); below.  */
@@ -21160,7 +21794,7 @@ f = strftime;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_strftime=yes"
 else
@@ -21182,7 +21816,7 @@ else
   echo "$ac_t""no" 1>&6
 # strftime is in -lintl on SCO UNIX.
 echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6
-echo "configure:21186: checking for strftime in -lintl" >&5
+echo "configure:21820: checking for strftime in -lintl" >&5
 ac_lib_var=`echo intl'_'strftime | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -21190,7 +21824,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 21194 "configure"
+#line 21828 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -21201,7 +21835,7 @@ int main() {
 strftime()
 ; return 0; }
 EOF
-if { (eval echo configure:21205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 
 echo $ac_n "checking for inet_aton()""... $ac_c" 1>&6
-echo "configure:21233: checking for inet_aton()" >&5
+echo "configure:21867: checking for inet_aton()" >&5
 if eval "test \"\${ol_cv_func_inet_aton+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21238 "configure"
+#line 21872 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -21256,7 +21890,7 @@ struct in_addr in;
 int rc = inet_aton( "255.255.255.255", &in );
 ; return 0; }
 EOF
-if { (eval echo configure:21260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_func_inet_aton=yes
 else
@@ -21278,12 +21912,12 @@ EOF
  
 
 echo $ac_n "checking for _spawnlp""... $ac_c" 1>&6
-echo "configure:21282: checking for _spawnlp" >&5
+echo "configure:21916: checking for _spawnlp" >&5
 if eval "test \"\${ac_cv_func__spawnlp+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21287 "configure"
+#line 21921 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _spawnlp(); below.  */
@@ -21307,7 +21941,7 @@ f = _spawnlp;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__spawnlp=yes"
 else
 
 
 echo $ac_n "checking for _snprintf""... $ac_c" 1>&6
-echo "configure:21335: checking for _snprintf" >&5
+echo "configure:21969: checking for _snprintf" >&5
 if eval "test \"\${ac_cv_func__snprintf+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21340 "configure"
+#line 21974 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _snprintf(); below.  */
@@ -21360,7 +21994,7 @@ f = _snprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__snprintf=yes"
 else
 
 
 echo $ac_n "checking for _vsnprintf""... $ac_c" 1>&6
-echo "configure:21390: checking for _vsnprintf" >&5
+echo "configure:22024: checking for _vsnprintf" >&5
 if eval "test \"\${ac_cv_func__vsnprintf+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21395 "configure"
+#line 22029 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _vsnprintf(); below.  */
@@ -21415,7 +22049,7 @@ f = _vsnprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__vsnprintf=yes"
 else
 
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:21445: checking for vprintf" >&5
+echo "configure:22079: checking for vprintf" >&5
 if eval "test \"\${ac_cv_func_vprintf+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21450 "configure"
+#line 22084 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -21470,7 +22104,7 @@ f = vprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:21498: checking for _doprnt" >&5
+echo "configure:22132: checking for _doprnt" >&5
 if eval "test \"\${ac_cv_func__doprnt+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21503 "configure"
+#line 22137 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -21523,7 +22157,7 @@ f = _doprnt;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -21552,12 +22186,12 @@ if test $ac_cv_func_vprintf = yes ; then
                for ac_func in vsnprintf vsprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21556: checking for $ac_func" >&5
+echo "configure:22190: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21561 "configure"
+#line 22195 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -21581,7 +22215,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -21663,12 +22297,12 @@ for ac_func in \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21667: checking for $ac_func" >&5
+echo "configure:22301: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21672 "configure"
+#line 22306 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -21692,7 +22326,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -21720,12 +22354,12 @@ done
 for ac_func in getopt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:21724: checking for $ac_func" >&5
+echo "configure:22358: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21729 "configure"
+#line 22363 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -21749,7 +22383,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 
 # Check Configuration
 echo $ac_n "checking declaration of sys_errlist""... $ac_c" 1>&6
-echo "configure:21786: checking declaration of sys_errlist" >&5
+echo "configure:22420: checking declaration of sys_errlist" >&5
 if eval "test \"\${ol_cv_dcl_sys_errlist+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 21792 "configure"
+#line 22426 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -21801,7 +22435,7 @@ int main() {
 char *c = (char *) *sys_errlist
 ; return 0; }
 EOF
-if { (eval echo configure:21805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_dcl_sys_errlist=yes
        ol_cv_have_sys_errlist=yes
@@ -21824,20 +22458,20 @@ EOF
 
 
        echo $ac_n "checking existence of sys_errlist""... $ac_c" 1>&6
-echo "configure:21828: checking existence of sys_errlist" >&5
+echo "configure:22462: checking existence of sys_errlist" >&5
 if eval "test \"\${ol_cv_have_sys_errlist+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 21834 "configure"
+#line 22468 "configure"
 #include "confdefs.h"
 #include <errno.h>
 int main() {
 char *c = (char *) *sys_errlist
 ; return 0; }
 EOF
-if { (eval echo configure:21841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_have_sys_errlist=yes
 else
@@ -21931,6 +22565,12 @@ if test "$ol_link_spasswd" != no ; then
 #define SLAPD_SPASSWD 1
 EOF
 
+fi
+if test "$ol_enable_multimaster" != no ; then
+       cat >> confdefs.h <<\EOF
+#define SLAPD_MULTIMASTER 1
+EOF
+
 fi
 if test "$ol_enable_phonetic" != no ; then
        cat >> confdefs.h <<\EOF
@@ -22444,6 +23084,7 @@ s%@AWK@%$AWK%g
 s%@AMTARFLAGS@%$AMTARFLAGS%g
 s%@SET_MAKE@%$SET_MAKE%g
 s%@OPENLDAP_LIBVERSION@%$OPENLDAP_LIBVERSION%g
+s%@OPENLDAP_RELEASE_DATE@%$OPENLDAP_RELEASE_DATE%g
 s%@top_builddir@%$top_builddir%g
 s%@ldap_subdir@%$ldap_subdir%g
 s%@CC@%$CC%g
index 788050637b9346de200a42c08618f700335e192d..37d5a292af6fd39123280b78821b60653a5d1003 100644 (file)
@@ -83,6 +83,9 @@ AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION_PATCH,$OL_PATCH,Patch)
 OPENLDAP_LIBVERSION=$OL_API_LIB
 AC_SUBST(OPENLDAP_LIBVERSION)dnl
 
+OPENLDAP_RELEASE_DATE="$OL_RELEASE_DATE"
+AC_SUBST(OPENLDAP_RELEASE_DATE)dnl
+
 dnl We use autoconf features new to 2.13.
 dnl aclocal.m4 should be built using aclocal from automake 1.4
 dnl libtool 1.4.2 should be installed.
@@ -127,7 +130,8 @@ OL_ARG_ENABLE(syslog,[  --enable-syslog       enable syslog support], auto)dnl
 OL_ARG_ENABLE(proctitle,[  --enable-proctitle    enable proctitle support], yes)dnl
 OL_ARG_ENABLE(cache,[  --enable-cache    enable caching (experimental)], no)dnl
 OL_ARG_ENABLE(referrals,[  --enable-referrals    enable LDAPv2+ Referrals (experimental)], no)dnl
-OL_ARG_ENABLE(kbind,[  --enable-kbind    enable LDAPv2+ Kerberos IV bind (deprecated)], no)dnl
+dnl OL_ARG_ENABLE(kbind,[  --enable-kbind        enable LDAPv2+ Kerberos IV bind (deprecated)], no)dnl
+ol_enable_kbind=${ol_enable_kbind-no}
 OL_ARG_ENABLE(ipv6,[  --enable-ipv6      enable IPv6 support], auto)dnl
 OL_ARG_ENABLE(local,[  --enable-local    enable AF_LOCAL (AF_UNIX) socket support], auto)dnl
 OL_ARG_ENABLE(x_compile,[  --enable-x-compile    enable cross compiling],
@@ -170,6 +174,7 @@ OL_ARG_ENABLE(lmpasswd,[    --enable-lmpasswd         enable LAN Manager passwords], n
 OL_ARG_ENABLE(spasswd,[    --enable-spasswd      enable (Cyrus) SASL password verification], no)dnl
 OL_ARG_ENABLE(modules,[    --enable-modules      enable dynamic module support], no)dnl
 dnl OL_ARG_ENABLE(multimaster,[    --enable-multimaster  enable multimaster replication], no)dnl
+ol_enable_multimaster=${ol_enable_multimaster-no}
 OL_ARG_ENABLE(phonetic,[    --enable-phonetic    enable phonetic/soundex], no)dnl
 OL_ARG_ENABLE(rewrite,[    --enable-rewrite      enable DN rewriting in back-ldap and back-meta], no)dnl
 OL_ARG_ENABLE(rlookups,[    --enable-rlookups    enable reverse lookups of client hostnames], no)dnl
@@ -270,9 +275,9 @@ if test $ol_enable_slapd = no ; then
        if test $ol_enable_modules = yes ; then
                AC_MSG_WARN([slapd disabled, ignoring --enable-modules argument])
        fi
-dnl    if test $ol_enable_multimaster = yes ; then
-dnl            AC_MSG_WARN([slapd disabled, ignoring --enable-multimaster argument])
-dnl    fi
+       if test $ol_enable_multimaster = yes ; then
+               AC_MSG_WARN([slapd disabled, ignoring --enable-multimaster argument])
+       fi
        if test $ol_enable_wrappers = yes ; then
                AC_MSG_WARN([slapd disabled, ignoring --enable-wrappers argument])
        fi
@@ -345,7 +350,7 @@ dnl fi
        ol_enable_sql=no
 
        ol_enable_modules=no
-dnl    ol_enable_multimaster=no
+       ol_enable_multimaster=no
        ol_enable_phonetic=no
        ol_enable_rlookups=no
        ol_enable_aci=no
@@ -2462,9 +2467,9 @@ fi
 if test "$ol_link_spasswd" != no ; then
        AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
 fi
-dnl if test "$ol_enable_multimaster" != no ; then
-dnl    AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
-dnl fi
+if test "$ol_enable_multimaster" != no ; then
+       AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
+fi
 if test "$ol_enable_phonetic" != no ; then
        AC_DEFINE(SLAPD_PHONETIC,1,[define to support phonetic])
 fi
index e000234440bafbba36332d93f384a1ed179576e1..a8edaeae6095f8039a8db34195faeb5b957f020e 100644 (file)
@@ -17,7 +17,7 @@ ud                 D                 *      cd f     l  p   s uv
 
 
 * reserved
-       GJNgijmoqy
+       GJNgijmoqy01235789
 
 * General flags:
        -C Chase Referrals
@@ -34,6 +34,8 @@ ud                 D                 *      cd f     l  p   s uv
        -p port
        -v verbose
        -w Bind password
+       -4 IPv4 only
+       -6 IPv6 only
 
 
 * LDAPv3 Only 
index 2c60ebf1c0a796fdd30e5526023658893b312c43..f245705e9431a1dbfde8b74b21dc3d4d9e889c3b 100644 (file)
@@ -21,9 +21,9 @@ OpenLDAP 2.x Projects
 ---------------------
        SLAPD
                Complete Unicode Support (ACLs, etc.)
-       client API update
+       client API update
                Implement per referral/continuation callback
-       clients
+       clients (e.g. ldapsearch(1))
                Implement referral chasing options w/ referral callback
        Update manual pages
 
@@ -39,28 +39,30 @@ Medium projects
 Implement LDAP Transactions
 Implement authPassword (RFC 3112)
 Implement localization
-Implement Proxy Authorization Group extension
-Implement LCUP
-Add LDIFv1 control support
+Implement Proxy Authorization Control extension
 Update to latest autoconf and friends
 
 
 Small projects
 --------------
+Add LDIFv1 control support
 Populate matchingRuleUse attribute in the subschema
 Implement -V version options
-Implement Proxy Authorization Control extension
-Complete Simple Paged Results Control
-Add No-Op Control support to ldap client tools
+Add No-Op Control support to client tools (e.g. ldapsearch(1))
 Add tests to test suite (ACI, moddn, manageDSAit, etc.)
 Add support for Cyrus pwcheckd/saslauthd
-Create ldapbind (from ldapcompare?) to support bind operations
+Recode linked-list structs to use <ldap_queue.h> macros
+Create ldapbind(1) to support bind operations
 Convert utfconv.txt into man page(s).
 Update any manual page
 
 
 For additional TODO items, see:
   http://www.openldap.org/its/index.cgi/Software%20Enhancements
+  http://www.openldap.org/its/index.cgi/Software%20Bugs
+
+JLDAP TODO items, see:
+  http://www.openldap.org/devel/cvsweb.cgi/~checkout~/design/todo.txt?rev=1&cvsroot=JLDAP
 
 
 ---
index 3acec7bd2428a52dc959504cc19a1828987c5bef..2e5adc87b09075209771b6e60b42a1743eb7f62c 100644 (file)
@@ -1,9 +1,9 @@
 
 
 INTERNET-DRAFT                                         Michael P. Armijo
-<draft-ietf-ldapext-locate-07.txt>                          Levon Esibov
-February 20, 2002                                             Paul Leach
-Expires: August 20, 2002                           Microsoft Corporation
+<draft-ietf-ldapext-locate-08.txt>                          Levon Esibov
+June 5, 2002                                                  Paul Leach
+Expires: December 5, 2002                          Microsoft Corporation
                                                             R.L. Morgan
                                                University of Washington
 
@@ -31,7 +31,7 @@ Status of this Memo
    http://www.ietf.org/shadow.html.
 
    Distribution of this memo is unlimited.  It is filed as <draft-
-   ietf-ldapext-locate-07.txt>, and expires on August 20, 2002.
+   ietf-ldapext-locate-08.txt>, and expires on December 5, 2002.
    Please send comments to the authors.
 
    Copyright Notice
@@ -56,7 +56,7 @@ Abstract
 
 Armijo, Esibov, Leach and Morgan                                [Page 1]
 
-INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
+INTERNET-DRAFT   Discovering LDAP Services with DNS         June 5, 2002
 
 
 
@@ -103,6 +103,18 @@ INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
    reasonable because many objects of interest are named with domain
    names, and use of domain-name-based DNs is becoming common.
 
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in RFC 2119 [9].
+
+
+
+
+
+
+Armijo, Esibov, Leach and Morgan                                [Page 2]
+
+INTERNET-DRAFT   Discovering LDAP Services with DNS         June 5, 2002
 
 
 2. Mapping Distinguished Names into Domain Names
@@ -112,11 +124,6 @@ INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
    DNs cannot be converted into a domain name.  Converted DNs result 
    in a fully qualified domain name.
 
-Armijo, Esibov, Leach and Morgan                                [Page 2]
-
-INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
-
-
 
    The output domain name is initially empty.  The DN is processed in
    right-to-left order (i.e., beginning with the first RDN in the
@@ -163,16 +170,9 @@ INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
 
 
 
-
-
-
-
-
-
-
 Armijo, Esibov, Leach and Morgan                                [Page 3]
 
-INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
+INTERNET-DRAFT   Discovering LDAP Services with DNS         June 5, 2002
 
 
    Presence of such records enables clients to find the LDAP servers
@@ -191,7 +191,7 @@ INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
    that satisfy the requested criteria.  The following is an example of
    such a record:
 
-      _ldap._tcp.example.net.   IN       SRV  0 0 389 phoenix.example.net.
+      _ldap._tcp.example.net.   IN   SRV  0 0 389 phoenix.example.net.
 
    The set of returned records may contain multiple records in the case
    where multiple LDAP servers serve the same domain.  If there are no 
@@ -213,15 +213,15 @@ INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
    intended to contact.  See [7] for more information on security
    threats and security mechanisms.
 
-   When using LDAP with TLS the client must check the server's name,
+   When using LDAP with TLS the client MUST check the server's name,
    as described in section 3.6 of [RFC 2830].  As specified there, the
    name the client checks for is the server's name before any
    potentially insecure transformations, including the SRV record
-   lookup specified in this memo.  Thus the name the client must check
+   lookup specified in this memo.  Thus the name the client MUST check
    for is the name obtained by doing the mapping step defined in
    section 2 above.  For example, if the DN "cn=John
    Doe,ou=accounting,dc=example,dc=net" is converted to the DNS name
-   "example.net", the server's name must match "example.net".
+   "example.net", the server's name MUST match "example.net".
 
    This document describes a method that uses DNS SRV records to 
    discover LDAP servers.  All security considerations related to DNS
@@ -230,7 +230,7 @@ INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
 
 Armijo, Esibov, Leach and Morgan                                [Page 4]
 
-INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
+INTERNET-DRAFT   Discovering LDAP Services with DNS         June 5, 2002
 
 
 6. References
@@ -259,10 +259,11 @@ INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
         "Authentication Methods for LDAP", RFC 2829, May 2000.
 
    [8]  Hodges, J., Morgan, R., Wahl, M., "Lightweight Directory Access
-        Protocol (v3): Extension for Transport Layer Security", RFC 2830,
-        May 2000.
-
+        Protocol (v3): Extension for Transport Layer Security",
+        RFC 2830, May 2000.
 
+   [9] Bradner, S., "Key words for use in RFCs to Indicate Requirement
+       Levels", BCP 14, RFC 2119, March 1997.
 
 
 
@@ -285,10 +286,9 @@ INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
    levone@microsoft.com
 
 
-
 Armijo, Esibov, Leach and Morgan                                [Page 5]
 
-INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
+INTERNET-DRAFT   Discovering LDAP Services with DNS         June 5, 2002
 
    RL "Bob" Morgan
    University of Washington
@@ -346,7 +346,7 @@ herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE
 
 Armijo, Esibov, Leach and Morgan                                [Page 6]
 
-INTERNET-DRAFT   Discovering LDAP Services with DNS    February 20, 2002
+INTERNET-DRAFT   Discovering LDAP Services with DNS         June 5, 2002
 
 INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
@@ -356,7 +356,7 @@ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
 
 10.  Expiration Date
 
-   This documentis filed as <draft-ietf-ldapext-locate-06.txt>, and 
-   expires August 20, 2002.
+   This document is filed as <draft-ietf-ldapext-locate-08.txt>, and 
+   expires December 5, 2002.
 
 Armijo, Esibov, Leach and Morgan                                [Page 7]
\ No newline at end of file
index 93e72e6a9647f7e4095025f2c04cab68ec43e32d..109f599e5e1721c8b74fdcd138684fa857fe58e0 100644 (file)
@@ -1,14 +1,14 @@
 
 
 Internet Draft                                     R. Megginson, Editor 
-Document: <draft-ietf-ldup-lcup-02.txt>                        M. Smith 
+Document: <draft-ietf-ldup-lcup-03.txt>                        M. Smith 
 Category: Proposed Standard                                    Netscape 
                                                    Communications Corp. 
                                                            O. Natkovich 
                                                                   Yahoo 
                                                               J. Parham 
                                                   Microsoft Corporation 
-                                                          November 2001 
+                                                              June 2002 
     
     
                         LDAP Client Update Protocol 
@@ -86,22 +86,9 @@ Status of this Memo
     
    The problem areas not being considered: 
     
-    - directory server to directory server synchronization. The 
-      replication protocol that is being defined by the LDUP IETF 
-      working group should be used for this purpose. 
-    
-   Several features of the protocol distinguish it from LDUP 
-   replication. First, the server does not maintain any state 
-   information on behalf of its clients. The clients are responsible 
-   for storing the information about how up to date they are with 
-   respect to the server's content. Second, no predefined agreements 
-   exist between the clients and the servers. The client decides when 
-   and from where to retrieve the changes. Finally, the server never 
-   pushes the data to the client; the client always initiates the 
-   update session during which it pulls the changes from the server. 
-    
-   The set of clients that are allowed to synchronize with an LDAP 
-   server is determined by the server defined policy. 
+    - directory server to directory server synchronization. The IETF is 
+      developing a LDAP replication protocol, called [LDUP], which is 
+      specifically designed to address this problem area. 
     
    There are currently several protocols in use for LDAP client server 
    synchronization. While each protocol addresses the needs of a 
@@ -112,42 +99,47 @@ Status of this Memo
    connected can't be easily supported by any of the existing 
    protocols. 
     
+   Several features of the protocol distinguish it from LDUP 
+   replication. LCUP is designed such that the server does not need to 
+   maintain state information on behalf of the client. The clients are 
+   responsible for storing the information about how up to date they 
+   are with respect to the server's content. LCUP design avoids the 
+   need for LCUP-specific update agreements to be made between client 
+   and server prior to LCUP use. The client decides when and from where 
+   to retrieve the changes. LCUP design requires clients to initiate 
+   the update session and "pull" the changes from server. 
+    
+   LCUP operations are subject to administrative and access         
+   control policies enforced by the server. 
+    
 
   
-Megginson, et. al. Proposed Standard - Expires: May 2002             2 
+Megginson, et. al. Proposed Standard - Expires: December 2002        2 
 \f
 
 
-   A server can define a naming context or some part thereof to 
-   participate in LCUP.  This document will refer to this as an LCUP 
-   Context.  For example, LDUP defines a replica, a part of the DIT 
-   which may participate in replication.  The LCUP context may be 
-   coincident with the replicated area, depending on the server's 
-   implementation.  It is assumed that most server implementations of 
-   LCUP will make use of the server's underlying replication mechanism, 
-   but this does not have to be LDUP compliant. 
+   A part of the DIT which is enabled for LCUP is referred to as an 
+   LCUP Context.  A server may support one or more LCUP Contexts. 
     
 4.      Protocol Specification 
     
    This section describes the protocol elements and the protocol flow. 
     
-4.1     Unique Identifiers 
+4.1     Universally Unique Identifiers 
     
    Distinguished names can change, so are therefore unreliable  
-   as identifiers. The server SHOULD assign a Unique Identifier to each 
-   entry as it is created. This identifier will be stored as an 
-   operational attribute of the entry, named `entryUUID'. The entryUUID 
-   attribute is single valued. If the client wants to use entryUUID, it 
-   should supply entryUUID in the list of attributes to return in the 
-   LCUP search (described below). 
-   A consistent algorithm for generating such unique  
+   as identifiers. The server SHOULD assign a Universally Unique 
+   Identifier (or UUID for short) to each entry as it is created. This 
+   identifier will be stored as an operational attribute of the entry, 
+   named `entryUUID'. The entryUUID attribute is single valued. A 
+   consistent algorithm for generating such universally unique  
    identifiers may be standardized at some point in the future. 
    The definition of the entryUUID attribute type, written using the 
    BNF form of AttributeDescription described in RFC 2252 [RFC2252] is: 
     
        ( OID-To-Be-Specified 
          NAME `entryUUID' 
-         DESC `unique entry identifier' 
+         DESC `universally unique entry identifier' 
          EQUALITY caseIgnoreMatch 
          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 
          SINGLE-VALUE 
@@ -172,80 +164,85 @@ Megginson, et. al. Proposed Standard - Expires: May 2002             2
      value, the preferred form of documentation is an RFC.  It is 
      expected that there will be one or more standards track cookie 
      schemes where the value format is exposed and described in detail. 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002             3 
-\f
-
-
-    
     
      value - this is the actual data describing the state of the 
      client's data.  This value may be opaque, or its value may have 
-     some well known format, depending on the scheme.  The cookie value 
+     some well-known format, depending on the scheme.  The cookie value 
      MUST be included except when a client has no stored state; i.e., 
      when the client is requesting a full synchronization.  When the 
      server sends back a cookie, the cookie value MUST be present. 
     
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002        3 
+\f
+
+
    Further uses of the LCUP Cookie value are described below. 
     
-4.3     LCUP Cookie Schemes Operational Attribute 
-    
-   The OIDs of the supported LCUP cookie schemes SHOULD be published 
-   using the following operational attribute: 
-    
-       ( OID-TBD 
-         NAME 'lcupCookieScheme' 
-         EQUALITY objectIdentifierMatch 
-         SYNTAX  1.3.6.1.4.1.1466.115.121.1.38 
-         NO-USER-MODIFICATION 
-         USAGE directoryOperation ) 
-    
-   The lcupCookieScheme operational attribute MUST be present in the 
-   root DSE.  The lcupCookieScheme operational attribute MAY be present 
-   in every directory entry that may be used as the baseObject for a 
-   search request that contains an LCUP clientUpdate control.  If a 
-   client wants to determine what LCUP cookie schemes are supported, it 
-   MAY use a base object search to read the lcupCookieScheme attribute 
-   from the entry that will be used as the baseObject in subsequent 
-   LCUP sessions, then query the root DSE if the lcupCookieScheme was 
-   not found in the base entry.  Clients SHOULD NOT search for entries 
-   that contain lcupCookieScheme values; rather, it is RECOMMENDED that 
-   servers support LCUP sessions based at as many different entries as 
-   possible. 
-   Each value of the attribute will be a list of OIDs of the cookie 
-   schemes followed by the DN of the LCUP context which supports the 
-   schemes.  The delimiter will be a single space character.  For 
-   example: 
-   lcupCookieScheme: 1.2.3.4 5.6.7.8 dc=mycorp, dc=com 
-   Everything after the last space after the last OID will be the LCUP 
-   Context DN.  If the attribute is present in a regular directory 
-   entry in an LCUP Context, the values corresponding to DNs other than 
-   the LCUP Context containing the entry MAY be omitted. 
+4.3     Additional LDAP Result Codes defined by LCUP 
+    
+   The LDAP result code names and numbers defined in the following 
+   table are to be replaced with IANA assigned result code names and 
+   numbers per draft-ietf-ldapbis-iana-xx.txt. 
+    
+     lcupResourcesExhausted (TBD) the server is running out of 
+                                   resources 
+     lcupSecurityViolation  (TBD) the client is suspected of malicious 
+                                   actions 
+     lcupInvalidCookie      (TBD) invalid cookie was supplied by the 
+                                   client - both/either the scheme 
+                                   and/or the value part was invalid 
+     lcupUnsupportedScheme  (TBD) The scheme part of the cookie is a 
+                                  valid OID but is not supported by 
+                                  this server 
+     lcupClientDisconnect   (TBD) client requested search termination 
+                                   using the LDAP Cancel extended 
+                                   operation request [CANCEL] 
+     lcupReloadRequired     (TBD) indicates that client data needs to 
+                                   be reinitialized. This reason is 
+                                   returned if the server does not 
+                                   contain sufficient information to 
+                                   synchronize the client or if the 
+                                   server's data was reloaded since the 
+                                   last synchronization session 
+    
+   The uses of these codes are described below. 
     
 4.4     Client Update Control Value 
  
    A client initiates a synchronization session with a server by 
-   attaching a clientUpdate control to a search operation. The search 
-   specification determines the part of the directory information tree 
-   (DIT) the client wishes to synchronize with, the set of attributes 
-   it is interested in and the amount of data the client is willing to 
-   receive. The clientUpdate control contains the client's 
-   synchronization specification. The controlType field for the 
+   attaching a clientUpdate control to an LDAP searchRequest message.  
+   The client SHOULD specify entryUUID in the attributes list in the 
+   searchRequest message.  The search specification determines the part 
+   of the directory information tree (DIT) the client wishes to 
+   synchronize with, the set of attributes it is interested in and the 
+   amount of data the client is willing to receive. The clientUpdate 
+   control contains the client's synchronization specification. The 
+   controlType field for the clientUpdate control is 
+   ClientUpdateControlOID (to be assigned).  The controlValue is an 
+   OCTET STRING, whose contents are the bytes of the BER encoding of 
+   the following: 
+    
+
+
+
+
+
+
+
+
   
-Megginson, et. al. Proposed Standard - Expires: May 2002             4 
+Megginson, et. al. Proposed Standard - Expires: December 2002        4 
 \f
 
 
-   clientUpdate control is ClientUpdateControlOID (to be assigned).  
-   The controlValue is an OCTET STRING, whose contents are the bytes of 
-   the BER encoding of the following: 
-    
     ClientUpdateControlValue ::= SEQUENCE { 
-      updateType      ENUMERATED { 
-                            synchronizeOnly         (0), 
-                            synchronizeAndPersist   (1), 
-                            persistOnly             (2) }, 
-      cookie          LCUPCookie OPTIONAL 
+      updateType         ENUMERATED { 
+                               synchronizeOnly         (0), 
+                               synchronizeAndPersist   (1), 
+                               persistOnly             (2) }, 
+      sendCookieInterval INTEGER    OPTIONAL, 
+      cookie             LCUPCookie OPTIONAL 
     } 
     
      updateType - specifies the type of update requested by the client 
@@ -257,28 +254,32 @@ Megginson, et. al. Proposed Standard - Expires: May 2002             4
       synchronizeAndPersist - the server sends all the data needed to 
         synchronize the client with the server, then leaves open the 
         connection, sending to the client any new added, modified, or 
-        deleted entries which satisfy the search criteria. 
+        deleted entries that satisfy the search criteria. 
        
       persistOnly - the server does not synchronize the data with the 
         client but leaves open the connection and sends over any new 
-        added, modified, or deleted entries which satisfy the search 
-        criteria.   
+        added, modified, or deleted entries that satisfy the search 
+        criteria. 
  
+     sendCookieInterval Ã» (optional) the server SHOULD send the cookie 
+      back in the entryUpdate control value for every 
+      sendCookieInterval number of SearchResultEntry PDUs returned to 
+      the client.  For example, if the value is 5, the server SHOULD 
+      send the cookie back in the entryUpdate control value for every 5 
+      search results returned to the client.  If this value is absent, 
+      zero or less than zero, the server chooses the interval. 
+                                                        
      cookie - a value that represents the current state of the client's 
       data.  If a cookie is provided, the server MUST use the enclosed 
       scheme throughout the duration of the LCUP session or until an 
       LCUP context boundary is crossed, since a new cookie may be 
       required in that case.  If the value or scheme part of the cookie 
       is invalid, the server MUST return immediately with a 
-      SearchResultDone message with the clientUpdateDone control 
-      attached with the reason set to the value of lcupInvalidCookie 
-      (see below).  Also, the LDAP result code MUST be 
-      unwillingToPerform.  If the scheme part of the cookie is a valid 
+      SearchResultDone message with the resultCode set to the value of 
+      lcupInvalidCookie.  If the scheme part of the cookie is a valid 
       OID, but is not supported, the server MUST return immediately 
-      with a SearchResultDone message with the clientUpdateDone control 
-      attached with the reason set to the value of 
-      lcupUnsupportedScheme (see below).  Also, the LDAP result code 
-      MUST be unwillingToPerform. 
+      with a SearchResultDone message with the resultCode set to the 
+      value of lcupUnsupportedScheme. 
       
      If the cookie is omitted, the server MAY use any scheme it 
      supports. 
@@ -288,38 +289,31 @@ Megginson, et. al. Proposed Standard - Expires: May 2002             4
    In response to the client's synchronization request, the server 
    returns one or more SearchResultEntry PDU that fits the client's 
    specification. Each SearchResultEntry PDU also contains an 
-   entryUpdateControl which describes the LCUP state of the returned 
-   entry.  To represent a deleted entry, the server attaches an 
+   entryUpdateControl that describes the LCUP state of the returned 
   
-Megginson, et. al. Proposed Standard - Expires: May 2002             5 
+Megginson, et. al. Proposed Standard - Expires: December 2002        5 
 \f
 
 
+   entry.  To represent a deleted entry, the server attaches an 
    entryUpdate control to the corresponding SearchResultEntry. The 
    SearchResultEntry corresponding to a deleted entry MUST contain a 
-   valid DN and MAY contain a valid Unique Identifier but, to reduce 
-   the amount of data sent to the client, it SHOULD not contain any 
-   other attributes.  Distinguished names can change, so are therefore 
-   unreliable as identifiers. A Unique Identifier MAY therefore be 
-   assigned to each entry as it is created.  The Unique Identifier 
-   allows the client to uniquely identify entries even in the presence 
-   of modifyDN operations.  The Unique Identifier is carried in the 
-   entryUUID attribute. 
-   For returned SearchResultEntry PDUs other than deleted entries, the 
-   client MAY request that the Unique Identifier attribute be returned 
-   by specifying it in the attribute list to be returned by the search 
-   request.  If the Unique Identifier is not returned, the client MAY 
-   use the entry DN to keep track of returned entries. 
+   valid DN and SHOULD contain a valid UUID but, to reduce the amount 
+   of data sent to the client, it SHOULD not contain any other 
+   attributes. 
  
    Furthermore, the server may elect to periodically return to the 
    client the cookie that represents the state of the client's data. 
    This information is useful in case the client crashes or gets 
-   disconnected. The cookie SHOULD be present in every entryUpdate 
-   control sent to the client to insure ease of synchronization.  The 
-   cookie is also provided in the entryUpdate control. The controlType 
-   field for the entryUpdate control is EntryUpdateControlOID (to be 
-   assigned).  The controlValue is an OCTET STRING, whose contents are 
-   the bytes of the BER encoding of the following: 
+   disconnected. The client MAY specify how often to receive the cookie 
+   by the use of the sendCookieInterval in the clientUpdate control 
+   value (see above).  If the client does not specify a value, the 
+   server will determine the interval. 
+    
+   The controlType field for the entryUpdate control is 
+   EntryUpdateControlOID (to be assigned).  The controlValue is an 
+   OCTET STRING, whose contents are the bytes of the BER encoding of 
+   the following: 
     
     EntryUpdateControlValue ::= SEQUENCE { 
       stateUpdate   BOOLEAN, 
@@ -335,158 +329,75 @@ Megginson, et. al. Proposed Standard - Expires: May 2002             5
       contain the updated cookie. This feature allows updating the 
       client's cookie when there are no changes that effect the 
       client's data store. Note that the control MUST be attached to a 
-      valid SearchResultEntry, i.e. the entry should contain a valid 
-      dn.  The server MAY send the entry named by the baseObject from 
-      the client's search request. 
+      valid SearchResultEntry, which should contain a valid LDAPDN in 
+      the objectName field, and MAY contain an entryUUID attribute, but 
+      SHOULD NOT contain any other attributes.  The server MAY send the 
+      entry named by the baseObject from the client's search request. 
      
     entryDeleted - if set to TRUE, indicates that the entry to which 
       the control is attached was deleted.  The server MAY also set 
       this to TRUE if the entry has left the client's search result 
       set.  As far as the client is concerned, a deleted entry is no 
-      different than an entry which has left the result set. 
+      different than an entry that has left the result set. 
  
     cookie - the LCUP cookie value that represents the current state of 
       the client's data. 
      
 4.6     Client Update Done Control Value 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002             6 
-\f
-
-
  
    When the server has finished processing the client's request, it 
    attaches a clientUpdateDone control to the SearchResultDone message 
    and sends it to the client. However, if the SearchResultDone message 
-   contains a resultCode which is not success, the clientUpdateDone 
-   control MAY be omitted.  The controlType field for the 
-   clientUpdateDone control is ClientUpdateDoneControlOID (to be 
-   assigned).  The controlValue is an OCTET STRING, whose contents are 
-   the bytes of the BER encoding of the following: 
+   contains a resultCode that is not success or lcupClientDisconnect, 
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002        6 
+\f
+
+
+   the clientUpdateDone control MAY be omitted.  The controlType field 
+   for the clientUpdateDone control is ClientUpdateDoneControlOID (to 
+   be assigned).  The controlValue is an OCTET STRING, whose contents 
+   are the bytes of the BER encoding of the following: 
     
     ClientUpdateDoneControlValue ::= SEQUENCE { 
-      reason  INTEGER, 
-      reasonText LDAPString, 
       cookie  LCUPCookie OPTIONAL 
     } 
-     
-    reason - reason for terminating the operation. The following values 
-      are defined: 
-    
-     lcupSuccess            (0)  the operation was successfully 
-                                  processed 
-     lcupResourcesExhausted (1)  the server is running out of resource 
-     lcupSecurityViolation  (2)  the client is suspected of malicious 
-                                  actions 
-     lcupInvalidCookie      (3)  invalid cookie was supplied by the 
-                                  client - both/either the scheme 
-                                  and/or the value part was invalid 
-     lcupUnsupportedScheme  (4)  The scheme part of the cookie is a 
-                                 valid OID but is not supported by 
-                                 this server 
-     lcupClientDisconnect   (5)  client requested search termination 
-                                  using the stopClientUpdate request 
-                                  (defined below) 
-     lcupReloadRequired     (6)  indicates that client data needs to 
-                                  be reinitialized. This reason is 
-                                  returned if the server does not 
-                                  contain sufficient information to 
-                                  synchronize the client or that the 
-                                  server's data was reloaded since the 
-                                  last synchronization session 
-    
-   reasonText - The reasonText field of this construct may, at the 
-    server's option, be used to return a string containing a textual, 
-    human-readable (terminal control and page formatting characters 
-    should be avoided) error diagnostic. As this error diagnostic is 
-    not standardized, implementations MUST NOT rely on the values 
-    returned.  If the server chooses not to return a textual 
-    diagnostic, the reasonText field of the 
-    ClientUpdateDoneControlValue MUST contain a zero length string.  
-    The reasonText should be limited to characters in the range 0x00 to 
-    0x7F. 
-    
    cookie - the LCUP cookie value that represents the current state of 
     the client's data.  Although this value is OPTIONAL, it MUST be set 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002             7 
-\f
-
-
-    in the ClientUpdateDoneControlValue if the reason is lcupSuccess or 
-    lcupClientDisconnect and the LDAP search result code is success.  
-    This provides a good "checksum" of what the server thinks the state 
-    of the client is.  If some error occurred, either an LDAP search 
-    error (e.g. insufficientAccessRights) or an LCUP error (e.g. 
+    in the ClientUpdateDoneControlValue if the SearchResultDone 
+    resultCode is success or lcupClientDisconnect.  This provides a 
+    good "checksum" of what the server thinks the state of the client 
+    is.  If some error occurred, either an LDAP search error (e.g. 
+    insufficientAccessRights) or an LCUP error (e.g. 
     lcupUnsupportedScheme), the cookie MAY be omitted. 
     
    If server resources become tight, the server can terminate one or 
    more search operations by sending a SearchResultDone message to the 
-   client(s). Unless the client sets the updateType field to 
-   persistOnly, the server attaches a clientUpdateDone control that 
-   contains the cookie that corresponds to the current state of the 
-   client's data and the value of the reason field is set to 
-   lcupResourcesExhausted. A server set policy is used to decide which 
-   searches to terminate. This can also be used as a security mechanism 
-   to disconnect clients that are suspected of malicious actions, but 
-   if the server can infer that the client is malicious, the server 
-   should return lcupSecurityViolation in the reason field of the 
-   response. 
-4.7     Stop Client Update Request and Response 
-   The Stop Client Update operation is an LDAPv3 Extended Operation  
-   [RFC2251, Section 4.12] and is identified by the OBJECT IDENTIFIER  
-   stopClientUpdateRequestOID (to be assigned).  This section details 
-   the syntax of the protocol. 
-   An LDAPv3 Extended Request is defined in [LDAPv3] as follows: 
-    
-         ExtendedRequest ::= [APPLICATION 23] SEQUENCE { 
-             requestName    [0] LDAPOID, 
-             requestValue   [1] OCTET STRING OPTIONAL 
-         } 
+   client(s) with a resultCode of lcupResourcesExhausted. Unless the 
+   client sets the updateType field to persistOnly, the server attaches 
+   a clientUpdateDone control that contains the cookie that corresponds 
+   to the current state of the client's data. A server set policy is 
+   used to decide which searches to terminate. This can also be used as 
+   a security mechanism to disconnect clients that are suspected of 
+   malicious actions, but if the server can infer that the client is 
+   malicious, the server should return lcupSecurityViolation instead. 
+                                                         
+4.7     Client Initiated Termination 
     
    If the client needs to terminate the synchronization process and it 
    wishes to obtain the cookie that represents the current state of its 
-   data, it issues a stopClientUpdateRequest extended operation. The 
-   operation carries the following data. The extended operation 
-   requestValue is an OCTET STRING, whose contents are the bytes of the 
-   BER encoding of the following: 
-    
-    StopClientUpdateRequestValue ::= MessageID 
-     
-    StopClientUpdateRequestValue - the message ID of the search that 
-      included the original clientUpdate control 
-    
-   The server responds immediately with a stopClientUpdateResponse 
-   extended operation that carries no data, and an OBJECT IDENTIFIER of 
-   stopClientUpdateResponseOID (to be assigned).  The server MAY send 
-   any pending SearchResultEntry PDUs if the server cannot easily abort 
-   or remove those search results from its outgoing queue.  The server 
-   SHOULD send as few of these remaining SearchResultEntry PDUs as 
-   possible.  Finally, the server sends the message SearchResultDone 
-   with the clientUpdateDone control attached.  The value of the reason 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002             8 
-\f
-
-
-   in the clientUpdateDone control value MUST be either an error code 
-   (some value other than lcupSuccess) or lcupClientDisconnect.  The 
-   stopClientUpdateResponse is sent only to satisfy LDAP requirement 
-   that every server must issue an extended response for each extended 
-   request it receives. 
+   data, it issues an LDAP Cancel operation [CANCEL].  The server 
+   responds immediately with a LDAP Cancel response [CANCEL].  The 
+   server MAY send any pending SearchResultEntry PDUs if the server 
+   cannot easily abort or remove those search results from its outgoing 
+   queue.  The server SHOULD send as few of these remaining 
+   SearchResultEntry PDUs as possible.  Finally, the server sends the 
+   message SearchResultDone with the clientUpdateDone control attached. 
     
    If the client is not interested in the state information, it can 
    simply abandon the search operation or disconnect from the server. 
     
-   The requestName portion of the stopClientUpdate must be the 
-   OID stopClientUpdateOID (to be assigned).  The requestValue is the 
-   message ID corresponding to the client's search request.  If the 
-   message ID is not valid, the server MUST send back to the client an 
-   LDAP error code of unwillingToPerform. 
-                                                         
 4.8     Protocol Flow 
  
    The client server interaction can proceed in three different ways 
@@ -497,6 +408,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002             8
    actions in response to directory modifications, the protocol 
    proceeds as follows: 
     
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002        7 
+\f
+
+
     C->S   Sends a search operation with a clientUpdate control attached. 
            The search specification determines the part of the DIT the 
            client wishes to synchronize with and the set of attributes it 
@@ -512,36 +428,27 @@ Megginson, et. al. Proposed Standard - Expires: May 2002             8
     *S->C  If the server starts to run out of resources or the client is 
            suspected of malicious actions, the server SHOULD terminate 
            the search operation by sending to the client a 
-           SearchResultDone message with clientUpdateDone control 
-           attached. The control contains the reason field set to 
-           lcupResourcesExhausted or lcupSecurityViolation depending on 
-           the reason for termination. The server MAY provide more 
-           details to the client via the reasonText field of the control. 
+           SearchResultDone message with optional clientUpdateDone 
+           control attached. The resultCode in the SearchResultDone 
+           mesasge SHOULD be set to lcupResourcesExhausted or 
+           lcupSecurityViolation depending on the reason for termination. 
     *C->S  If the client receives lcupResourcesExhausted error from the 
            server, it MUST wait for a while before attempting another 
            synchronization session with the server. It is RECOMMENDED 
            that clients use an exponential backoff strategy. 
     C->S   The client terminates the search.  The client can do this by 
            abandoning the search operation, disconnecting from the 
-           server, or by sending the stopClientUpdate extended operation. 
-    *S->C  If the server receives the stopClientUpdate extended op, it 
-           will immediately send back the stopClientUpdate extended op 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002             9 
-\f
-
-
-           response 
-    *S->C  If the client sent the stopClientUpdate extended op, the 
-           server MAY send any pending SearchResultEntry PDUs in its 
-           outgoing queue 
-    *S->C  If the client sent the stopClientUpdate extended op, after the 
-           server sends the response and any pending SearchResultEntry 
-           PDUs, the server sends the SearchResultDone message with the 
-           clientUpdateDone control attached.  The value of the reason 
-           field of the clientUpdateDone control value will be either 
-           lcupClientDisconnect or some lcup error code (not 
-           lcupSuccess). 
+           server, or by sending an LDAP Cancel operation. 
+    *S->C  If the server receives the LDAP Cancel op, it will immediately 
+           send back the LDAP Cancel response 
+    *S->C  If the server sent the LDAP Cancel response, the server MAY 
+           send any pending SearchResultEntry PDUs in its outgoing queue 
+    *S->C  If the server sent the LDAP Cancel response, after the server 
+           sends the response and any pending SearchResultEntry PDUs, the 
+           server sends the SearchResultDone message with the 
+           clientUpdateDone control attached.  The resultCode in the 
+           SearchResultDone message will be either lcupClientDisconnect 
+           or some LDAP error code (not success). 
     S->C   Stops sending changes to the client and closes the connection. 
     
    If the client's intent is to synchronize with the server and then 
@@ -560,6 +467,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002             9
           use that scheme throughout the duration of the LCUP session or 
           until an LCUP boundary is crossed, since the server will 
           usually require a different cookie in that case anyway. (Note 
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002        8 
+\f
+
+
           that the client can synchronize with different servers during 
           different synchronization sessions.) The updateType field of 
           the control value is set to synchronizeOnly. 
@@ -572,25 +484,17 @@ Megginson, et. al. Proposed Standard - Expires: May 2002             9
           data that matches the client's search specification followed 
           by the SearchResultDone message with a clientUpdateDone 
           control attached. The control contains the cookie that 
-          corresponds to the current state of the client's data and the 
-          reason flag set to lcupSuccess. 
+          corresponds to the current state of the client's data.  If 
+          synchronization was successful, the resultCode in the 
+          SearchResultDone message should be success. 
     *S->C If an invalid cookie is specified, the server sends the 
-          SearchResultDone message with clientUpdateDone control 
-          attached. The reason field of the control is set to 
-          lcupInvalidCookie and the reasonText field MAY contain 
-          explanation of the error. 
+          SearchResultDone message with the resultCode set to  
+          lcupInvalidCookie. 
     *S->C If a valid cookie is specified and the data that matches the 
           search specification has been reloaded or the server does not 
           contain enough state information to synchronize the client, 
-          the server sends a SearchResultDone message with 
-          clientUpdateDone control attached. The reason field of the 
-          control is set to lcupReloadRequired and the reasonText field 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002            10 
-\f
-
-
-          MAY contain explanation of the error. 
+          the server sends a SearchResultDone message with the 
+          resultCode set to lcupReloadRequired. 
     *S->C If the cookie is valid and the client is up to date, the 
           server sends a success response to the client. 
     S->C  If the cookie is valid and there is data to be sent, the 
@@ -604,21 +508,29 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            10
           of the client's data. In that case, the cookie field of the 
           control represents the state of the client's data including 
           the entry to which the control is attached. Once all the 
-          changes are sent, the server sends a SearchResultDone with the 
-          clientUpdateDone control attached. The control contains the 
-          cookie that represents the current state of the client's data. 
-          The reason field of the control is set to lcupSuccess. 
+          changes are sent successfully, the server sends a 
+          SearchResultDone with the clientUpdateDone control attached. 
+          The control contains the cookie that represents the current 
+          state of the client's data. The resultCode in the 
+          SearchResultDone message is set to success.  If the resultCode 
+          is not success, the server may OPTIONALLY attach the 
+          clientUpdateDone control to the SearchResultDone message. 
           The client stores the cookie received from the server until 
           the next synchronization session. 
-    *C->S If the reason field of the control is set lcupReloadRequired, 
-          the client clears its data store and repeats the 
-          synchronization process by sending the search operation wit
-          clientUpdate control that contains no cookie, or that contains 
-          a cookie with no value field. 
+    *C->S If the resultCode in the SearchResultDone message is set 
+          lcupReloadRequired, the client clears its data store and 
+          repeats the synchronization process by sending the searc
+          operation with clientUpdate control that contains no cookie, 
+          or that contains a cookie with no value field. 
     
    If the client's intent is to be synchronized with the server and 
    stay notified about data modifications, the protocol proceeds as 
    follows: 
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002        9 
+\f
+
+
     
     C->S  The client behaves exactly as in the previous case except it 
           sets the updateType field in the control value to 
@@ -631,30 +543,24 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            10
     *S->C If the server starts to run out of resources or the client is 
           suspected of malicious actions, the server SHOULD terminate 
           the search operation by sending to the client a 
-          SearchResultDone message with clientUpdateDone control 
-          attached. The control contains the reason field set to 
+          SearchResultDone message with the resultCode set to 
           lcupResourcesExhausted or lcupSecurityViolation depending on 
-          the reason for termination. The server MAY provide more 
-          details to the client via the reasonText field of the control. 
+          the reason for termination. 
     *C->S If the client receives lcupResourcesExhausted error from the 
           server, it MUST wait for a while before attempting another 
           synchronization session with the server. We recommend 
           exponential backoff strategy. 
-    C->S  Sends a stopClientUpdateRequest extended operation to the 
-          server to terminate the synchronization session. 
-    S->C  Responds with a stopClientUpdateResponse extended operation 
-          followed by a SearchResultDone with the clientUpdateDone 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002            11 
-\f
-
-
-          control optionally attached. If present, the control contains 
-          the cookie that represents the current state of the client's 
-          data.  The value of the reason field of the clientUpdateDone 
-          control value will be either lcupClientDisconnect or some lcup 
-          error code (not lcupSuccess).  The control may not be present 
-          if some error occurred. 
+    C->S  Sends an LDAP Cancel operation to the server to terminate the 
+          synchronization session. 
+    S->C  Responds with an LDAP Cancel response, followed optionally by 
+          SearchResultEntry PDUs, followed by a SearchResultDone with 
+          the clientUpdateDone control optionally attached. If the 
+          control is present, it contains the cookie that represents the 
+          current state of the client's data.  The value of the 
+          resultCode in the SearchResultDone message will be either 
+          lcupClientDisconnect or some other LDAPResult resultCode (not 
+          success).  The control may not be present if some error 
+          occurred. 
  
 4.9     Size and Time Limits 
  
@@ -667,17 +573,36 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            11
     
 4.10    Changes vs. Operations 
  
-   The server sends to the client modified entries rather than 
-   operations.  Given this model, the server communicates a modifyDN 
-   operation in one of two ways: by sending the client the current form 
-   of the entry (with its new DN) along with an entryUUID attribute, or 
-   by sending the client a deletion for the previous DN and an entry 
-   for the new DN.  The latter method must be used if the server does 
-   not support the entryUUID attribute.  In either case, if the client 
-   state shows that the object that underwent the modifyDN operation 
-   was the root of a subtree, the client MUST infer that the DNs of all 
-   objects in the subtree have changed such that they reflect the new 
-   DN of the subtree root. 
+   A server that supports UUIDs SHOULD communicate a modifyDN  
+   operation by sending the client the current form of the entry (with 
+   its new DN) along with an entryUUID attribute. A server that does 
+   not support UUIDs SHOULD communicate a modifyDN operation by sending 
+   the client a deletion for the previous DN followed by an entry for 
+   the new DN. Note that for servers that do not support UUIDs, no 
+   guarantees are made about the correctness of the client state in the 
+   presence of modifyDN operations. 
+    
+   Communicating modifyDN operations by sending a delete of the old DN 
+   followed by an entry with the new DN makes it impossible for an LCUP 
+   client to distinguish between a modifyDN operation, which is one 
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002       10 
+\f
+
+
+   atomic operation, and an delete operation followed by an add of a 
+   new entry.  The loss of information about atomicity may cause 
+   problems for some LCUP clients. For example, when an entry is 
+   renamed, a client that manages resources such as a person's mailbox 
+   might delete the mailbox and everything in it instead of merely 
+   changing the name associated with the mailbox. 
+    
+   Also note that regardless of how a modifyDN operation is 
+   communicated to the client, if the client state shows that the 
+   object that underwent the modifyDN operation was the root of a 
+   subtree, the client MUST infer that the DNs of all objects in the 
+   subtree have changed such that they reflect the new DN of the 
+   subtree root. 
     
 4.11    Operations on the Same Connection 
  
@@ -702,12 +627,6 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            11
     
 5.      Additional Features 
  
-
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002            12 
-\f
-
-
    There are several features present in other protocols or considered 
    useful by clients that are currently not included in the protocol 
    primarily because they are difficult to implement on the server. 
@@ -725,6 +644,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            12
       search at the time the operation is being performed, 
       - enteredSet: the entry entered the result, 
       - leftSet: the entry left the result, 
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002       11 
+\f
+
+
       - modified: the entry was part of the result set, was modified or 
       renamed, and still is in the result set." 
     
@@ -754,19 +678,13 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            12
    For LCUP, the intention is full synchronization, not partial.  Each 
    entry returned by an LCUP search will have some change associated 
    with it that may concern the client.  The client may have to have a 
-   local index of entries by DN or unique identifier to determine if 
-   the entry has been added or just modified.  It is easy for clients 
-   to determine if the entry has been deleted because the entryDeleted 
-   value of the entryUpdateControl will be TRUE. 
+   local index of entries by DN or UUID to determine if the entry has 
+   been added or just modified.  It is easy for clients to determine if 
+   the entry has been deleted because the entryDeleted value of the 
+   entryUpdateControl will be TRUE. 
     
 5.3     Sending Changes 
                  
-
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002            13 
-\f
-
-
    Some earlier synchronization protocols sent the client(s) only the 
    modified attributes of the entry rather than the entire entry. While 
    this approach can significantly reduce the amount of data returned 
@@ -785,6 +703,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            13
    the client has the previous version of the data and can perform 
    value by value comparisons. 
  
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002       12 
+\f
+
+
 5.4     Data Size Limits 
                   
    Some earlier synchronization protocols allowed clients to control 
@@ -794,9 +717,9 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            13
    already provides the means for the client to specify the size limit 
    by setting the sizeLimit field in the SearchRequest to the maximum 
    number of entries the client is willing to receive. While the 
-   granularity is not the same, the assumption is that LCUP protocol 
-   will be implemented by regular LDAP clients that can deal with the 
-   limitations of the LDAP protocol
+   granularity is not the same, the assumption is that regular LDAP 
+   clients that can deal with the limitations of the LDAP protocol will 
+   implement LCUP
  
 5.5     Data Ordering 
  
@@ -810,87 +733,114 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            13
  
 6.      Client Side Considerations 
  
-   There are several issues that the implementors of a synchronization 
-   client need to consider: 
-    
-    - The cookie received from the server after a synchronization 
-      session can only be used with the same or more restrictive search 
-      specification than the search that generated the cookie. The 
-      server will reject the search operation with a cookie that does 
-      not satisfy this condition. This is because the client can end up 
-      with an incomplete data store otherwise. A more restrictive 
-      search specification is the one that generates a subset of the 
-      data produced by the original search specification.  
+   Clients SHOULD always specify entryUUID in the SearchRequest 
+   attribute list. 
+    
+   The cookie received from the server after a synchronization session 
+   can only be used with the same or more restrictive search 
+   specification than the search that generated the cookie. The server 
+   will reject the search operation with a cookie that does not satisfy 
+   this condition. This is because the client can end up with an 
+   incomplete data store otherwise. A more restrictive search 
+   specification is the one that generates a subset of the data 
+   produced by the original search specification.  
+    
+   Because an LCUP client specifies the area of the tree with which it 
+   wishes to synchronize through the standard LDAP search 
+   specification, the client can be returned noSuchObject error if the 
+   root of the synchronization area was renamed between the 
+   synchronization sessions or during a synchronization session. If 
+   this condition occurs, the client can attempt to locate the root by 
+   using the root's UUID saved in client's local data store. It then 
+   can repeat the synchronization request using the new search base. In 
+   general, a client can detect that an entry was renamed and apply the 
+   changes received to the right entry by using the UUID rather than DN 
+   based addressing. 
+    
+   Each active persistent operation requires that an open TCP 
+   connection be maintained between an LDAP client and an LDAP server 
+   that might not otherwise be kept open.  Therefore, client 
+   implementors are encouraged to avoid using persistent operations for 
+   non-essential tasks and to close idle LDAP connections as soon as 
   
-Megginson, et. al. Proposed Standard - Expires: May 2002            14 
+Megginson, et. al. Proposed Standard - Expires: December 2002       13 
 \f
 
 
-     
-    - Because an LCUP client specifies the area of the tree with which 
-      it wishes to synchronize through the standard LDAP search 
-      specification, the client can be returned noSuchObject error if 
-      the root of the synchronization area was renamed between the 
-      synchronization sessions or during a synchronization session. If 
-      this condition occurs, the client can attempt to locate the root 
-      by using the root's Unique Identifier saved in client's local 
-      data store. It then can repeat the synchronization request using 
-      the new search base. In general, a client can detect that an 
-      entry was renamed and apply the changes received to the right 
-      entry by using the Unique Identifier rather then DN based 
-      addressing. 
-     
-    - Each active persistent operation requires that an open TCP 
-      connection be maintained between an LDAP client and an LDAP 
-      server that might not otherwise be kept open.  Therefore, client 
-      implementors are encouraged to avoid using persistent operations 
-      for non-essential tasks and to close idle LDAP connections as 
-      soon as practical.  The server may close connections if server 
-      resources become tight. 
-     - The client MAY receive a continuation reference 
-      (SearchResultReference [RFC2251 SECTION 4.5.3]) if the search 
-      request spans multiple parts of the DIT, some of which may 
-      require a different LCUP cookie, some of which may not even be 
-      managed by LCUP.  The client SHOULD maintain a cache of the LDAP 
-      URLs returned in the continuation references and the cookies 
-      associated with them.  The client is responsible for performing 
-      another LCUP search to follow the references, and SHOULD use the 
-      cookie corresponding to the LDAP URL for that reference (if it 
-      has a cookie). 
-     - For alias dereferencing, the server will behave as if the client 
-      had requested neverDerefAliases or derefFindingBaseObj as th
-      derefAliases field in the search request [RFC2251, Section 
-      4.5.1].  If the client specifies a value other than 
-      neverDerefAliases or derefFindingBaseObj, the server will return 
-      protocolError to the client. 
-      
-     - Changes to data (e.g., that might affect the LCUP client's 
-      filter or scope) or meta-data (e.g., that might affect the 
-      client's read access) may affect the presence of entries in the 
-      search set.  Servers MAY notify LCUP clients of changes to the 
-      search set that result from such changes, but an LCUP client MUST 
-      NOT assume that such notification will occur.  Therefore, in the 
-      case where a client is maintaining a cache of entries using LCUP, 
-      the data held by the client may be a superset or a subset of the 
-      entries that would be returned by a new search request.  For 
-      example, if access control meta information is changed to deny 
-      access to particular entries in the search result set, and the 
-      access control information is outside of the search scope (e.g., 
-      in a parent entry), the client may have entries stored locally 
-      which are no longer part of its desired search set.  Similarly, 
+   practical.  The server may close connections if server resources 
+   become tight. 
+    
+   The client MAY receive a continuation reference 
+   (SearchResultReference [RFC2251 SECTION 4.5.3]) if the search 
+   request spans multiple parts of the DIT, some of which may require a 
+   different LCUP cookie, some of which may not even be managed by 
+   LCUP.  The client SHOULD maintain a cache of the LDAP URLs returned 
+   in the continuation references and the cookies associated with them.  
+   The client is responsible for performing another LCUP search to 
+   follow the references, and SHOULD use the cookie corresponding to 
+   the LDAP URL for that reference (if it has a cookie). 
+    
+   The client may receive a referral (Referral [RFC2251 SECTION 
+   4.1.11]) when the search base is a subordinate reference, and this 
+   will end the operation. 
+    
+   For alias dereferencing, the server will behave as if the client had 
+   requested neverDerefAliases or derefFindingBaseObj as the 
+   derefAliases field in the search request [RFC2251, Section 4.5.1].  
+   If the client specifies a value other than neverDerefAliases or 
+   derefFindingBaseObj, the server will return protocolError to the 
+   client. 
+    
+   Changes to data (e.g., that might affect the LCUP client's filter or 
+   scope) or meta-data (e.g., that might affect the client's read 
+   access) may affect the presence of entries in the search set.  
+   Servers MAY notify LCUP clients of changes to the search set that 
+   result from such changes, but an LCUP client MUST NOT assume that 
+   such notification will occur.  Therefore, in the case where a client 
+   is maintaining a cache of entries using LCUP, the data held by the 
+   client may be a superset or a subset of the entries that would be 
+   returned by a new search request.  For example, if access control 
+   meta information is changed to deny access to particular entries in 
+   the search result set, and the access control information is outsid
+   of the search scope (e.g., in a parent entry), the client may have 
+   entries stored locally which are no longer part of its desired 
+   search set.  Similarly, if entries are added to the search result 
+   set due to changes in meta-data, the client's cache of entries may 
+   not include these entries. 
+    
+   Some clients may wish to perform an initial synchronization in order 
+   to prime a cache or establish a baseline set of entries, then look 
+   for changes after that.  The recommended way to do this is to first 
+   issue an LCUP search with the updateType field of the clientUpdate 
+   control value set to synchronizeOnly, then after that search 
+   successfully completes, immediately issue an LCUP search with the 
+   updateType field of the clientUpdate control value set to 
+   synchronizeAndPersist. 
+    
+   Some clients may have unreliable connections, for example, a 
+   wireless device or a WAN connection.  These clients may want to 
+   insure that the cookie is returned often in the entryUpdate control 
+   value, so that if they have to reconnect, they do not have to 
   
-Megginson, et. al. Proposed Standard - Expires: May 2002            15 
+Megginson, et. al. Proposed Standard - Expires: December 2002       14 
 \f
 
 
-      if entries are added to the search result set due to changes in 
-      meta-data, the client's cache of entries may not include these 
-      entries. 
+   process many redundant entries.  These clients should set the 
+   sendCookieInterval in the clientUpdate control value to a low 
+   number, perhaps even 1.  Also, some clients may have a limited 
+   bandwidth connection, and may not want to receive the cookie very 
+   often, or even at all (however, the cookie is always sent back in 
+   the clientUpdateDone control value upon successful completion).  
+   These clients should set the sendCookieInterval in the clientUpdate 
+   control value to a high number. 
  
 7.      Server Implementation Considerations 
  
+   Servers SHOULD support UUIDs.  Otherwise, it will be very difficult 
+   to support modifyDN operations.  Adding support for UUIDs should be 
+   seen as a necessary component of LCUP. 
+    
    By design, the protocol supports multiple cookie schemes.  This is 
    to allow different implementations the flexibility of storing any 
    information applicable to their environment. A reasonable 
@@ -930,6 +880,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            15
    their last modified CSN. This ordering guarantees that the RUV can 
    be updated after each entry is sent. 
     
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002       15 
+\f
+
+
    The server's DIT may be partitioned into different sections which 
    may have different cookies associated with them.  For example, some 
    servers may use some sort of replication mechanism to support LCUP.  
@@ -939,14 +894,9 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            15
    by LCUP and some may not.  A part of the DIT which is enabled for 
    LCUP is referred to as an LCUP Context.  The server SHOULD send a 
    SearchResultReference [RFC2251, SECTION 4.5.3] when the LCUP Context 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002            16 
-\f
-
-
    for a returned entry changes.  The server SHOULD return all entries 
    for a particular LCUP Context before returning a reference to other 
-   LCUP Contexts or non LCUP enabled parts of the DIT, in order to 
+   LCUP Contexts or non-LCUP enabled parts of the DIT, in order to 
    minimize the processing burden on the clients.  The LDAP URL(s) 
    returned MUST contain the DN(s) of the base of another section of 
    the DIT (however the server implementation has partitioned the DIT).  
@@ -988,6 +938,12 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            16
  
 8.      Synchronizing Heterogeneous Data Stores 
  
+
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002       16 
+\f
+
+
    Clients, like a meta directory join engine, synchronizing multiple 
    writable data stores will only work correctly if each piece of 
    information is single mastered (for instance, only by an LDUP 
@@ -998,11 +954,6 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            16
    converging. 
     
 9.      Security Considerations 
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002            17 
-\f
-
-
  
    In some situations, it may be important to prevent general exposure 
    of information about changes that occur in an LDAP server.  
@@ -1032,7 +983,7 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            17
    a less restrictive search specification. See Client Side 
    Considerations Section for more detailed explanation of the problem. 
  
-10.     References 
+10.     Normative References 
  
    [KEYWORDS]    S. Bradner, "Keywords for use in RFCs to Indicate 
                  Requirement Levels", RFC 2119, March 1997. 
@@ -1044,6 +995,14 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            17
                 Directory Access Protocol (v3): Attribute Syntax 
                 Definitions", RFC 2252, December 1997. 
     
+   [CANCEL]     K. Zeilenga, "LDAP Cancel Extended Operation", 
+                draft-zeilenga-ldap-cancel-xx.txt, a work in progress. 
+    
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002       17 
+\f
+
+
 11.     Acknowledgements 
     
    The LCUP protocol is based in part on the Persistent Search Change 
@@ -1057,11 +1016,6 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            17
    Rich Megginson 
    Netscape Communications Corp. 
    901 San Antonio Rd.  
-  
-Megginson, et. al. Proposed Standard - Expires: May 2002            18 
-\f
-
-
    Palo Alto, CA  94303-4900  
    Mail Stop SCA17 - 201 
    Phone: +1 505 797-7762 
@@ -1073,7 +1027,7 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            18
    Sunnyvale, CA 94089 
    Phone: +1 408 349-6153 
    Email: olgan@yahoo-inc.com 
-    
+                           
    Mark Smith 
    Netscape Communications Corp. 
    901 San Antonio Rd.  
@@ -1103,6 +1057,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            18
    developing Internet standards in which case the procedures for 
    copyrights defined in the Internet Standards process must be 
    followed, or as required to translate it into languages other than 
+  
+Megginson, et. al. Proposed Standard - Expires: December 2002       18 
+\f
+
+
    English. 
     
    The limited permissions granted above are perpetual and will not be 
@@ -1116,8 +1075,49 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            18
    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
     
 14.     Appendix A - Summary of Changes 
+   Changes new to version 03: 
+    
+     Emphasized the use of UUIDs throughout the document.  Implementers 
+     are strongly encouraged to use UUIDs as a necessary component of 
+     the protocol. 
+      
+     Removed the LCUP Cancel extended operation in favor of the new 
+     LDAP Cancel operation [CANCEL]. 
+      
+     Got rid of the lcupSuccess result code.  All result codes will be 
+     added to the IANA LDAP result code registry as part of the LDAP 
+     standard.  Also removed the result code and text from the client 
+     update done control value. 
+      
+     Changed any and all wording suggesting an LCUP Context is related 
+     to a naming context.  New text says an LCUP Context is a part of 
+     the DIT that supports LCUP, and that a server may have one or more 
+     LCUP Contexts. 
+      
+     Removed Old Section 4.2: lcupCookieScheme 
+     We decided that LCUP did not need a discovery mechanism.  The 
+     controls and extended operations will be published in the root DSE 
+     as per the LDAP standards. 
+      
+     Changed references to "Unique Identifier" to either "Universally 
+     Unique Identifier" or "UUID". 
+      
+     Added this text to section 6 "Client Side Considerations": 
+     "- The client may receive a referral (Referral [RFC2251 SECTION 
+      4.1.11]) when the search base is a subordinate reference, and 
+      this will end the operation." 
+      
+     Added a note to section 6 "Client Side Considerations" about how 
+     to establish a baseline set of entries or entry cache. 
+      
+     Added the field sendCookieInterval to the clientUpdate control 
+     value. 
+      
+     Added a note to section 6 "Client Side Considerations" explaining 
+     possible uses of the sendCookieInterval. 
   
-Megginson, et. al. Proposed Standard - Expires: May 2002            19 
+Megginson, et. al. Proposed Standard - Expires: December 2002       19 
 \f
 
 
@@ -1176,7 +1176,7 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            19
      4.2 describes the new cookie format and defines the LCUP Cookie 
      Value. 
   
-Megginson, et. al. Proposed Standard - Expires: May 2002            20 
+Megginson, et. al. Proposed Standard - Expires: December 2002       20 
 \f
 
 
@@ -1235,7 +1235,7 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            20
     containing the message id of the operation to stop. 
      
   
-Megginson, et. al. Proposed Standard - Expires: May 2002            21 
+Megginson, et. al. Proposed Standard - Expires: December 2002       21 
 \f
 
 
@@ -1294,5 +1294,5 @@ Megginson, et. al. Proposed Standard - Expires: May 2002            21
 
 
   
-Megginson, et. al. Proposed Standard - Expires: May 2002            22 
+Megginson, et. al. Proposed Standard - Expires: December 2002       22 
 \f
\ No newline at end of file
index 1969b20cc37e8cebe9f39de1f80bee9123e3ba23..35f820d819bc6628f72b64d7e44d2081b6ae6382 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAPDELETE 1 "20 August 2001" "OpenLDAP LDVERSION"
+.TH LDAPDELETE 1 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 139753363277a7a1d0f0658884a00e6c5d5e949c..64808e62ebc2de195e334b4d666caa8c826878ab 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAPMODIFY 1 "20 August 2001" "OpenLDAP LDVERSION"
+.TH LDAPMODIFY 1 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 8468e7a4e59032df9ed36e314f08d19fa9b41990..74d0ac8341b38012c73aef66066aa0034c3cc294 100644 (file)
@@ -1,20 +1,63 @@
-.TH LDAPMODRDN 1 "13 November 1995" "U-M LDAP LDVERSION"
+.TH LDAPMODRDN 1 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
-ldapmodrdn \- ldap modify entry RDN tool
+ldapmodrdn \- LDAP rename entry tool
 .SH SYNOPSIS
 .B ldapmodrdn
-.B [\-r]
-.B [\-n]
-.B [\-v]
-.B [\-k]
-.B [\-K]
-.B [\-c]
-.B [\-d debuglevel]
-.B [\-D binddn]
-.B [\-w passwd]
-.B [\-h ldaphost]
-.B [\-p ldapport]
-.B [\-f file] [dn rdn]
+[\c
+.BR \-r ]
+[\c
+.BR \-n ]
+[\c
+.BR \-v ]
+[\c
+.BR \-k ]
+[\c
+.BR \-K ]
+[\c
+.BR \-c ]
+[\c
+.BR \-C ]
+[\c
+.BR \-M[M] ]
+[\c
+.BI \-d \ debuglevel\fR]
+[\c
+.BI \-D \ binddn\fR]
+[\c
+.BR \-W ]
+[\c
+.BI \-w \ passwd\fR]
+[\c
+.BI \-H \ ldapuri\fR]
+[\c
+.BI \-h \ ldaphost\fR]
+[\c
+.BI \-p \ ldapport\fR]
+[\c
+.BI \-P \ 2\fR\||\|\fI3\fR]
+[\c
+.BR \-O \ security-properties ]
+[\c
+.BR \-I ]
+[\c
+.BR \-Q ]
+[\c
+.BI \-U \ authcid\fR]
+[\c
+.BR \-x ]
+[\c
+.BI \-X \ authzid\fR]
+[\c
+.BI \-Y \ mech\fR]
+[\c
+.BR \-Z[Z] ]
+[\c
+.BI \-f \ file\fR]
+[\c
+.I dn  rdn\fR]
 .SH DESCRIPTION
 .B ldapmodrdn
 is a shell-accessible interface to the
@@ -41,21 +84,29 @@ debugging in conjunction with -v.
 Use verbose mode, with many diagnostics written to standard output.
 .TP
 .B \-k
-Use Kerberos authentication instead of simple authentication.  It is
+Use Kerberos IV authentication instead of simple authentication.  It is
 assumed that you already have a valid ticket granting ticket.
 .B ldapmodrdn
-must be compiled with KERBEROS defined for this option to have effect.
+must be compiled with Kerberos support for this option to have effect.
 .TP
 .B \-K
-Same as \-k, but only does step 1 of the kerberos bind.  This is useful
+Same as \-k, but only does step 1 of the Kerberos IV bind.  This is useful
 when connecting to a slapd and there is no x500dsa.hostname principal
-registered with your kerberos servers.
+registered with your Kerberos Domain Controller(s).
+.TP
+.B \-C
+Automatically chase referrals.
 .TP
 .B \-c
 Continuous operation mode.  Errors  are  reported,  but ldapmodify
 will  continue  with  modifications.   The default is to exit after
 reporting an error.
 .TP
+.B \-M[M]
+Enable manage DSA IT control.
+.B \-MM
+makes control critical.
+.TP
 .B \-d debuglevel
 Set the LDAP debugging level to \fIdebuglevel\fP.
 .B ldapmodrdn
@@ -66,18 +117,65 @@ compiled with LDAP_DEBUG defined for this option to have any effect.
 Read the entry modification information from \fIfile\fP instead of from
 standard input or the command-line.
 .TP
+.B \-x 
+Use simple authentication instead of SASL.
+.TP
 .B \-D binddn
-Use \fIbinddn\fP to bind to the X.500 directory. \fIbinddn\fP should be
-a string-represented DN as defined in RFC 1779.
+Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory.
+.TP
+.B \-W
+Prompt for simple authentication.
+This is used instead of specifying the password on the command line.
 .TP
 .B \-w passwd
 Use \fIpasswd\fP as the password for simple authentication.
 .TP
-.B \-h ldaphost
+.BI \-H \ ldapuri
+Specify URI(s) referring to the ldap server(s).
+.TP
+.BI \-h \ ldaphost
 Specify an alternate host on which the ldap server is running.
+Deprecated in favor of -H.
 .TP
-.B \-p ldapport
+.BI \-p \ ldapport
 Specify an alternate TCP port where the ldap server is listening.
+Deprecated in favor of -H.
+.TP
+.BI \-P \ 2\fR\||\|\fI3
+Specify the LDAP protocol version to use.
+.TP
+.BI \-O \ security-properties
+Specify SASL security properties.
+.TP
+.B \-I
+Enable SASL Interactive mode.  Always prompt.  Default is to prompt
+only as needed.
+.TP
+.B \-Q
+Enable SASL Quiet mode.  Never prompt.
+.TP
+.BI \-U \ authcid
+Specify the authentication ID for SASL bind. The form of the ID
+depends on the actual SASL mechanism used.
+.TP
+.BI \-X \ authzid
+Specify the requested authorization ID for SASL bind.
+.I authzid
+must be one of the following formats:
+.B dn:\c
+.I <distinguished name>
+or
+.B u:\c
+.I <username>
+.TP
+.BI \-Y \ mech
+Specify the SASL mechanism to be used for authentication. If it's not
+specified, the program will choose the best mechanism the server knows.
+.TP
+.B \-Z[Z]
+Issue StartTLS (Transport Layer Security) extended operation. If you use
+.B \-ZZ\c
+, the command will require the operation to be successful.
 .SH INPUT FORMAT
 If the command-line arguments \fIdn\fP and \fIrdn\fP are given, \fIrdn\fP
 will replace the RDN of the entry specified by the DN, \fIdn\fP.
@@ -99,7 +197,7 @@ Assuming that the file
 exists and has the contents:
 .LP
 .nf
-    cn=Modify Me, o=University of Michigan, c=US
+    cn=Modify Me,dc=example,dc=com
     cn=The New Me
 .fi
 .LP
@@ -120,13 +218,13 @@ status and a diagnostic message being written to standard error.
 .BR ldapdelete (1),
 .BR ldapmodify (1),
 .BR ldapsearch (1),
+.BR ldap.conf (5),
 .BR ldap (3),
 .BR ldap_modrdn2 (3)
-.LP
-Kille, S.,
-.IR "A String Representation of Distinguished Names",
-.SM RFC
-1779,
-ISODE Consortium, March 1995.
-.SH BUGS
-There is no interactive mode, but there probably should be.
+.SH AUTHOR
+The OpenLDAP Project <http://www.openldap.org/>
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index a23f875c513505ac1e03d3c9dd381e5289d7a92b..208f878ccedfa569acb92155851bd150b8e45efc 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAPPASSWD 1 "20 August 2001" "OpenLDAP LDVERSION"
+.TH LDAPPASSWD 1 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 2d66334d8029e5f9ffaeda0490a518c275cec81c..c5f43afa9cea3d7eeb8bf3f3ae53d2f74e605834 100644 (file)
@@ -1,32 +1,78 @@
-.TH LDAPSEARCH 1 "29 March 1996" "U-M LDAP LDVERSION"
+.TH LDAPSEARCH 1 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
-ldapsearch \- ldap search tool
+ldapsearch \- LDAP search tool
 .SH SYNOPSIS
 .B ldapsearch
-.B [\-n]
-.B [\-u]
-.B [\-v]
-.B [\-k]
-.B [\-K]
-.B [\-t]
-.B [\-A]
-.B [\-B]
-.B [\-L]
-.B [\-R]
-.B [\-d debuglevel]
-.B [\-F sep]
-.B [\-f file]
-.B [\-D binddn]
-.B [\-w bindpasswd]
-.B [\-h ldaphost]
-.B [\-p ldapport]
-.B [\-b searchbase]
-.B [\-s scope ]
-.B [\-a deref]
-.B [\-l time limit]
-.B [\-z size limit]
-.B filter
-.B [attrs....]
+[\c
+.BR \-n ]
+[\c
+.BR \-u ]
+[\c
+.BR \-v ]
+[\c
+.BR \-k ]
+[\c
+.BR \-K ]
+[\c
+.BR \-t ]
+[\c
+.BR \-A ]
+[\c
+.BR \-C ]
+[\c
+.BR \-L[L[L]] ]
+[\c
+.BR \-M[M] ]
+[\c
+.BI \-d \ debuglevel\fR]
+[\c
+.BI \-f \ file\fR]
+[\c
+.BI \-D \ binddn\fR]
+[\c
+.BR \-W ]
+[\c
+.BI \-w \ bindpasswd\fR]
+[\c
+.BI \-H \ ldapuri\fR]
+[\c
+.BI \-h \ ldaphost\fR]
+[\c
+.BI \-p \ ldapport\fR]
+[\c
+.BI \-P \ 2\fR\||\|\fI3\fR]
+[\c
+.BI \-b \ searchbase\fR]
+[\c
+.BI \-s \ base\fR\||\|\fIone\fR\||\|\fIsub\fR]
+[\c
+.BI \-a \ never\fR\||\|\fIalways\fR\||\|\fIsearch\fR\||\|\fIfind\fR]
+[\c
+.BI \-l \ timelimit\fR]
+[\c
+.BI \-z \ sizelimit\fR]
+[\c
+.BR \-O \ security-properties ]
+[\c
+.BR \-I ]
+[\c
+.BR \-Q ]
+[\c
+.BI \-U \ authcid\fR]
+[\c
+.BR \-x ]
+[\c
+.BI \-X \ authzid\fR]
+[\c
+.BI \-Y \ mech\fR]
+[\c
+.BR \-Z[Z] ]
+.I filter
+[\c
+.IR attrs... ]
 .SH DESCRIPTION
 .I ldapsearch
 is a shell-accessible interface to the
@@ -35,15 +81,16 @@ library call.
 .LP
 .B ldapsearch
 opens a connection to an LDAP server, binds, and performs a search
-using the filter \fIfilter\fP.  The \fIfilter\fP should conform to
-the string representation for LDAP filters as defined in RFC 1558.
+using specified parameters.   The \fIfilter\fP should conform to
+the string representation for search filters as defined in RFC 2254.
+If not provided, the default filter, (objectClass=*), is used.
 .LP
 If
-.B ldapsearch
-finds one or more entries, the attributes specified by
-\fIattrs\fP are retrieved and the entries and values are printed to
-standard output.  If no \fIattrs\fP are listed, all attributes are
-returned.
+.B ldapsearch finds one or more entries, the attributes specified by
+\fIattrs\fP are returned.  If * is listed, all user attributes are
+returned.  If + is listed, all operational attributes are returned.
+If no \fIattrs\fP are listed, all user attributes are returned.  If only
+1.1 is listed, no attributes will be returned.
 .SH OPTIONS
 .TP
 .B \-n
@@ -51,21 +98,22 @@ Show what would be done, but don't actually perform the search.  Useful for
 debugging in conjunction with -v.
 .TP
 .B \-u
-Include the User Friendly form of the Distinguished Name (DN) in the output
+Include the User Friendly Name form of the Distinguished Name (DN)
+in the output.
 .TP
 .B \-v
-Run in verbose mode, with many diagnostics written to standard output
+Run in verbose mode, with many diagnostics written to standard output.
 .TP
 .B \-k
-Use Kerberos authentication instead of simple authentication.  It is
+Use Kerberos IV authentication instead of simple authentication.  It is
 assumed that you already have a valid ticket granting ticket.
 .B ldapsearch
-must be compiled with KERBEROS defined for this option to have any effect.
+must be compiled with Kerberos support for this option to have any effect.
 .TP
 .B \-K
-Same as \-k, but only does step 1 of the kerberos bind.  This is useful
+Same as \-k, but only does step 1 of the Kerberos IV bind.  This is useful
 when connecting to a slapd and there is no x500dsa.hostname principal
-registered with your kerberos servers.
+registered with your Kerberos Domain Controller(s).
 .TP
 .B \-t
 Write retrieved values to a set of temporary files.  This is useful for
@@ -76,29 +124,23 @@ Retrieve attributes only (no values).  This is useful when you just want to
 see if an attribute is present in an entry and are not interested in the
 specific values.
 .TP
-.B \-B
-Do not suppress display of non-ascii values.  This is useful when
-dealing with values that appear in alternate characters sets such as
-ISO-8859.1.  This option is implied by -L (see below).
-.TP
 .B \-L
-Display search results in
-.BR ldif (5)
-format.  This option also turns on the -B option, and causes the -F option
-to be ignored.
+Search results are display in LDAP Data Interchange Format detailed in
+.BR ldif (5).
+A single -L restricts the output to LDIFv1.
+A second -L disables comments.
+A third -L disables printing of the LDIF version.
+The default is to use an extended version of LDIF.
 .TP
-.B \-R
-Do not automatically follow referrals returned while searching.
-.B ldapsearch
-must be compiled with LDAP_REFERRALS defined for referrals to be
-automatically followed by default, and for this option to have any effect.
+.B \-M[M]
+Enable manage DSA IT control.
+.B \-MM
+makes control critical.
 .TP
-.B \-F sep
-Use \fIsep\fP as the field separator between attribute names and values.
-The default separator is `=', unless the -L flag has been specified, in
-which case this option is ignored.
+.B \-C
+Automatically chase referrals.
 .TP
-.B \-S attribute
+.BI \-S \ attribute
 Sort the entries returned based on \fIattribute\fP. The default is not
 to sort entries returned.  If \fIattribute\fP is a zero-length string (""),
 the entries are sorted by the components of their Distingished Name.  See
@@ -110,182 +152,249 @@ normally prints out entries as it receives them. The use of the
 option defeats this behavior, causing all entries to be retrieved,
 then sorted, then printed.
 .TP
-.B \-d debuglevel
+.BI \-d \ debuglevel
 Set the LDAP debugging level to \fIdebuglevel\fP.
 .B ldapsearch
 must be compiled with LDAP_DEBUG defined for this option to have any effect.
 .TP
-.B \-f file
+.BI \-f \ file
 Read a series of lines from \fIfile\fP, performing one LDAP search for
 each line.  In this case, the \fIfilter\fP given on the command line
 is treated as a pattern where the first occurrence of \fB%s\fP is
 replaced with a line from \fIfile\fP.  If \fIfile\fP is a single \fI-\fP
 character, then the lines are read from standard input.
 .TP
-.B \-D binddn
-Use \fIbinddn\fP to bind to the X.500 directory. \fIbinddn\fP should be
-a string-represented DN as defined in RFC 1779.
+.B \-x 
+Use simple authentication instead of SASL.
+.TP
+.BI \-D \ binddn
+Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory.
+.TP
+.B \-W
+Prompt for simple authentication.
+This is used instead of specifying the password on the command line.
 .TP
-.B \-w bindpasswd
+.BI \-w \ bindpasswd
 Use \fIbindpasswd\fP as the password for simple authentication.
 .TP
-.B \-h ldaphost
+.BI \-H \ ldapuri
+Specify URI(s) referring to the ldap server(s).
+.TP
+.BI \-h \ ldaphost
 Specify an alternate host on which the ldap server is running.
+Deprecated in favor of -H.
 .TP
-.B \-p ldapport
+.BI \-p \ ldapport
 Specify an alternate TCP port where the ldap server is listening.
+Deprecated in favor of -H.
 .TP
-.B \-b searchbase
+.BI \-b \ searchbase
 Use \fIsearchbase\fP as the starting point for the search instead of
 the default.
 .TP
-.B \-s scope
-Specify the scope of the search.  \fIscope\fP should be one of
-.B base,
-.B one,
+.BI \-s \ base\fR\||\|\fIone\fR\||\|\fIsub
+Specify the scope of the search to be one of
+.IR base ,
+.IR one ,
 or
-.B sub
+.I sub
 to specify a base object, one-level, or subtree search.  The default
 is
-.BR sub .
+.IR sub .
 .TP
-.B \-a deref
-Specify how aliases dereferencing is done.  \fIderef\fP should be one of
-.B never,
-.B always,
-.B search,
+.BI \-a \ never\fR\||\|\fIalways\fR\||\|\fIsearch\fR\||\|\fIfind
+Specify how aliases dereferencing is done.  Should be one of
+.IR never ,
+.IR always ,
+.IR search ,
 or
-.B find
+.I find
 to specify that aliases are never dereferenced, always dereferenced,
 dereferenced when searching, or dereferenced only when locating the
 base object for the search.  The default is to never dereference aliases.
 .TP
-.B \-l timelimit
-wait at most \fItimelimit\fP seconds for a search to complete.
+.BI \-P \ 2\fR\||\|\fI3
+Specify the LDAP protocol version to use.
+.TP
+.BI \-l \ timelimit
+wait at most \fItimelimit\fP seconds for a search to complete.  A
+timelimit of
+.I 0
+(zero) removes the
+.B ldap.conf
+limit.
+A server may impose a maximal timelimit which only
+the root user may override.
+.TP
+.BI \-z \ sizelimit
+retrieve at most \fIsizelimit\fP entries for a search.  A sizelimit
+of 
+.I 0
+(zero) removes the 
+.B ldap.conf
+limit.
+A server may impose a maximal sizelimit which only
+the root user may override.
+.TP
+.BI \-O \ security-properties
+Specify SASL security properties.
+.TP
+.B \-I
+Enable SASL Interactive mode.  Always prompt.  Default is to prompt
+only as needed.
 .TP
-.B \-z sizelimit
-retrieve at most \fIsizelimit\fP seconds for a search to complete.
+.B \-Q
+Enable SASL Quiet mode.  Never prompt.
+.TP
+.BI \-U \ authcid
+Specify the authentication ID for SASL bind. The form of the ID
+depends on the actual SASL mechanism used.
+.TP
+.BI \-X \ authzid
+Specify the requested authorization ID for SASL bind.
+.I authzid
+must be one of the following formats:
+.B dn:\c
+.I <distinguished name>
+or
+.B u:\c
+.I <username>
+.TP
+.BI \-Y \ mech
+Specify the SASL mechanism to be used for authentication. If it's not
+specified, the program will choose the best mechanism the server knows.
+.TP
+.B \-Z[Z]
+Issue StartTLS (Transport Layer Security) extended operation. If you use
+.B \-ZZ\c
+, the command will require the operation to be successful.
 .SH OUTPUT FORMAT
-If one or more entries are found, each entry is written to standard output
-in the form:
+If one or more entries are found, each entry is written to standard
+output in LDAP Data Interchange Format or
+.BR ldif (5):
 .LP
 .nf
-    Distinguished Name (DN)
-    User Friendly Name (this line present only if the -u option is used)
-    attributename=value
-    attributename=value
-    attributename=value
+       version: 1
+
+       # bjensen, example, net
+       dn: uid=bjensen,dc=example,dc=net
+       objectClass: person
+       objectClass: dcObject
+       uid: bjensen
+       cn: Barbara Jensen
+       sn: Jensen
     ...
 .fi
 .LP
-Multiple entries are separated with a single blank line.  If the -F option
-is used to specify a separator character, it will be used instead of the
-`=' character.  If the -t option is used, the name of a temporary file
+If the -t option is used, the URI of a temporary file
 is used in place of the actual value.  If the -A option
 is given, only the "attributename" part is written.
 .SH EXAMPLE
 The following command:
 .LP
 .nf
-    ldapsearch "cn=mark smith" cn telephoneNumber
+    ldapsearch -LLL "(sn=smith)" cn sn telephoneNumber
 .fi
 .LP
-will perform a subtree search (using the default search base) for entries
-with a commonName of "mark smith".  The commonName and telephoneNumber
-values will be retrieved and printed to standard output.
+will perform a subtree search (using the default search base defined
+in
+.BR ldap.conf (5))
+for entries with a surname (sn) of smith.  The common name (cn), surname
+(sn) and telephoneNumber values will be retrieved and printed to
+standard output.
 The output might look something like this if two entries are found:
 .LP
 .nf
-cn=Mark D Smith, ou="College of Literature, Science, and the Arts", ou=Students, ou=People, o=University of Michigan, c=US
-cn=Mark Smith
-cn=Mark David Smith
-cn=Mark D Smith 1
-cn=Mark D Smith
-telephoneNumber=+1 313 930-9489
+    dn: uid=jts,dc=example,dc=com
+       cn: John Smith
+       cn: John T. Smith
+       sn: Smith
+       sn;lang-en: Smith
+       sn;lang-de: Schmidt
+       telephoneNumber: 1 555 123-4567
 
-cn=Mark C Smith, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US
-cn=Mark Smith
-cn=Mark C Smith 1
-cn=Mark C Smith
-telephoneNumber=+1 313 764-2277
+       dn: uid=sss,dc=example,dc=com
+       cn: Steve Smith
+       cn: Steve S. Smith
+       sn: Smith
+       sn;lang-en: Smith
+       sn;lang-de: Schmidt
+       telephoneNumber: 1 555 765-4321
 .fi
 .LP
 The command:
 .LP
 .nf
-    ldapsearch -u -t "uid=mcs" jpegPhoto audio
+    ldapsearch -LLL -u -t "(uid=xyz)" jpegPhoto audio
 .fi
 .LP
 will perform a subtree search using the default search base for entries
-with user id of "mcs".  The user friendly form of the entry's DN will be
+with user id of "xyz".  The user friendly form of the entry's DN will be
 output after the line that contains the DN itself, and the jpegPhoto
 and audio values will be retrieved and written to temporary files.  The
 output might look like this if one entry with one value for each of the
 requested attributes is found:
 .LP
 .nf
-cn=Mark C Smith, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US
-Mark C Smith, Information Technology Division, Faculty and Staff, People, University of Michigan, US
-audio=/tmp/ldapsearch-audio-a19924
-jpegPhoto=/tmp/ldapsearch-jpegPhoto-a19924
+    dn: uid=xyz,dc=example,dc=com
+    ufn: xyz, example, com
+    audio:< file::/tmp/ldapsearch-audio-a19924
+    jpegPhoto:< file::=/tmp/ldapsearch-jpegPhoto-a19924
 .fi
 .LP
 This command:
 .LP
 .nf
-    ldapsearch -L -s one -b "c=US" "o=university*" o description
+    ldapsearch -LLL -s one -b "c=US" "(o=University*)" o description
 .fi
 .LP
-will perform a one-level search at the c=US level for all organizations
-whose organizationName begins with \fBuniversity\fP.  Search results
-will be displayed in the LDIF format.
-The organizationName and description attribute values will be retrieved
+will perform a one-level search at the c=US level for all entries
+whose organization name (o) begins begins with \fBUniversity\fP.
+The organization name and description attribute values will be retrieved
 and printed to standard output, resulting in output similar to this:
 .LP
 .nf
-dn: o=University of Alaska Fairbanks, c=US
-o: University of Alaska Fairbanks
-description: Preparing Alaska for a brave new yesterday
-description: leaf node only
+    dn: o=University of Alaska Fairbanks,c=US
+    o: University of Alaska Fairbanks
+    description: Preparing Alaska for a brave new yesterday
+    description: leaf node only
 
-dn: o=University of Colorado at Boulder, c=US
-o: University of Colorado at Boulder
-description: No personnel information
-description: Institution of education and research
+    dn: o=University of Colorado at Boulder,c=US
+    o: University of Colorado at Boulder
+    description: No personnel information
+    description: Institution of education and research
 
-dn: o=University of Colorado at Denver, c=US
-o: University of Colorado at Denver
-o: UCD
-o: CU/Denver
-o: CU-Denver
-description: Institute for Higher Learning and Research
+    dn: o=University of Colorado at Denver,c=US
+    o: University of Colorado at Denver
+    o: UCD
+    o: CU/Denver
+    o: CU-Denver
+    description: Institute for Higher Learning and Research
 
-dn: o=University of Florida, c=US
-o: University of Florida
-o: UFl
-description: Warper of young minds
+    dn: o=University of Florida,c=US
+    o: University of Florida
+    o: UFl
+    description: Warper of young minds
 
-etc....
+    ...
 .fi
 .SH DIAGNOSTICS
-Exit status is 0 if no errors occur.  Errors result in a non-zero exit
-status and a diagnostic message being written to standard error.
+Exit status is zero if no errors occur.
+Errors result in a non-zero exit status and
+a diagnostic message being written to standard error.
 .SH "SEE ALSO"
 .BR ldapadd (1),
 .BR ldapdelete (1),
 .BR ldapmodify (1),
 .BR ldapmodrdn (1),
+.BR ldap.conf (5),
+.BR ldif (5),
 .BR ldap (3),
 .BR ldap_search (3)
-.LP
-Kille, S.,
-.IR "A String Representation of Distinguished Names",
-.SM RFC
-1779,
-ISODE Consortium, March 1995.
-.LP
-Howes, T.,
-.IR "A String Representation of LDAP Search Filters",
-.SM RFC
-1558,
-University of Michigan, December 1993.
+.SH AUTHOR
+The OpenLDAP Project <http://www.openldap.org/>
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index c1eb3bc5ca4f5ce885139fde026c10a8cb9bfc57..d7b0feabb69a2d215a3155778ebd16b8eb82c2e3 100644 (file)
@@ -1,4 +1,4 @@
-.TH UD 1 "20 August 2000" "OpenLDAP LDVERSION"
+.TH UD 1 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index b0ff540d00ade17e0cfa43ec49f59dc82d90bbf7..8b4cfde74294da2c75e616fba1fd99232034feb8 100644 (file)
@@ -1,4 +1,4 @@
-.TH LBER_DECODE 3 "25 January 2002" "OpenLDAP LDVERSION"
+.TH LBER_DECODE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index be7302cb79b2aa809e4f45809183400396fa7cc4..40d617c79ae90f947bfc45ae1c421e858cbf8485 100644 (file)
@@ -1,4 +1,4 @@
-.TH LBER_ENCODE 3 "25 January 2002" "OpenLDAP LDVERSION"
+.TH LBER_ENCODE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 2cf9d3233281dadb28662141c20d5d5e61c6c1ac..71357ab3e4a7dd3e3f346861bf33fce8728141b4 100644 (file)
@@ -1,4 +1,4 @@
-.TH LBER_MEMORY 3 "25 January 2002" "OpenLDAP LDVERSION"
+.TH LBER_MEMORY 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 0a8b020b7613b3f7539abcb92f043b939f2b7bf0..52b5320588ed1667710892601bdb434df71560fb 100644 (file)
@@ -1,4 +1,4 @@
-.TH LBER_TYPES 3 "25 January 2002" "OpenLDAP LDVERSION"
+.TH LBER_TYPES 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 2b3c97b6acadf51543fb1147d494b35fada89328..795a041321d63ef89d8637f1f43c6bc6e934cf8a 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP 3 "13 January 2002" "OpenLDAP LDVERSION"
+.TH LDAP 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index a5266937ed5c053990d63c96fc84e8288ae94c52..900d5612e99060bad4d67c3e9f95a106654b8c68 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_ABANDON 3 "13 January 2002" "OpenLDAP LDVERSION"
+.TH LDAP_ABANDON 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index fbd33a321d29f9c00e1f5cce4680442e9570811c..2ad65d4fac01d807b27f2489aae4770670adba93 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_ADD 3 "13 January 2002" "OpenLDAP LDVERSION"
+.TH LDAP_ADD 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 16ce233d332ea528a4b9d7d184f4a3b91b6fdba6..d2f26a02f2d894ed1a07e808f0b8c4cb9c0ca5d5 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_BIND 3 "13 January 2002" "OpenLDAP LDVERSION"
+.TH LDAP_BIND 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index fbc8b0fcb0186ec6e022e0ac4beb0ced5a6bcb51..a1be5c92531896a608c5b07ed7e715df1ecd5b18 100644 (file)
@@ -1,10 +1,12 @@
-.TH LDAP_CACHE 3  "14 November 1994" "U-M LDAP LDVERSION"
+.TH LDAP_CACHE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldap_enable_cache, ldap_disable_cache, ldap_destroy_cache, ldap_flush_cache, ldap_uncache_entry, ldap_uncache_request, ldap_set_cache_options \- LDAP client caching routines
 .SH SYNOPSIS
 .nf
 .ft B
-#include <lber.h>
 #include <ldap.h>
 .ft
 .LP
@@ -50,9 +52,10 @@ unsigned long        opts;
 .fi
 .SH DESCRIPTION
 .LP
-These routines are used to control the behavior of client caching of
-.BR ldap_search (3),
-.BR cldap_search_s (3),
+These routines are used to control the behavior of the
+.B experimental
+client caching of
+.BR ldap_search (3)
 and
 .BR ldap_compare (3)
 operations.  By
@@ -113,5 +116,9 @@ void and return nothing.
 .SH SEE ALSO
 .BR ldap (3),
 .BR ldap_search (3),
-.BR ldap_compare (3),
-.BR cldap_search_s (3)
+.BR ldap_compare (3)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index b4971eb45df1adc44eef041960e95bc9a7514555..76578604c10b54a88eb263c690823442d3ad732d 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_COMPARE 3 "22 September 1998" "OpenLDAP LDVERSION"
+.TH LDAP_COMPARE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 9390106367b8287f75a5f3805d8ca91d42c7c869..53538104455c400bae3a4684ba98d696b445141f 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_DELETE 3 "22 September 1998" "OpenLDAP LDVERSION"
+.TH LDAP_DELETE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index f19e7ff6e3945b403b78d35439ef00fd9d3fb3cd..7ef83ac71d7ba8aa7b01e21eb8827a92db691280 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_ERROR 3 "23 July 2001" "OpenLDAP LDVERSION"
+.TH LDAP_ERROR 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index ec9fd54b439c3e869058e8e5d62b7d0978a4cf43..ace09cfe928ee6d4ddef0fe9c58f49d20f4f21de 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_FIRST_ATTRIBUTE 3 "23 July 2001" "OpenLDAP LDVERSION"
+.TH LDAP_FIRST_ATTRIBUTE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 9df89ebf5240ea8af7c68aed747ddb562651c2bd..153d2ff5fd84d060edaa76cb99034e653e4ebd63 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_FIRST_ENTRY 3 "23 July 2001" "OpenLDAP LDVERSION"
+.TH LDAP_FIRST_ENTRY 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index f341319d3c23d6e0b007d9ccae204f1a2b8dc9a6..eb53a8100bf4503a3fd187bbdfb369b8a1561c8a 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_FIRST_MESSAGE 3 "19 September 2001" "OpenLDAP LDVERSION"
+.TH LDAP_FIRST_MESSAGE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index fe9bda4b9ca0b4f384428468d92d089206b45b8c..13fc43ff7c5e087e84b8c7179f1cbb2f21fad82b 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_FIRST_REFERENCE 3 "19 September 2001" "OpenLDAP LDVERSION"
+.TH LDAP_FIRST_REFERENCE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index c86c0de6f76505b23913ca1119bfd06311a539b7..ac7cab89b42e878d21251455340f00d1d90dea5a 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_GET_DN 3 "22 July 2001" "OpenLDAP LDVERSION"
+.TH LDAP_GET_DN 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
@@ -13,6 +13,12 @@ ldap_get_dn, ldap_explode_dn, ldap_explode_rdn, ldap_dn2ufn \- LDAP DN handling
 char *ldap_get_dn( LDAP *ld, LDAPMessage *entry )
 .LP
 .ft B
+int ldap_str2dn( const char *str, LDAPDN **dn, unsigned flags )
+.LP
+.ft B
+int ldap_dn2str( LDAPDN *dn, char **str, unsigned flags )
+.LP
+.ft B
 char **ldap_explode_dn( const char *dn, int notypes )
 .LP
 .ft B
@@ -29,12 +35,6 @@ char *ldap_dcedn2dn( const char * dn )
 .LP
 .ft B
 char *ldap_dn2ad_canonical( const char * dn )
-.LP
-.ft B
-int ldap_str2dn( const char *str, LDAPDN **dn, unsigned flags )
-.LP
-.ft B
-int ldap_dn2str( LDAPDN *dn, char **str, unsigned flags )
 .SH DESCRIPTION
 These routines allow LDAP entry names (Distinguished Names, or DNs)
 to be obtained, parsed, converted to a user-friendly form, and tested.
@@ -53,60 +53,6 @@ the entry's DN.  Space for the DN will be obtained dynamically
 and should be freed by the caller using 
 .BR ldap_memfree (3).
 .LP
-The
-.B ldap_explode_dn()
-routine takes a DN as returned by
-.B ldap_get_dn()
-and breaks it up into its component parts.  Each part is known as a
-Relative Distinguished Name, or RDN.
-.B ldap_explode_dn()
-returns a
-NULL-terminated array, each component of which contains an RDN from the
-DN.  The \fInotypes\fP parameter is used to request that only the RDN
-values be returned, not their types.  For example, the DN "cn=Bob,
-c=US" would return as either { "cn=Bob", "c=US", NULL } or { "Bob",
-"US", NULL }, depending on whether notypes was 0 or 1, respectively.
-The result can be freed by calling
-.BR ldap_value_free (3).
-.LP
-Similarly, the
-.B ldap_explode_rdn()
-routine takes an RDN as returned by
-.B ldap_explode_dn(dn,0)
-and breaks it up into its "type=value" component parts (or just "value",
-if the \fInotypes\fP parameter is set).  Note the value is not
-unescaped.  The result can be freed by calling
-.BR ldap_value_free (3).
-.LP
-.B ldap_dn2ufn()
-is used to turn a DN as returned by
-.BR ldap_get_dn (3)
-into a more user-friendly form, stripping off all type names.  See
-"Using the Directory to Achieve User Friendly Naming" (RFC 1781)
-for more details on the UFN format.  Due to the ambigious nature
-of the format, it is generally only used for display purposes.
-The space for the UFN returned is obtained dynamically and the user
-is responsible for freeing it via a call to
-.BR ldap_memfree (3).
-.LP
-.B ldap_dn2dcedn()
-is used to turn a DN as returned by
-.BR ldap_get_dn (3)
-into a DCE-style DN, e.g. a string with most-significant to least 
-significant rdns separated by slashes ('/'); rdn components
-are separated by commas (',').
-Only printable chars (e.g. LDAPv2 printable string) are allowed,
-at least in this implementation.
-.B ldap_dcedn2dn()
-performs the opposite operation.
-.B ldap_dn2ad_canonical()
-turns a DN into a AD canonical name, which is basically a DCE dn
-with attribute types omitted.
-The trailing domain, if present, is turned in a DNS-like domain.
-The space for the returned value is obtained dynamically and the user
-is responsible for freeing it via a call to
-.BR ldap_memfree (3).
-.LP
 .B ldap_str2dn()
 parses a string representation of a distinguished name contained in
 .B str
@@ -198,6 +144,67 @@ plus
 
 .fi
 for user-friendly naming (RFC 1781) and AD canonical.
+.LP
+The following routines are viewed as deprecated in favor of
+.B ldap_str2dn()
+and
+.BR ldap_dn2str().
+They are provided to support legacy applications.
+.LP
+The
+.B ldap_explode_dn()
+routine takes a DN as returned by
+.B ldap_get_dn()
+and breaks it up into its component parts.  Each part is known as a
+Relative Distinguished Name, or RDN.
+.B ldap_explode_dn()
+returns a
+NULL-terminated array, each component of which contains an RDN from the
+DN.  The \fInotypes\fP parameter is used to request that only the RDN
+values be returned, not their types.  For example, the DN "cn=Bob,
+c=US" would return as either { "cn=Bob", "c=US", NULL } or { "Bob",
+"US", NULL }, depending on whether notypes was 0 or 1, respectively.
+Assertion values in RDN strings may included escaped characters.
+The result can be freed by calling
+.BR ldap_value_free (3).
+.LP
+Similarly, the
+.B ldap_explode_rdn()
+routine takes an RDN as returned by
+.B ldap_explode_dn(dn,0)
+and breaks it up into its "type=value" component parts (or just "value",
+if the \fInotypes\fP parameter is set).  Note the value is not
+unescaped.  The result can be freed by calling
+.BR ldap_value_free (3).
+.LP
+.B ldap_dn2ufn()
+is used to turn a DN as returned by
+.BR ldap_get_dn (3)
+into a more user-friendly form, stripping off all type names.  See
+"Using the Directory to Achieve User Friendly Naming" (RFC 1781)
+for more details on the UFN format.  Due to the ambigious nature
+of the format, it is generally only used for display purposes.
+The space for the UFN returned is obtained dynamically and the user
+is responsible for freeing it via a call to
+.BR ldap_memfree (3).
+.LP
+.B ldap_dn2dcedn()
+is used to turn a DN as returned by
+.BR ldap_get_dn (3)
+into a DCE-style DN, e.g. a string with most-significant to least 
+significant rdns separated by slashes ('/'); rdn components
+are separated by commas (',').
+Only printable chars (e.g. LDAPv2 printable string) are allowed,
+at least in this implementation.
+.B ldap_dcedn2dn()
+performs the opposite operation.
+.B ldap_dn2ad_canonical()
+turns a DN into a AD canonical name, which is basically a DCE dn
+with attribute types omitted.
+The trailing domain, if present, is turned in a DNS-like domain.
+The space for the returned value is obtained dynamically and the user
+is responsible for freeing it via a call to
+.BR ldap_memfree (3).
 .SH ERRORS
 If an error occurs in
 .BR ldap_get_dn() ,
index e9acf3d207e3bc729cb047bd3e110185540b2a39..6b969afd70ef6270d23450c8a425009173224ce3 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_GET_VALUES 3 "22 September 1998" "OpenLDAP LDVERSION"
+.TH LDAP_GET_VALUES 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index baf71a373617cac76221eb0652af930114124711..213d6b53457d9b1db70f7e9b59f18d8333435151 100644 (file)
@@ -1,10 +1,12 @@
-.TH LDAP_MODIFY 3  "15 November 1994" "U-M LDAP LDVERSION"
+.TH LDAP_MODIFY 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldap_modify, ldap_modify_s \- Perform an LDAP modify operation
 .SH SYNOPSIS
 .nf
 .ft B
-#include <lber.h>
 #include <ldap.h>
 .LP
 .ft B
@@ -111,3 +113,8 @@ field of \fIld\fP.
 .BR ldap (3),
 .BR ldap_error (3),
 .BR ldap_add (3)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index 1b382758f12f87adf9e0635aa613726f0cfee5dd..339045c971a5043f62880a91d46bf56d45406e2d 100644 (file)
@@ -1,10 +1,12 @@
-.TH LDAP_MODRDN 3  "1 December 1994" "U-M LDAP LDVERSION"
+.TH LDAP_MODRDN 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldap_modrdn, ldap_modrdn_s, ldap_modrdn2, ldap_modrdn2_s \- Perform an LDAP modify RDN operation
 .SH SYNOPSIS
 .nf
 .ft B
-#include <lber.h>
 #include <ldap.h>
 .LP
 .ft B
@@ -73,3 +75,8 @@ for more details.
 .SH SEE ALSO
 .BR ldap (3),
 .BR ldap_error (3)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index 746e66509ac86bc9164df69d6d2a81ce75ab0985..d9b56781f6c24b25ae8b08cf41193444ecd60f9c 100644 (file)
@@ -1,10 +1,12 @@
-.TH LDAP_OPEN 3  "28 March 1996" "U-M LDAP LDVERSION"
+.TH LDAP_OPEN 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldap_init, ldap_open \- Initialize the LDAP library and open a connection to an LDAP server
 .SH SYNOPSIS
 .nf
 .ft B
-#include <lber.h>
 #include <ldap.h>
 .LP
 .ft B
@@ -81,8 +83,8 @@ but does not open a connection
 to the LDAP server.  The actual connection open will occur when the
 first operation is attempted.  At this time,
 .B ldap_init()
-should only
-be used if the LDAP library is compiled with LDAP_REFERRALS defined.
+is preferred.  
+.B ldap_open() will be depreciated in a later release.
 .SH ERRORS
 If an error occurs, these routines will return NULL and errno should be
 set appropriately.
@@ -111,3 +113,8 @@ in the LDAP structure.
 .BR ldap (3),
 .BR ldap_bind (3),
 .BR errno (3)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
diff --git a/doc/man/man3/ldap_parse_reference.3 b/doc/man/man3/ldap_parse_reference.3
new file mode 100644 (file)
index 0000000..78dc4f8
--- /dev/null
@@ -0,0 +1,61 @@
+.TH LDAP_PARSE_REFERENCE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
+.SH NAME
+ldap_parse_reference \- Extract referrals and controls from a reference message
+.SH SYNOPSIS
+.nf
+.ft B
+#include <ldap.h>
+.LP
+.ft B
+int ldap_parse_reference( LDAP *ld, LDAPMessage *reference,
+       char ***referralsp, LDAPControl ***serverctrlsp, int freeit )
+.SH DESCRIPTION
+.LP
+The
+.B ldap_parse_reference()
+routine is used to extract referrals and controls from a reference message.
+The \fIreference\fP parameter is a reference message as returned by a
+call to
+.BR ldap_first_reference (3) ,
+.BR ldap_next_reference (3) ,
+.BR ldap_first_message (3) ,
+.BR ldap_next_message (3) ,
+or
+.BR ldap_result (3) .
+.LP
+The \fIreferralsp\fP parameter will be filled in with an allocated array of
+character strings. The strings are copies of the referrals contained in
+the parsed message. The array should be freed by calling
+.BR ldap_value_free (3) .
+If \fIreferralsp\fP is NULL, no referrals are returned.
+If no referrals were returned, \fI*referralsp\fP is set to NULL.
+.LP
+The \fIserverctrlsp\fP parameter will be filled in with an allocated array of
+controls copied from the parsed message. The array should be freed by calling
+.BR ldap_controls_free (3) .
+If \fIserverctrlsp\fP is NULL, no controls are returned.
+If no controls were returned, \fI*serverctrlsp\fP is set to NULL.
+.LP
+The \fIfreeit\fP parameter determines whether the parsed message is
+freed or not after the extraction. Any non-zero value will make it
+free the message. The
+.BR ldap_msgfree (3)
+routine can also be used to free the message later.
+.SH ERRORS
+Upon success LDAP_SUCCESS is returned. Otherwise the values of the
+\fIreferralsp\fP and \fIserverctrlsp\fP parameters are undefined.
+.SH SEE ALSO
+.BR ldap (3),
+.BR ldap_first_reference (3),
+.BR ldap_first_message (3),
+.BR ldap_result (3),
+.BR ldap_get_values (3),
+.BR ldap_controls_free (3)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index d30115ac7714203bfe168aff8dc184dcf26046bc..4c6eacda90fc4718670ee452dc08bd79514524e8 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_PARSE_RESULT 3 "10 October 2001" "OpenLDAP LDVERSION"
+.TH LDAP_PARSE_RESULT 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 306e8be44cc18d5cceb7fc244c0c97b0f2d97a97..c42b702e93ff407361a22e115a7b55ce3c080685 100644 (file)
@@ -1,24 +1,24 @@
-.TH LDAP_RESULT 3  "26 November 1994" "U-M LDAP LDVERSION"
+.TH LDAP_RESULT 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldap_result \- Wait for the result of an LDAP operation
 .SH SYNOPSIS
 .nf
 .ft B
-#include <lber.h>
 #include <ldap.h>
 .LP
 .ft B
-int ldap_result(ld, msgid, all, timeout, result)
+int ldap_result( LDAP *ld, int msgid, int all,
+       struct timeval *timeout, LDAPMessage **result );
+
+int ldap_msgfree( LDAPMessage *msg );
+
+int ldap_msgtype( LDAPMessage *msg );
+
+int ldap_msgid( LDAPMessage *msg );
 .ft
-LDAP *ld;
-int msgid, all;
-struct timeval *timeout;
-LDAPMessage **result;
-.LP
-.ft B
-int ldap_msgfree(msg)
-.ft
-LDAPMessage *msg;
 .SH DESCRIPTION
 The
 .B ldap_result()
@@ -49,37 +49,46 @@ for further details.
 .LP
 If the result of a specific operation is required, \fImsgid\fP should
 be set to the invocation identifier returned when the operation was
-initiated, otherwise LDAP_RES_ANY should be supplied.  The \fIall\fP
-parameter only has meaning for search responses and is used to select
-whether a single entry of the search response should be returned, or
-all results of the search should be returned.
+initiated, otherwise LDAP_RES_ANY or LDAP_RES_UNSOLICITED should be
+supplied to wait for any or unsolicited response.
+.LP
+The \fIall\fP parameter, if non-zero, causes
+.B ldap_result()
+to return all responses with msgid, otherwise only the
+next response is returned.  This is commonly used to obtain all
+the responses of a search operation.
 .LP
 A search response is made up of zero or
-more search entries followed by a search result.  If \fIall\fP is set
-to 0, search entries will be returned one at a time as they come in,
-via separate calls to
+more search entries, zero or more search references, and zero or
+more extended parital responses followed by a search result.  If
+\fIall\fP is set to 0, search entries will be returned one at a
+time as they come in, via separate calls to
 .BR ldap_result() .
 If it's set to 1, the search
-response will only be returned in its entirety, i.e., after all entries
-and the final search result have been received.
+response will only be returned in its entirety, i.e., after all entries,
+all references, all extended parital responses, and the final search
+result have been received.
 .LP
 Upon success, the type of the result received is returned and the
 \fIresult\fP parameter will contain the result of the operation.  This
 result should be passed to the LDAP parsing routines,
-.BR ldap_first_entry (3)
+.BR ldap_first_message (3)
 and friends, for interpretation.
 .LP
 The possible result types returned are:
 .LP
 .nf
-       #define LDAP_RES_BIND                   0x61L
-       #define LDAP_RES_SEARCH_ENTRY           0x64L
-       #define LDAP_RES_SEARCH_RESULT          0x65L
-       #define LDAP_RES_MODIFY                 0x67L
-       #define LDAP_RES_ADD                    0x69L
-       #define LDAP_RES_DELETE                 0x6bL
-       #define LDAP_RES_MODRDN                 0x6dL
-       #define LDAP_RES_COMPARE                0x6fL
+       LDAP_RES_BIND (0x61)
+       LDAP_RES_SEARCH_ENTRY (0x64)
+       LDAP_RES_SEARCH_REFERENCE (0x73)
+       LDAP_RES_SEARCH_RESULT (0x65)
+       LDAP_RES_MODIFY (0x67)
+       LDAP_RES_ADD (0x69)
+       LDAP_RES_DELETE (0x6b)
+       LDAP_RES_MODDN (0x6d)
+       LDAP_RES_COMPARE (0x6f)
+       LDAP_RES_EXTENDED (0x78)
+       LDAP_RES_EXTENDED_PARTIAL (0x79)
 .fi
 .LP
 The
@@ -92,15 +101,29 @@ or
 and friends.  It takes
 a pointer to the result to be freed and returns the type of the
 message it freed.
+.LP
+The
+.B ldap_msgtype()
+routine returns the type of a message.
+.LP
+The
+.B ldap_msgid()
+routine returns the message id of a message.
 .SH ERRORS
 .B ldap_result()
 returns -1 if something bad happens, and zero if the
 timeout specified was exceeded.
-.SH NOTES
-This routine mallocs memory for results that it receives.  The memory
-can be freed by calling
-.BR ldap_msgfree .
+.B ldap_msgtype()
+and
+.B ldap_msgid()
+return -1 on error.
 .SH SEE ALSO
 .BR ldap (3),
 .BR ldap_search (3),
+.BR ldap_first_message (3),
 .BR select (2)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index 27c6446671aab26dd117f256dfa9481bd58ef8c7..349e877c44dff1f239e4103f2e4456f1d8e35e9a 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_SCHEMA 3 "4 June 2000" "OpenLDAP LDVERSION"
+.TH LDAP_SCHEMA 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 2000-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index e1a7022bcdab160f92d892c4a8f7d6ca812eafb8..cb2d58be4a8011d94ed1f9357abfef80ab4de654 100644 (file)
@@ -1,11 +1,13 @@
-.TH LDAP_SEARCH 3  "23 November 1994" "U-M LDAP LDVERSION"
+.TH LDAP_SEARCH 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldap_search, ldap_search_s, ldap_search_st \- Perform an LDAP search operation
 .SH SYNOPSIS
 .nf
 .ft B
 #include <sys/time.h> /* for struct timeval definition */
-#include <lber.h>
 #include <ldap.h>
 .LP
 .ft B
@@ -73,7 +75,7 @@ BNF:
 .LP
 The '~=' construct is used to specify approximate matching.  The
 representation for <attributetype> and <attributevalue> are as
-described in RFC 1778.  In addition, <attributevalue> can be a single *
+described in RFC 2254.  In addition, <attributevalue> can be a single *
 to achieve an attribute existence test, or can contain text and *'s
 interspersed to achieve substring matching.
 .LP
@@ -81,14 +83,22 @@ For example, the filter "mail=*" will find any entries that have a mail
 attribute.  The filter "mail=*@terminator.rs.itd.umich.edu" will find
 any entries that have a mail attribute ending in the specified string.
 To put parentheses in a filter, escape them with a backslash '\\'
-character.  See RFC 1588 for a more complete description of allowable
+character.  See RFC 2254 for a more complete description of allowable
 filters.  See
 .BR ldap_getfilter (3)
 for routines to help in constructing search filters automatically.
 .LP
 \fIAttrs\fP is a null-terminated array of attribute types to return
-from entries that match \fIfilter\fP.  If NULL is specified, all
-attributes will be returned.  \fIAttrsonly\fP should be set to 1 if
+from entries that match \fIfilter\fP.
+If NULL is specified, all attributes will be returned.
+The type "*" (LDAP_ALL_USER_ATTRIBUTES) may be used to request
+all user attributes to be returned.
+The type "+"(LDAP_ALL_OPERATIONAL_ATTRIBUTES) may be used to request
+all operational attributes to be returned.
+To request no attributes, the type "1.1" (LDAP_NO_ATTRS)
+should be listed by itself.
+.LP
+\fIAttrsonly\fP should be set to 1 if
 only attribute types are wanted.  It should be set to 0 if both
 attributes types and attribute values are wanted.
 .SH ERRORS
@@ -107,10 +117,17 @@ and list functionality are subsumed by these routines,
 by using a filter like "objectclass=*" and a scope of LDAP_SCOPE_BASE (to
 emulate read) or LDAP_SCOPE_ONELEVEL (to emulate list).
 .LP
-These routines may malloc memory.  Return values are contained
+These routines may dynamically allocate memory.  The caller is
+responsible for freeing such memory using supplied deallocation
+routines.  Return values are contained
 in <ldap.h>.
 .SH SEE ALSO
 .BR ldap (3),
 .BR ldap_result (3),
 .BR ldap_getfilter (3),
 .BR ldap_error (3)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index f56122af0b9a9291bec1a1c98bb33a30fbacf06f..af80b075a2f58ba19aa46e5076ddcc654dad9d18 100644 (file)
@@ -1,10 +1,12 @@
-.TH LDAP_SORT 3  "14 November 1994" "U-M LDAP LDVERSION"
+.TH LDAP_SORT 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldap_sort_entries, ldap_sort_values, ldap_sort_strcasecmp \- LDAP sorting routines
 .SH SYNOPSIS
 .nf
 .ft B
-#include <lber.h>
 #include <ldap.h>
 .LP
 .ft B
@@ -93,9 +95,16 @@ may produce unexpected results for multi-valued attributes.
 When sorting by DN, the comparison function is
 applied to an exploded version of the DN, without types.
 The return values for all of these functions are declared in the
-<ldap.h> header file.  Some routines may malloc memory.
+<ldap.h> header file.  Some routines may dynamically allocate memory.
+Callers are responsible for freeing such memory using the supplied
+deallocation routines.
 .SH SEE ALSO
 .BR ldap (3),
 .BR ldap_search (3),
 .BR ldap_result (3),
 .BR qsort (3)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index 60e07c0362c14f8b1f28805ca17d0205a24f7ac5..402ae45a031e84aae2672bc158970daa6540a39a 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP_URL 3 "23 July 2001" "OpenLDAP LDVERSION"
+.TH LDAP_URL 3 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 85ed4e245fd9036bdc684c5b8129c07eb20bb2e1..ec3f5e9ae3ffee2d801de7d054a844050cebe477 100644 (file)
@@ -1,4 +1,4 @@
-.TH LDAP.CONF 5 "6 May 2002" "OpenLDAP LDVERSION"
+.TH LDAP.CONF 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
@@ -6,8 +6,7 @@
 .SH NAME
 ldap.conf, .ldaprc \- ldap configuration file
 .SH SYNOPSIS
-ETCDIR/ldap.conf
-\fP.ldaprc\fP
+ETCDIR/ldap.conf, .ldaprc
 .SH DESCRIPTION
 The
 .I ldap.conf
@@ -17,122 +16,210 @@ running
 clients.  If the environment variable \fBLDAPNOINIT\fP is defined, all
 defaulting is disabled.
 .LP
-Each user may specify an optional configuration file,
-.IR ldaprc
+Users may create an optional configuration file,
+.I ldaprc
 or
 .IR .ldaprc ,
-in his/her home directory which will be used to override the system-wide
+in their home directory which will be used to override the system-wide
 defaults file.
 The file
-.IR ldaprc
+.I ldaprc
 in the current working directory is also used.
 .LP
 Additional configuration files can be specified using
 the \fBLDAPCONF\fP and \fBLDAPRC\fP environment variables.
-\fBLDAPCONF\fP may be set the path of a configuration file.  This
-path can be absolute or relative to current working directory.
-The \fBLDAPRC\fP, if defined, should be a basename of a file
+\fBLDAPCONF\fP may be set to the path of a configuration file.  This
+path can be absolute or relative to the current working directory.
+The \fBLDAPRC\fP, if defined, should be the basename of a file
 in the current working directory or in the user's home directory.
 .LP
 Environmental variables may also be used to augment the file based defaults.
-The name of the option is the as listed but with a prefix of \fBLDAP\fP.
-For example, to define \fBBASE\fP via the environment, define the variable
-\fBLDAPBASE\fP to desired value.
+The name of the variable is the option name with an added prefix of \fBLDAP\fP.
+For example, to define \fBBASE\fP via the environment, set the variable
+\fBLDAPBASE\fP to the desired value.
 .LP
 Some options are user\-only.  Such options are ignored if present
 in the
-.IR ldap.conf
+.I ldap.conf
 (or file specified by
 .BR LDAPCONF ).
 .SH OPTIONS
 The different configuration options are:
-.TP 1i
-\fBBASE <base>\fP
-Used to specify the default base DN to use when performing ldap operations.
+.TP
+.B BASE <base>
+Specifies the default base DN to use when performing ldap operations.
 The base must be specified as a Distinguished Name in LDAP format.
-.TP 1i
-\fBBINDDN <dn>\fP
-Used to specify the default bind DN to use when performing ldap operations.
+.TP
+.B BINDDN <dn>
+Specifies the default bind DN to use when performing ldap operations.
 The bind DN must be specified as a Distinguished Name in LDAP format.
 This is a user\-only option.
-.TP 1i
-\fBHOST <name[:port] ...>\fP
-Used to specify the name(s) of an LDAP server(s) to which 
+.TP
+.B HOST <name[:port] ...>
+Specifies the name(s) of an LDAP server(s) to which the
 .I ldap 
-library should connect to.  Each server's name can be specified as a
-domain-style name or an IP address and optionally followed a ':' and
+library should connect.  Each server's name can be specified as a
+domain-style name or an IP address and optionally followed by a ':' and
 the port number the ldap server is listening on.  A space separated
-listed of host may be provided.
-.TP 1i
-\fBPORT <port>\fP
-Used to specify the port used with connecting to LDAP servers(s).
+list of hosts may be provided.
+.TP
+.B PORT <port>
+Specifies the default port used when connecting to LDAP servers(s).
 The port may be specified as a number.
-.TP 1i
-\fBSASL_SECPROPS <properties>\fP
-Used to specify Cyrus SASL security properties.
-The
+.TP
+.B SASL_SECPROPS <properties>
+Specifies Cyrus SASL security properties. The 
+.B <properties>
+can be specified as a comma-separated list of the following:
+.RS
+.TP
 .B none
-flag (without any other properities) causes the flag properites
+(without any other properties) causes the properties
 defaults ("noanonymous,noplain") to be cleared.
-The
+.TP
 .B noplain
-flag disables mechanisms susceptible to simple passive attacks.
-The
+disables mechanisms susceptible to simple passive attacks.
+.TP
 .B noactive
-flag disables mechanisms susceptible to active attacks.
-The
+disables mechanisms susceptible to active attacks.
+.TP
 .B nodict
-flag disables mechanisms susceptible to passive dictionary attacks.
-The
-.B noanonyous
-flag disables mechanisms which support anonymous login.
-The
+disables mechanisms susceptible to passive dictionary attacks.
+.TP
+.B noanonymous
+disables mechanisms which support anonymous login.
+.TP
 .B forwardsec
-flag require forward secrecy between sessions.
-The
+requires forward secrecy between sessions.
+.TP
 .B passcred
-require mechanisms which pass client credentials (and allow
+requires mechanisms which pass client credentials (and allows
 mechanisms which can pass credentials to do so).
-The
+.TP
 .B minssf=<factor> 
-property specifies the minimum acceptable
+specifies the minimum acceptable
 .I security strength factor
-as an integer approximate to effective key length used for
+as an integer approximating the effective key length used for
 encryption.  0 (zero) implies no protection, 1 implies integrity
 protection only, 56 allows DES or other weak ciphers, 112
 allows triple DES and other strong ciphers, 128 allows RC4,
 Blowfish and other modern strong ciphers.  The default is 0.
-The
+.TP
 .B maxssf=<factor> 
-property specifies the maximum acceptable
+specifies the maximum acceptable
 .I security strength factor
-as an integer (see minssf description).  The default is INT_MAX.
-The
+as an integer (see
+.B minssf
+description).  The default is
+.BR INT_MAX .
+.TP
 .B maxbufsize=<factor> 
-property specifies the maximum security layer receive buffer
+specifies the maximum security layer receive buffer
 size allowed.  0 disables security layers.  The default is 65536.
-.TP 1i
-\fBSIZELIMIT <integer>\fP
-Used to specify a size limit to use when performing searches.  The
-number should be an non-negative integer.  \fISIZELIMIT\fP of zero (0)
+.RE
+.TP
+.B SIZELIMIT <integer>
+Specifies a size limit to use when performing searches.  The
+number should be a non-negative integer.  \fISIZELIMIT\fP of zero (0)
 specifies unlimited search size.
-.TP 1i
-\fBTIMELIMIT <integer>\fP
-Used to specify a time limit to use when performing searches.  The
-number should be an non-negative integer.  \fITIMELIMIT\fP of zero (0)
+.TP
+.B TIMELIMIT <integer>
+Specifies a time limit to use when performing searches.  The
+number should be a non-negative integer.  \fITIMELIMIT\fP of zero (0)
 specifies unlimited search time to be used.
-.TP 1i
-\fBDEREF <never|searching|finding|always>\fP
-Specify how aliases dereferencing is done.  \fIDEREF\fP should
-be set to one of
-.B never,
-.B always,
-.B search,
-or 
-.B find 
-to specify that aliases are never dereferenced, always dereferenced,
-dereferenced when searching, or dereferenced only when locating the
-base object for the search.  The default is to never dereference aliases.
+.TP
+.B DEREF <when>
+Specifies how alias dereferencing is done when performing a search. The
+.B <when>
+can be specified as one of the following keywords:
+.RS
+.TP
+.B never
+Aliases are never dereferenced. This is the default.
+.TP
+.B searching
+Aliases are dereferenced in subordinates of the base object, but
+not in locating the base object of the search.
+.TP
+.B finding
+Aliases are only dereferenced when locating the base object of the search.
+.TP
+.B always
+Aliases are dereferenced both in searching and in locating the base object
+of the search.
+.SH TLS OPTIONS
+If OpenLDAP is built with support for Transport Layer Security, there
+are more options you can specify.
+.TP
+.B TLS <level>
+Specifies whether client connections should use TLS by default. The
+.B <level>
+can be specified as one of the following keywords:
+.RS
+.TP
+.B never
+This is the default. Connections will be opened in the clear unless
+TLS is explicitly specified (e.g. using an "ldaps://" URL.)
+.TP
+.B hard
+All connections will be established with TLS.
+Note that using this option effectively makes the library open every
+session as an ldaps session and is incompatible with the LDAPv3 StartTLS
+request.
+.RE
+.TP
+.B TLS_CACERT <filename>
+Specifies the file that contains certificates for all of the Certificate
+Authorities the client will recognize.
+.TP
+.B TLS_CACERTDIR <path>
+Specifies the path of a directory that contains Certificate Authority
+certificates in separate individual files. The
+.B TLS_CACERT
+is always used before
+.B TLS_CACERTDIR.
+.TP
+.B TLS_CERT <filename>
+Specifies the file that contains the client certificate. This is
+a user\-only option.
+.TP
+.B TLS_KEY <filename>
+Specifies the file that contains the private key that matches the certificate
+stored in the
+.B TLS_CERT
+file. Currently, the private key must not be protected with a password, so
+it is of critical importance that the key file is protected carefully. This
+is a user\-only option.
+.TP
+.B TLS_RANDFILE <filename>
+Specifies the file to obtain random bits from when /dev/[u]random is
+not available. Generally set to the name of the EGD/PRNGD socket.
+The environment variable RANDFILE can also be used to specify the filename.
+.TP
+.B TLS_REQCERT <level>
+Specifies what checks to perform on server certificates in a TLS session,
+if any. The
+.B <level>
+can be specified as one of the following keywords:
+.RS
+.TP
+.B never
+The client will not request or check any server certificate.
+.TP
+.B allow
+The server certificate is requested. If no certificate is provided,
+the session proceeds normally. If a bad certificate is provided, it will
+be ignored and the session proceeds normally.
+.TP
+.B try
+The server certificate is requested. If no certificate is provided,
+the session proceeds normally. If a bad certificate is provided,
+the session is immediately terminated.
+.TP
+.B demand | hard
+These keywords are equivalent. The server certificate is requested. If no
+certificate is provided, or a bad certificate is provided, the session
+is immediately terminated. This is the default setting.
 .SH "ENVIRONMENT VARIABLES"
 .TP
 LDAPNOINIT
index 3eaba3b54c8dc2fb2320b3de63127abb45bdbf4b..eec8fdfa4c091bb7ccdca2ef9ccb0a8707a25294 100644 (file)
@@ -1,47 +1,45 @@
-.TH LDIF 5  "13 November 1995" "U-M LDAP LDVERSION"
+.TH LDIF 5 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 ldif \- LDAP Data Interchange Format
 .SH DESCRIPTION
 The LDAP Data Interchange Format (LDIF) is used to represent LDAP
-entries in text form. The
-.BR ldif2ldbm (8)
-tools can be used to convert from LDIF format to the LDBM format
-used by
-.BR slapd (8).
-The
-.BR ldbmcat (8)
-tool can be used to do the reverse conversion. See "The SLAPD and
-SLURPD Administrator's Guide" for more information on this format and
-the conversion tools.
+entries in text form. LDAP tools, such as
+.BR ldapadd (1)
+and
+.BR ldapsearch (1),
+read and write LDIF.
 .LP
 The basic form of an LDIF entry is:
 .LP
 .nf
 .ft tt
-       [<id>]
        dn: <distinguished name>
-       <attrtype>: <attrvalue>
-       <attrtype>: <attrvalue>
+       <attrdesc>: <attrvalue>
+       <attrdesc>: <attrvalue>
+       <attrdesc>:: <base64-encoded-value>
+       <attrdesc>:< <URL>
        ...
 .ft
 .fi
 .LP
-where <id> is the optional entry ID (a positive decimal number).
-Normally, you would not supply the <id>, allowing the database creation
-tools to do that for you. The
-.BR ldbmcat (8)
-program, however, produces an LDIF format that includes <id> so that
-new indexes created will be consistent with the existing database.  A
-line may be continued by starting the next line with a single space or
-tab character, e.g.,
+The value may be specified as UTF-8 text or as base64 encoded data,
+or a URI may be provided to the location of the attribute value.
+.LP
+A line may be continued by starting the next line with a single space
+or tab, e.g.,
 .LP
 .nf
 .ft tt
-       dn: cn=Barbara J Jensen, o=University of Michi
-        gan, c=US
+       dn: cn=Barbara J Jensen,dc=exam
+        ple,dc=com
 .ft
 .fi
 .LP
+Lines beginning with a sharpe sign ('#') are ignored.
+.LP
 Multiple attribute values are specified on separate lines, e.g.,
 .LP
 .nf
@@ -51,10 +49,10 @@ Multiple attribute values are specified on separate lines, e.g.,
 .ft
 .fi
 .LP
-If an <attrvalue> contains a non-printing character, or begins with a
-space or a colon ':', the <attrtype> is followed by a double colon and
-the value is encoded in base 64 notation. e.g., the value " begins with
-a space" would be encoded like this:
+If an value contains a non-printing character, or begins
+with a space or a colon ':', the <attrtype> is followed by a
+double colon and the value is encoded in base 64 notation. e.g.,
+the value " begins with a space" would be encoded like this:
 .LP
 .nf
 .ft tt
@@ -62,6 +60,17 @@ a space" would be encoded like this:
 .ft
 .fi
 .LP
+If the attribute value is located in a file, the <attrtype> is
+followed by a ':<' and a file: URI.  e.g., the value contained
+in the file /tmp/value would be listed like this:
+.LP
+.nf
+.ft tt
+       cn:< file:///tmp/value
+.ft
+.fi
+Other URI schemes (ftp,http) may be supported as well.
+.LP
 Multiple entries within the same LDIF file are separated by blank
 lines.
 .SH EXAMPLE
@@ -69,22 +78,20 @@ Here is an example of an LDIF file containing three entries.
 .LP
 .nf
 .ft tt
-       dn: cn=Barbara J Jensen, o=University of Michi
-        gan, c=US
+       dn: cn=Barbara J Jensen,dc=example,dc=com
        cn: Barbara J Jensen
        cn: Babs Jensen
        objectclass: person
+       description:< file://tmp/babs
        sn: Jensen
 
-       dn: cn=Bjorn J Jensen, o=University of Michi
-        gan, c=US
+       dn: cn=Bjorn J Jensen,dc=example,dc=com
        cn: Bjorn J Jensen
        cn: Bjorn Jensen
        objectclass: person
        sn: Jensen
 
-       dn: cn=Jennifer J Jensen, o=University of Michi
-        gan, c=US
+       dn: cn=Jennifer J Jensen,dc=example,dc=com
        cn: Jennifer J Jensen
        cn: Jennifer Jensen
        objectclass: person
@@ -96,12 +103,17 @@ Here is an example of an LDIF file containing three entries.
 .ft
 .fi
 .LP
-Notice that the jpegPhoto in Jennifer Jensen's entry is encoded using
-base 64.
+Notice that the description in Barbara Jensen's entry is
+read from file://tmp/babs and the jpegPhoto in Jennifer
+Jensen's entry is encoded using base 64.
 .SH SEE ALSO
 .BR ldap (3),
-.BR slapd (8),
-.BR ldif2ldbm (8),
-.BR ldbmcat (8)
+.BR ldapsearch (1),
+.BR ldapadd (1).
 .LP
-"The SLAPD and SLURPD Administrator's Guide"
+"LDAP Data Interchange Format," Good, G., RFC 2849.
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index 0dfdb8ba9e880be7653a3ac6d7bc91ff1d26eabc..c76dbdb4bce97854da90dfbeca7104d9bf55bef7 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-BDB 5 "30 April 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-BDB 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .\" $OpenLDAP$
index 9e3fbdf3aac4fa12c6e4e4200a233f8de218a4cb..243649532144d0c6123662d68b8b83b70a5dc482 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-DNSSRV 5 "3 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-DNSSRV 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .\" $OpenLDAP$
index 192d0e715903578db918313727b6468d43b11841..e102d3830ed5737baa2535519786a2b05313aad1 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-LDAP 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-LDAP 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .\" $OpenLDAP$
@@ -64,17 +64,16 @@ them to the client.
 The <suffix> field must be defined as a valid suffix (or suffixAlias?)
 for the current database.
 .TP
-.B map "{attribute | objectclass} {<local name> | *} [<foreign name> | *]"
+.B map "{attribute | objectclass} [<local name> | *] {<foreign name> | *}"
 Map attribute names and object classes from the foreign server to
 different values on the local slapd.
 The reason is that some attributes might not be part of the local
 slapd's schema, some attribute names might be different but serve the
 same purpose, etc.
 If local or foreign name is `*', the name is preserved.
-If foreign name is missing, the name is dropped.
-Local name `*' and no foreign name means unmapped attributes are
-removed, while local name = foreign name = `*' means unmapped
-attributes are preserved.
+If local name is omitted, the foreign name is removed.
+Unmapped names are preseved if both local and foreign name are `*',
+and removed if local name is omitted and foreign name is `*'.
 .TP
 .B rewrite*
 The rewrite options are described in the "REWRITING" section of the
index 3fd0c3bff164cb7871380549b4496546bd0b07a6..40eec21aeecfc9345e9644a5b260e481de1d7616 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-LDBM 5 "30 April 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-LDBM 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .\" $OpenLDAP$
index 6671174e4df9e264c289ebf37c0904c4e4b3f857..d953d09dcd317ac932d27f82249765a29ddb23c1 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-META 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-META 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
 .\" Copying restrictions apply.  See the COPYRIGHT file.
 .\" Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
@@ -169,7 +169,7 @@ so "dc=foo, dc=com" would not match "dc=foo,dc=com".
 .LP
 See the "REWRITING" section.
 .TP
-.B map {objectClass|attribute} {<source>|*} [<dest>|*]
+.B map "{attribute|objectclass} [<local name>|*] {<foreign name>|*}"
 This maps object classes and attributes as in the LDAP backend.
 See
 .BR slapd-ldap (5).
index fad41f556081b42762b0272dadad68b9496144f7..ee4272f38e513577131f8ad1c8bbdeb2b5ff6e8e 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-NULL 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-NULL 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .SH NAME
 slapd-null \- Null backend to slapd
index 6765d2e3c505a016e23f69b87b8af970bb24fb48..644d3b5e2b3f7d9eb23d7adf88ef86ee55ee1a1c 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-PASSWD 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-PASSWD 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .\" $OpenLDAP$
index d544a4412d12e9472b9fbc533ef0f3865ac6a621..d0627c03eef28f244a8bf79d9ed7c9482fff9427 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-PERL 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-PERL 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .SH NAME
 slapd-perl \- Perl backend to slapd
index a880f68c6a04232b14ca769e621403838cd44521..58a6a18866489cdf900fbb757f9989ba0b198b5d 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-SHELL 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-SHELL 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .\" $OpenLDAP$
index b01e04df860aee17914ce327b34d4796638b5fab..be6458586393b71d6d2826242f70335451f8237c 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-SQL 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-SQL 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .SH NAME
 slapd-sql \- SQL backend to slapd
index 9a95c9e70b72ac26ca9c4104dac7f74d9e967ce9..e5c168f7229ccd57f68207b691f008cf0546e98d 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD-TCL 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD-TCL 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .SH NAME
 slapd-tcl \- Tcl backend to slapd
index 4b30c60e848a3ce5776eb9d7c18f9a18065a4eda..90931cd9da2b6cd94977a2f4750bddb72c85a6f5 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD.ACCESS 5 "30 April 2002" "OpenLDAP LDVERSION"
+.TH SLAPD.ACCESS 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
index 0d41ed4beab20c5f131ccd9d8a522a7d477c6dbc..a32a2fe91f4b713e14de4efbaf58f928ce0a660d 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD.CONF 5 "2 May 2002" "OpenLDAP LDVERSION"
+.TH SLAPD.CONF 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .\" $OpenLDAP$
@@ -195,6 +195,9 @@ disallow (default none).
 disables acceptance of anonymous bind requests.
 .B bind_simple
 disables simple (bind) authentication.
+.B bind_simple_unprotected
+disables simple (bind) authentication when confidentiality
+protections (e.g. TLS) are not in place.
 .B bind_krbv4
 disables Kerberos V4 (bind) authentication.
 .B tls_2_anon
@@ -208,7 +211,8 @@ disables StartTLS if authenticated (see also
 A SIGHUP signal will only cause a 'gentle' shutdown-attempt:
 .B Slapd
 will stop listening for new connections, but will not close the
-connections to the current clients.  It terminates when all clients
+connections to the current clients.  Future write operations return
+unwilling-to-perform, though.  Slapd terminates when all clients
 have closed their connections (if they ever do), or \- as before \-
 if it receives a SIGTERM signal.  This can be useful if you wish to
 terminate the server and start a new
@@ -447,12 +451,18 @@ The <hash> must be one of
 .BR {SHA} ,
 .BR {SMD5} ,
 .BR {MD5} ,
+.BR {CRYPT} ,
 and
-.BR {CRYPT} .
+.BR {CLEARTEXT} .
 The default is
 .BR {SSHA} .
 
-Note that this option does not alter the normal user applications
+Note that
+.B {CLEARTEXT}
+indicates that the new password should be
+added to userPassword as clear text.
+
+Also, note that this option does not alter the normal user applications
 handling of userPassword during LDAP Add, Modify, or other LDAP operations.
 .TP
 .B password\-crypt\-salt\-format <format>
@@ -499,11 +509,8 @@ requires authentication prior to directory operations.
 requires SASL authentication prior to directory operations.
 .B strong
 requires strong authentication prior to directory operations.
-The
-.B SASL
-and
-.B strong
-conditions are currently same.
+The strong keyword allows protected "simple" authentication
+as well as SASL authentication.
 .B none
 may be used to require no conditions (useful for clearly globally
 set conditions within a particular database).
@@ -518,6 +525,43 @@ Specify the name of an LDIF(5) file containing user defined attributes
 for the root DSE.  These attributes are returned in addition to the
 attributes normally produced by slapd.
 .TP
+.B sasl-authz-policy <policy>
+Used to specify which rules to use for SASL Proxy Authorization. Proxy
+authorization allows a client to authenticate to the server using one
+user's credentials, but specify a different identity to use for authorization
+and access control purposes. It essentially allows user A to login as user
+B, using user A's password.
+The
+.B none
+flag disables proxy authorization. This is the default setting.
+The
+.B from
+flag will use rules in the
+.I saslAuthzFrom
+attribute of the authorization DN.
+The
+.B to
+flag will use rules in the
+.I saslAuthzTo
+attribute of the authentication DN.
+The
+.B both
+flag will allow both of the above. The rules are simply regular expressions
+specifying which DNs are allowed to perform proxy authorization. The
+.I saslAuthzFrom
+attribute in an entry specifies which other users
+are allowed to proxy login to this entry. The
+.I saslAuthzTo
+attribute in
+an entry specifies which other users this user can authorize as.  Use of
+.I saslAuthzTo
+rules can be easily
+abused if users are allowed to write arbitrary values to this attribute.
+In general the
+.I saslAuthzTo
+attribute must be protected with ACLs such that
+only privileged users can modify it.
+.TP
 .B sasl-host <fqdn>
 Used to specify the fully qualified domain name used for SASL processing.
 .TP
index 46586e2c22655098f2a462f8c844ee6f57732ae2..4ad60bbc201d55366a230d1cc9da8d1471d138a5 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPD.REPLOG 5 "20 August 2000" "OpenLDAP LDVERSION"
+.TH SLAPD.REPLOG 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 8dbd40a0ebad2ba60b046cc5419cb1fd7903b8e9..91cb5bf7333cd4b6a74319f558264a4236b36d6e 100644 (file)
@@ -1,4 +1,4 @@
-.TH UD.CONF 5 "20 August 2000" "OpenLDAP LDVERSION"
+.TH UD.CONF 5 "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
index 58c157ed25b56316985ddc2b657e2a948ef92c8c..5c23263ed78eda78b633eb6416dc4b739edc9168 100644 (file)
@@ -1,4 +1,4 @@
-.TH MAIL500 8C "20 August 2000" "OpenLDAP LDVERSION"
+.TH MAIL500 8C "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
diff --git a/doc/man/man8/slapadd.8 b/doc/man/man8/slapadd.8
new file mode 100644 (file)
index 0000000..b7928e2
--- /dev/null
@@ -0,0 +1,105 @@
+.TH SLAPADD 8C "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
+.SH NAME
+slapadd \- Add entries to a SLAPD database
+.SH SYNOPSIS
+.B SBINDIR/slapadd
+.B [\-v]
+.B [\-c]
+.B [\-d level]
+.B [\-b suffix]
+.B [\-n dbnum]
+.B [\-f slapd.conf]
+.B [\-l ldif-file]
+.B 
+.LP
+.SH DESCRIPTION
+.LP
+.B Slapadd
+is used to add entries specified in LDAP Directory Interchange Format
+(LDIF) to a
+.BR slapd (8)
+database.
+It opens the given database determined by the database number or
+suffix and adds entries corresponding to the provided LDIF to
+the database.  The LDIF input is read from standard input or
+the specified file.
+.LP
+As
+.B slapadd
+is designed to accept LDIF in database order, as produced by
+.BR slapcat (8),
+it does not verify that superior entries exist before
+adding an entry. 
+.SH OPTIONS
+.TP
+.B \-v
+enable verbose mode.
+.TP
+.B \-c
+enable continue (ignore errors) mode.
+.TP
+.BI \-d " level"
+enable debugging messages as defined by the specified
+.IR level .
+.TP
+.BI \-b " suffix" 
+Use the specified \fIsuffix\fR to determine which database to
+add entries to.  The \-b cannot be used in conjunction
+with the
+.B \-n
+option.
+.TP
+.BI \-n " dbnum"
+Add entries to the \fIdbnum\fR\-th database listed in the
+configuration file.  The
+.B \-n
+cannot be used in conjunction with the
+.B \-b
+option.
+.TP
+.BI \-f " slapd.conf"
+specify an alternative
+.BR slapd.conf (5)
+file.
+.TP
+.BI \-l " ldif-file"
+Read LDIF from the specified file instead of standard input.
+.SH LIMITATIONS
+Your
+.BR slapd (8)
+should not be running 
+when you do this to ensure consistency of the database.
+.LP
+.B slapadd 
+may not provide naming or schema checks.  It is advisable to
+use
+.BR ldapadd (1)
+when adding new entries into an existing directory.
+.SH EXAMPLES
+To import a entries specified in file
+.B ldif
+into your
+.BR slapd (8)
+database give the command:
+.LP
+.nf
+.ft tt
+       SBINDIR/slapadd -l ldif
+.ft
+.fi
+.SH "SEE ALSO"
+.BR ldap (3),
+.BR ldif (5),
+.BR slapcat (8),
+.BR ldapadd (1),
+.BR slapd (8)
+.LP
+"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
diff --git a/doc/man/man8/slapcat.8 b/doc/man/man8/slapcat.8
new file mode 100644 (file)
index 0000000..f0d1129
--- /dev/null
@@ -0,0 +1,96 @@
+.TH SLAPCAT 8C "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
+.SH NAME
+slapcat \- SLAPD database to LDIF utility
+.SH SYNOPSIS
+.B SBINDIR/slapcat
+.B [\-v]
+.B [\-c]
+.B [\-d level]
+.B [\-b suffix]
+.B [\-n dbnum]
+.B [\-f slapd.conf]
+.B [\-l ldif-file]
+.B 
+.LP
+.SH DESCRIPTION
+.LP
+.B Slapcat
+is used to generate an LDAP Directory Interchange Format
+(LDIF) output based upon the contents of a
+.BR slapd (8)
+database.
+It opens the given database determined by the database number or
+suffix and writes the corresponding LDIF to standard output or
+the specified file.
+.LP
+The LDIF generated by this tool is suitable for use with
+.BR slapadd (8).
+As the entries are in database order, not superior first order,
+they cannot be loaded with
+.BR ldapadd (8)
+without being reordered.
+.SH OPTIONS
+.TP
+.B \-v
+enable verbose mode.
+.TP
+.B \-c
+enable continue (ignore errors) mode.
+.TP
+.BI \-d " level"
+enable debugging messages as defined by the specified
+.IR level .
+.TP
+.BI \-b " suffix" 
+Use the specified \fIsuffix\fR to determine which database to
+generate output for.  The \-b cannot be used in conjunction
+with the
+.B \-n
+option.
+.TP
+.BI \-n " dbnum"
+Generate output for the \fIdbnum\fR\-th database listed in the
+configuration file.  The
+.B \-n
+cannot be used in conjunction with the
+.B \-b
+option.
+.TP
+.BI \-f " slapd.conf"
+specify an alternative
+.BR slapd.conf (5)
+file.
+.TP
+.BI \-l " ldif-file"
+Write LDIF to specified file instead of standard output.
+.SH Limitations
+Your
+.BR slapd (8)
+should not be running (at least, not in read-write
+mode) when you do this to ensure consistency of the database.
+.SH EXAMPLES
+To make a text backup of your SLAPD database and put it in a file called
+.BR ldif ,
+give the command:
+.LP
+.nf
+.ft tt
+       SBINDIR/slapcat -l ldif
+.ft
+.fi
+.SH "SEE ALSO"
+.BR ldap (3),
+.BR ldif (5),
+.BR slapadd (8),
+.BR ldapadd (1),
+.BR slapd (8)
+.LP
+"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
index 842aade8e40c7724f6033c793e6d463a489ef7d1..f30dcc0a9f00a2855f45b28481c70e030624d2a5 100644 (file)
@@ -1,11 +1,12 @@
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
-.TH SLAPD 8C "5 Novemeber 2000" "OpenLDAP LDVERSION"
+.TH SLAPD 8C "RELEASEDATE" "OpenLDAP LDVERSION"
 .SH NAME
 slapd \- Stand-alone LDAP Daemon
 .SH SYNOPSIS
 .B LIBEXECDIR/slapd 
+.B [\-[4|6]]
 .B [\-d debug\-level]
 .B [\-f slapd\-config\-file]
 .B [\-h URLs]
@@ -57,6 +58,12 @@ See the "OpenLDAP Administrator's Guide" for more details on
 .BR slapd .
 .SH OPTIONS
 .TP
+.B \-4
+Listen on IPv4 addresses only.
+.TP
+.B \-6
+Listen on IPv6 addresses only.
+.TP
 .BI \-d " debug\-level"
 Turn on debugging as defined by
 .I debug\-level.
index d44aa1e2fefc769d65f7c9e36af68b5efafd4817..5b77e152cebf2abb192ffb5c9d89df7c67b402fe 100644 (file)
@@ -1,4 +1,4 @@
-.TH SLAPINDEX 8C "20 August 2000" "OpenLDAP LDVERSION"
+.TH SLAPINDEX 8C "RELEASEDATE" "OpenLDAP LDVERSION"
 .\" $OpenLDAP$
 .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
diff --git a/doc/man/man8/slappasswd.8 b/doc/man/man8/slappasswd.8
new file mode 100644 (file)
index 0000000..4b34bc0
--- /dev/null
@@ -0,0 +1,85 @@
+.TH SLAPPASSWD 8C "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
+.SH NAME
+slappasswd \- OpenLDAP password utility
+.SH SYNOPSIS
+.B SBINDIR/slappasswd
+.B [\-v]
+.B [\-u]
+.B [\-s secret]
+.B [\-h hash]
+.B [\-c salt-format]
+.B 
+.LP
+.SH DESCRIPTION
+.LP
+.B Slappasswd
+is used to generate an userPassword value
+suitable for use with
+.BR ldapmodify (1)
+or
+.BR slapd.conf (5)
+.I rootpw
+configuration directive.
+.SH OPTIONS
+.TP
+.B \-v
+enable verbose mode.
+.TP
+.B \-u
+Generate RFC2307 userPassword values (the default).  Future
+versions of this program may generate alternative syntaxes
+by default.  This option is provided for forward compatibility.
+.TP
+.BI \-s " secret"
+The secret to hash.  If not provided, the user will be prompted
+for the secret to hash.
+.TP
+.BI \-h " scheme"
+If -h is specified, one of the following RFC2307 schemes may
+be specified:
+.IR {CRYPT} ,
+.IR {MD5} ,
+.IR {SMD5} ,
+.IR {SSHA} ", and"
+.IR {SHA} .
+The default is 
+.IR {SSHA} .
+.TP
+.BI \-c " crypt-salt-format"
+Specify the format of the salt passed to
+.BR crypt (3)
+when generating {CRYPT} passwords.  
+This string needs to be in
+.BR sprintf (3)
+format and may include one (and only one) %s conversion.
+This conversion will be substituted with a string random
+characters from [A\-Za\-z0\-9./].  For example, "%.2s"
+provides a two character salt and "$1$%.8s" tells some
+versions of crypt(3) to use an MD5 algorithm and provides
+8 random characters of salt.  The default is "%s", which
+provides 31 characters of salt.
+.SH LIMITATIONS
+The practice storing hashed passwords in userPassword violates
+Standard Track (RFC2256) schema specifications and may hinder
+interoperability.  A new attribute type to hold hashed
+passwords is needed.
+.SH "SECURITY CONSIDERATIONS"
+Use of hashed passwords does not protect passwords during
+protocol transfer.  TLS or other eavesdropping protections
+should be inplace before using LDAP simple bind.  The
+hashed password values should be protected as if they
+were clear text passwords.
+.SH "SEE ALSO"
+.BR ldappasswd (1),
+.BR ldapmodify (1),
+.BR slapd (8)
+.BR slapd.conf (5)
+.LP
+"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
+.SH ACKNOWLEDGEMENTS
+OpenLDAP is developed and maintained by
+The OpenLDAP Project (http://www.openldap.org/).
+OpenLDAP is derived from University of Michigan LDAP 3.3 Release.  
index 037584e8a1c7e27082f3917cd671a35c89805816..3a56d9ea5e671edc093407eee32b209ba69712a1 100644 (file)
@@ -1,8 +1,11 @@
-.TH SLURPD 8C "6 November 1995" "U-M LDAP LDVERSION"
+.TH SLURPD 8C "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
 slurpd \- Standalone LDAP Update Replication Daemon
 .SH SYNOPSIS
-.B ETCDIR/slurpd [\-d debug\-level]
+.B LIBEXECDIR/slurpd [\-d debug\-level]
 .B [\-f slapd\-config\-file] [\-r slapd\-replog\-file]
 .B [\-t temp\-dir] [\-o] [\-k srvtab\-file]
 .B 
@@ -62,7 +65,7 @@ for details on the standalone LDAP daemon.
 .BI \-d " debug\-level"
 Turn on debugging as defined by
 .I debug\-level.
-If this option is specified,
+If this option is specified, even with a zero argument,
 .B slurpd
 will not fork or disassociate from the invoking terminal.  Some general
 operation and status messages are printed for any value of \fIdebug\-level\fP.
@@ -79,7 +82,8 @@ Specifies the name of the
 replication logfile.  Normally, the name
 of the replication log file is read from the 
 .B slapd
-configuration file.
+configuration file.  The file should be located in a directory
+with limited read/write/execute access.
 The
 .B \-r
 option allows you to override this.  In conjunction with the
@@ -104,9 +108,11 @@ processes a replication log and exits.
 .BI \-t " temp\-dir"
 .B slurpd
 copies the replication log to a working directory before processing it.
+The directory permissions should limit read/write/execute access as
+temporary files may contain sensitive information.
 This option allows you to specify the location of these temporary files. 
 The default is
-.BR /usr/tmp .
+.BR LOCALSTATEDIR/openldap-slurp .
 .TP
 .BI \-k " srvtab\-file"
 Specify the location of the kerberos srvtab file which contains keys
@@ -126,7 +132,7 @@ just type:
 .LP
 .nf
 .ft tt
-       ETCDIR/slurpd
+       LIBEXECDIR/slurpd
 .ft
 .fi
 .LP
@@ -139,7 +145,7 @@ on voluminous debugging which will be printed on standard error, type:
 .LP
 .nf
 .ft tt
-       ETCDIR/slurpd -f /usr/local/etc/slapd.conf -d 255
+       LIBEXECDIR/slurpd -f ETCDIR/slapd.conf -d 255
 .ft
 .fi
 .LP
@@ -148,4 +154,9 @@ on voluminous debugging which will be printed on standard error, type:
 .BR slapd.replog (5),
 .BR slapd (8)
 .LP
-"The SLAPD and SLURPD Administrator's Guide"
+"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
+.SH ACKNOWLEDGEMENTS
+.B     OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B     OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
diff --git a/include/ac/socket.h b/include/ac/socket.h
new file mode 100644 (file)
index 0000000..6e931ab
--- /dev/null
@@ -0,0 +1,204 @@
+/* Generic socket.h */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.  A copy of this license is available at
+ * http://www.OpenLDAP.org/license.html or in file LICENSE in the
+ * top-level directory of the distribution.
+ */
+
+#ifndef _AC_SOCKET_H_
+#define _AC_SOCKET_H_
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+
+#ifdef HAVE_SYS_UN_H
+#include <sys/un.h>
+#endif
+
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
+#include <netinet/in.h>
+
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#ifdef HAVE_ARPA_NAMESER_H
+#include <arpa/nameser.h>
+#endif
+
+#include <netdb.h>
+
+#ifdef HAVE_RESOLV_H
+#include <resolv.h>
+#endif
+
+#endif /* HAVE_SYS_SOCKET_H */
+
+#ifdef HAVE_WINSOCK2
+#include <winsock2.h>
+#elif HAVE_WINSOCK
+#include <winsock.h>
+#endif
+
+#ifdef HAVE_PCNFS
+#include <tklib.h>
+#endif /* HAVE_PCNFS */
+
+#ifndef INADDR_LOOPBACK
+#define INADDR_LOOPBACK        (0x7f000001UL)
+#endif
+
+#ifndef MAXHOSTNAMELEN
+#define MAXHOSTNAMELEN  64
+#endif
+
+#undef sock_errno
+#undef sock_errstr
+#define sock_errno()   errno
+#define sock_errstr(e) STRERROR(e)
+
+#ifdef HAVE_WINSOCK
+#      define tcp_read( s, buf, len )  recv( s, buf, len, 0 )
+#      define tcp_write( s, buf, len ) send( s, buf, len, 0 )
+#      define ioctl( s, c, a )         ioctlsocket( (s), (c), (a) )
+#      define ioctl_t                          u_long
+#      define AC_SOCKET_INVALID        ((unsigned int) ~0)
+
+#      ifdef SD_BOTH
+#              define tcp_close( s )   (shutdown( s, SD_BOTH ), closesocket( s ))
+#      else
+#              define tcp_close( s )           closesocket( s )
+#      endif
+
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define EINPROGRESS WSAEINPROGRESS
+#define ETIMEDOUT      WSAETIMEDOUT
+
+#undef sock_errno
+#undef sock_errstr
+#define        sock_errno()    WSAGetLastError()
+#define        sock_errstr(e)  ber_pvt_wsa_err2string(e)
+
+LBER_F( char * ) ber_pvt_wsa_err2string LDAP_P((int));
+
+#elif MACOS
+#      define tcp_close( s )           tcpclose( s )
+#      define tcp_read( s, buf, len )  tcpread( s, buf, len )
+#      define tcp_write( s, buf, len ) tcpwrite( s, buf, len )
+
+#elif DOS
+#      ifdef PCNFS
+#              define tcp_close( s )   close( s )
+#              define tcp_read( s, buf, len )  recv( s, buf, len, 0 )
+#              define tcp_write( s, buf, len ) send( s, buf, len, 0 )
+#      endif /* PCNFS */
+#      ifdef NCSA
+#              define tcp_close( s )   do { netclose( s ); netshut() } while(0)
+#              define tcp_read( s, buf, len )  nread( s, buf, len )
+#              define tcp_write( s, buf, len ) netwrite( s, buf, len )
+#      endif /* NCSA */
+
+#elif HAVE_CLOSESOCKET
+#      define tcp_close( s )           closesocket( s )
+
+#      ifdef __BEOS__
+#              define tcp_read( s, buf, len )  recv( s, buf, len, 0 )
+#              define tcp_write( s, buf, len ) send( s, buf, len, 0 )
+#      endif
+
+#else
+#      define tcp_read( s, buf, len)   read( s, buf, len )
+#      define tcp_write( s, buf, len)  write( s, buf, len )
+
+#      ifdef SHUT_RDWR
+#              define tcp_close( s )   (shutdown( s, SHUT_RDWR ), close( s ))
+#      else
+#              define tcp_close( s )   close( s )
+#      endif
+
+#ifdef HAVE_PIPE
+/*
+ * Only use pipe() on systems where file and socket descriptors
+ * are interchangable
+ */
+#      define USE_PIPE HAVE_PIPE
+#endif
+
+#endif /* MACOS */
+
+#ifndef ioctl_t
+#      define ioctl_t                          int
+#endif
+
+#ifndef AC_SOCKET_INVALID
+#      define AC_SOCKET_INVALID        (-1)
+#endif
+#ifndef AC_SOCKET_ERROR
+#      define AC_SOCKET_ERROR          (-1)
+#endif
+
+#if !defined( HAVE_INET_ATON ) && !defined( inet_aton )
+#      define inet_aton ldap_pvt_inet_aton
+struct in_addr;
+LDAP_F (int) ldap_pvt_inet_aton LDAP_P(( const char *, struct in_addr * ));
+#endif
+
+#if    defined(__WIN32) && defined(_ALPHA)
+/* NT on Alpha is hosed. */
+#      define AC_HTONL( l ) \
+        ((((l)&0xffU)<<24) + (((l)&0xff00U)<<8) + \
+         (((l)&0xff0000U)>>8) + (((l)&0xff000000U)>>24))
+#      define AC_NTOHL(l) AC_HTONL(l)
+
+#else
+#      define AC_HTONL( l ) htonl( l )
+#      define AC_NTOHL( l ) ntohl( l )
+#endif
+
+/* htons()/ntohs() may be broken much like htonl()/ntohl() */
+#define AC_HTONS( s ) htons( s )
+#define AC_NTOHS( s ) ntohs( s )
+
+#ifdef LDAP_PF_LOCAL
+#  if !defined( AF_LOCAL ) && defined( AF_UNIX )
+#    define AF_LOCAL   AF_UNIX
+#  endif
+#  if !defined( PF_LOCAL ) && defined( PF_UNIX )
+#    define PF_LOCAL   PF_UNIX
+#  endif
+#endif
+
+#ifndef INET_ADDRSTRLEN
+#      define INET_ADDRSTRLEN 16
+#endif
+#ifndef INET6_ADDRSTRLEN
+#      define INET6_ADDRSTRLEN 46
+#endif
+
+#ifdef HAVE_GETADDRINFO
+#      ifdef HAVE_GAI_STRERROR
+#              define AC_GAI_STRERROR(x)       (gai_strerror((x)))
+#      else
+#              define AC_GAI_STRERROR(x)       (ldap_pvt_gai_strerror((x)))
+               char * ldap_pvt_gai_strerror( int );
+#      endif
+#endif
+
+#endif /* _AC_SOCKET_H_ */
index 654de6d66220f60e277feec803c1caf0422639da..f3a5f4164ab128a6300020dd7f90e2397875125e 100644 (file)
 /* define to support SASL passwords */
 #undef SLAPD_SPASSWD
 
+/* define to support multimaster replication */
+#undef SLAPD_MULTIMASTER
+
 /* define to support phonetic */
 #undef SLAPD_PHONETIC
 
index 95dc49b79e32dbf4a0b9c29d367f93a46233afce..6474acd56d4f3481d0d48882a35a522644b70145 100644 (file)
@@ -191,7 +191,7 @@ ber_free( BerElement *ber, int freebuf )
 int
 ber_flush( Sockbuf *sb, BerElement *ber, int freeit )
 {
-       ber_len_t       nwritten, towrite;
+       ber_len_t       towrite;
        ber_slen_t      rc;     
 
        assert( sb != NULL );
@@ -222,16 +222,14 @@ ber_flush( Sockbuf *sb, BerElement *ber, int freeit )
 #endif
        }
 
-       nwritten = 0;
-       do {
+       while ( towrite > 0 ) {
                rc = ber_int_sb_write( sb, ber->ber_rwptr, towrite );
                if (rc<=0) {
                        return -1;
                }
                towrite -= rc;
-               nwritten += rc;
                ber->ber_rwptr += rc;
-       } while ( towrite > 0 );
+       } 
 
        if ( freeit )
                ber_free( ber, 1 );
index 74e31281ca592d0464906b10ea07ea706d1ebc60..b0a7ed691a44329f38baf7c434b9db12d00fd5fc 100644 (file)
@@ -138,8 +138,8 @@ ldap_extended_operation_s(
         return( ld->ld_errno );
        }
 
-       *retoidp = NULL;
-       *retdatap = NULL;
+       if ( retoidp != NULL ) *retoidp = NULL;
+       if ( retdatap != NULL ) *retdatap = NULL;
 
        rc = ldap_parse_extended_result( ld, res, retoidp, retdatap, 0 );
 
index 0084743d8498fe922a32e9aade7835416abbe656..7412a58014d067c5b702ae566db0dd77bff2ed90 100644 (file)
 
 int ldap_int_tblsize = 0;
 
+#if defined( HAVE_GETADDRINFO ) && defined( HAVE_INET_NTOP )
+int ldap_int_inet4or6 = AF_UNSPEC;
+#endif
+
 /*
  * nonblock connect code
  * written by Lars Uffmann, <lars.uffmann@mediaway.net>.
@@ -340,7 +344,7 @@ ldap_connect_to_host(LDAP *ld, Sockbuf *sb,
                struct addrinfo hints, *res, *sai;
 
                memset( &hints, '\0', sizeof(hints) );
-               hints.ai_family = AF_UNSPEC;
+               hints.ai_family = ldap_int_inet4or6;
                hints.ai_socktype = socktype;
 
                snprintf(serv, sizeof serv, "%d", port );
index f1d4fc1345901e82d4efbd537ca9e0182f6d34e9..5bfb832ede0dc634143cf550d8dc18d924ae1a73 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "portable.h"
+#include "ldap_config.h"
 
 #include <stdio.h>
 
@@ -17,6 +18,7 @@
 #include <ac/time.h>
 #include <ac/unistd.h>
 #include <ac/param.h>
+#include <ac/dirent.h>
 
 #include "ldap-int.h"
 
@@ -339,10 +341,43 @@ get_ca_list( char * bundle, char * dir )
        if ( bundle ) {
                ca_list = SSL_load_client_CA_file( bundle );
        }
-       /*
-        * FIXME: We have now to go over all files in dir, load them
-        * and add every certificate there to ca_list.
-        */
+       if ( dir ) {
+               DIR *dirp;
+               struct dirent *d;
+               char buf[MAXPATHLEN];
+               int l = strlen(dir), freeit = 0;
+
+               if (l > sizeof(buf))
+                       goto done;
+
+               dirp = opendir( dir );
+
+               if ( !ca_list ) {
+                       ca_list = sk_X509_NAME_new_null();
+                       freeit = 1;
+               }
+
+               strcpy(buf, dir);
+
+               while ( dirp ) {
+                       if ( ( d = readdir( dirp )) == NULL) {
+                               closedir( dirp );
+                               break;
+                       }
+                       if (l + sizeof(LDAP_DIRSEP) + NAMLEN(d) > sizeof(buf))
+                               continue;
+
+                       sprintf( buf+l, LDAP_DIRSEP "%s", d->d_name );
+                       if ( SSL_add_file_cert_subjects_to_stack(ca_list, buf)) {
+                               freeit = 0;
+                       }
+               }
+               if ( freeit ) {
+                       sk_X509_NAME_free( ca_list );
+                       ca_list = NULL;
+               }
+       }
+done:
        return ca_list;
 }
 
index dba06c9b2b1d8e5901726477d4a9755de7e5c901..7a04154b98d65787e16778a9102f104214414223 100644 (file)
@@ -180,6 +180,11 @@ static struct berval *hash_crypt(
        const struct berval *passwd );
 #endif
 
+#ifdef SLAPD_CLEARTEXT
+static struct berval *hash_clear(
+       const struct pw_scheme *scheme,
+       const struct berval *passwd );
+#endif
 
 static const struct pw_scheme pw_schemes[] =
 {
@@ -212,7 +217,7 @@ static const struct pw_scheme pw_schemes[] =
 
 #ifdef SLAPD_CLEARTEXT
        /* psuedo scheme */
-       { {0, "{CLEARTEXT}"}, NULL, NULL },
+       { {0, "{CLEARTEXT}"}, NULL, hash_clear },
 #endif
 
        { {0, NULL}, NULL, NULL }
@@ -224,11 +229,9 @@ static const struct pw_scheme *get_scheme(
        int i;
 
        for( i=0; pw_schemes[i].name.bv_val; i++) {
-               if( pw_schemes[i].name.bv_len == 0 ) continue;
+               if( pw_schemes[i].name.bv_val == NULL ) continue;
 
-               if( strncasecmp(scheme, pw_schemes[i].name.bv_val,
-                       pw_schemes[i].name.bv_len) == 0 )
-               {
+               if( strcasecmp(scheme, pw_schemes[i].name.bv_val ) == 0 ) {
                        return &pw_schemes[i];
                }
        }
@@ -1257,3 +1260,14 @@ int lutil_salt_format(const char *format)
 
        return 0;
 }
+
+#ifdef SLAPD_CLEARTEXT
+static struct berval *hash_clear(
+       const struct pw_scheme *scheme,
+       const struct berval  *passwd )
+{
+       return ber_bvdup( (struct berval *) passwd );
+}
+#endif
+
+
index 3b73c8d9d9a37b6b430e8172968d6063a8c46178..46159d21563a4ae45032583586c4270b58c2cbda 100644 (file)
@@ -37,7 +37,13 @@ static struct berval
        aci_bv_set              = BER_BVC("set"),
        aci_bv_set_ref          = BER_BVC("set-ref"),
        aci_bv_grant            = BER_BVC("grant"),
-       aci_bv_deny             = BER_BVC("deny");
+       aci_bv_deny             = BER_BVC("deny"),
+       
+       aci_bv_group_class      = BER_BVC(SLAPD_GROUP_CLASS),
+       aci_bv_group_attr       = BER_BVC(SLAPD_GROUP_ATTR),
+       aci_bv_role_class       = BER_BVC(SLAPD_ROLE_CLASS),
+       aci_bv_role_attr        = BER_BVC(SLAPD_ROLE_ATTR);
+
 
 static AccessControl * acl_get(
        AccessControl *ac, int *count,
@@ -1328,21 +1334,6 @@ acl_check_modlist(
        return( 1 );
 }
 
-#if 0 /* not used any more */
-static char *
-aci_bvstrdup( struct berval *bv )
-{
-       char *s;
-
-       s = (char *)ch_malloc(bv->bv_len + 1);
-       if (s != NULL) {
-               AC_MEMCPY(s, bv->bv_val, bv->bv_len);
-               s[bv->bv_len] = 0;
-       }
-       return(s);
-}
-#endif
-
 static int
 aci_get_part(
        struct berval *list,
@@ -1680,7 +1671,7 @@ aci_group_member (
                char buf[ACL_BUF_SIZE];
                struct berval bv, ndn;
                bv.bv_len = sizeof( buf );
-               bv.bv_val = &buf;
+               bv.bv_val = (char *)&buf;
                string_expand(&bv, &subjdn, e->e_ndn, matches);
                if ( dnNormalize2(NULL, &bv, &ndn) == LDAP_SUCCESS ) {
                        rc = (backend_group(be, conn, op, e, &ndn, &op->o_ndn, grp_oc, grp_ad) == 0);
@@ -1692,15 +1683,6 @@ done:
        return(rc);
 }
 
-static struct berval GroupClass = {
-       sizeof(SLAPD_GROUP_CLASS)-1, SLAPD_GROUP_CLASS };
-static struct berval GroupAttr = {
-       sizeof(SLAPD_GROUP_ATTR)-1, SLAPD_GROUP_ATTR };
-static struct berval RoleClass = {
-       sizeof(SLAPD_ROLE_CLASS)-1, SLAPD_ROLE_CLASS };
-static struct berval RoleAttr = {
-       sizeof(SLAPD_ROLE_ATTR)-1, SLAPD_ROLE_ATTR };
-
 static int
 aci_mask(
     Backend                    *be,
@@ -1768,10 +1750,9 @@ aci_mask(
                                rc = 0;
                        free(ndn.bv_val);
                }
-               return(rc);
-       }
+               return (rc);
 
-       if (ber_bvstrcasecmp( &aci_bv_self, &bv ) == 0) {
+       } else if (ber_bvstrcasecmp( &aci_bv_self, &bv ) == 0) {
                if (dn_match(&op->o_ndn, &e->e_nname))
                        return(1);
 
@@ -1804,11 +1785,11 @@ aci_mask(
 
 
        } else if (ber_bvstrcasecmp( &aci_bv_group, &bv ) == 0) {
-               if (aci_group_member(&sdn, &GroupClass, &GroupAttr, be, e, conn, op, matches))
+               if (aci_group_member(&sdn, &aci_bv_group_class, &aci_bv_group_attr, be, e, conn, op, matches))
                        return(1);
 
        } else if (ber_bvstrcasecmp( &aci_bv_role, &bv ) == 0) {
-               if (aci_group_member(&sdn, &RoleClass, &RoleAttr, be, e, conn, op, matches))
+               if (aci_group_member(&sdn, &aci_bv_role_class, &aci_bv_role_attr, be, e, conn, op, matches))
                        return(1);
 
        } else if (ber_bvstrcasecmp( &aci_bv_set, &bv ) == 0) {
index a348631cc73205f4f1564e750ddaf69f75e85d53..8c26e9a08054771297a633e2cfe9b428ed46f2b7 100644 (file)
@@ -309,7 +309,7 @@ retry:      /* transaction retry */
                goto done;
        }
 
-       rc = bdb_dn2id_children( be, ltid, &e->e_nname );
+       rc = bdb_dn2id_children( be, ltid, &e->e_nname, 0 );
        if( rc != DB_NOTFOUND ) {
                switch( rc ) {
                case DB_LOCK_DEADLOCK:
index a6440536f7ebb662761bab2260d71ab522273371..497514113050e57a51ed8ceefc2739dff0c994da 100644 (file)
@@ -44,9 +44,9 @@ bdb_dn2entry_rw(
 
        if( matched != NULL ) {
                *matched = NULL;
-               rc = bdb_dn2id_matched( be, tid, dn, &id, &id2 );
+               rc = bdb_dn2id_matched( be, tid, dn, &id, &id2, flags );
        } else {
-               rc = bdb_dn2id( be, tid, dn, &id );
+               rc = bdb_dn2id( be, tid, dn, &id, flags );
        }
 
        if( rc != 0 ) {
index d9792904fb64bcb48a55dc55f4e4876d842644e7..ea63172b6aa7f11d0a9b3197908f3116c66d53a5 100644 (file)
@@ -270,7 +270,8 @@ bdb_dn2id(
        BackendDB       *be,
        DB_TXN *txn,
        struct berval   *dn,
-       ID *id )
+       ID *id,
+       int flags )
 {
        int             rc;
        DBT             key, data;
@@ -304,7 +305,7 @@ bdb_dn2id(
        data.flags = DB_DBT_USERMEM;
 
        /* fetch it */
-       rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags );
+       rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags | flags);
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
@@ -335,7 +336,8 @@ bdb_dn2id_matched(
        DB_TXN *txn,
        struct berval   *in,
        ID *id,
-       ID *id2 )
+       ID *id2,
+       int flags )
 {
        int             rc;
        DBT             key, data;
@@ -383,7 +385,7 @@ bdb_dn2id_matched(
                        break;
                } else {
                        /* fetch it */
-                       rc = db->get(db, txn, &key, &data, bdb->bi_db_opflags );
+                       rc = db->get(db, txn, &key, &data, bdb->bi_db_opflags | flags );
                }
 
                if( rc == DB_NOTFOUND ) {
@@ -459,7 +461,8 @@ int
 bdb_dn2id_children(
        BackendDB       *be,
        DB_TXN *txn,
-       struct berval *dn )
+       struct berval *dn, 
+       int flags )
 {
        int             rc;
        DBT             key, data;
@@ -489,7 +492,7 @@ bdb_dn2id_children(
        data.doff = 0;
        data.dlen = sizeof(id);
 
-       rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags );
+       rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags | flags );
        free( key.data );
 
 #ifdef NEW_LOGGING
index 0a841cab21e1c7099e740d2ef8e7886d067e8133..ef377fd5bd4f84365a29e6c113a5a2e9462bfe4b 100644 (file)
@@ -104,7 +104,7 @@ int bdb_id2entry_rw(
        }
 
        /* fetch it */
-       rc = db->get( db, tid, &key, &data, bdb->bi_db_opflags );
+       rc = db->get( db, tid, &key, &data, bdb->bi_db_opflags | ( rw ? DB_RMW : 0 ));
 
        if( rc != 0 ) {
                return rc;
index d205b60060b3b925e34da6ed69b678309afb62be..a6c80c3992387031425be0e5a378714532c7f43c 100644 (file)
@@ -356,7 +356,7 @@ retry:      /* transaction retry */
                ber_bvarray_free( refs );
                free( matched_dn );
 
-               return rc;
+               goto done;
        }
 
        if ( !manageDSAit && is_entry_referral( e ) ) {
index 30f345c7f072ed1193e2aaef51b0eb7c6f647a2c..439fcc2b5de47df2dca37c46af60cc96ffe7398d 100644 (file)
@@ -130,7 +130,7 @@ retry:      /* transaction retry */
        op->o_private = &opinfo;
 
        /* get entry */
-       rc = bdb_dn2entry_w( be, ltid, ndn, &e, &matched, 0, locker, &lock );
+       rc = bdb_dn2entry_w( be, ltid, ndn, &e, &matched, DB_RMW, locker, &lock );
 
        switch( rc ) {
        case 0:
@@ -520,7 +520,7 @@ retry:      /* transaction retry */
                new_ndn.bv_val, 0, 0 );
 #endif
 
-       rc = bdb_dn2id ( be, ltid, &new_ndn, &id );
+       rc = bdb_dn2id ( be, ltid, &new_ndn, &id, 0 );
        switch( rc ) {
        case DB_LOCK_DEADLOCK:
        case DB_LOCK_NOTGRANTED:
index 5278c23ba3baa83ca6ed59a29f9a81223b903eab..9cff5cb3fc42316eced86b2192872d310e0372f9 100644 (file)
@@ -87,7 +87,7 @@ retry:        /* transaction retry */
        opinfo.boi_err = 0;
        op->o_private = &opinfo;
 
-       rc = bdb_dn2id_children( be, ltid, &e->e_nname );
+       rc = bdb_dn2id_children( be, ltid, &e->e_nname, 0 );
        
        switch( rc ) {
        case DB_LOCK_DEADLOCK:
index f5c7af92fd366317f5c380ea9e4a9ece9c14d031..7adf2f0d4747d67e9a6a2768f36cd97a4d389ada 100644 (file)
@@ -69,14 +69,16 @@ int bdb_dn2id(
        BackendDB *be,
        DB_TXN *tid,
        struct berval *dn,
-       ID *id );
+       ID *id,
+       int flags );
 
 int bdb_dn2id_matched(
        BackendDB *be,
        DB_TXN *tid,
        struct berval *dn,
        ID *id,
-       ID *id2 );
+       ID *id2,
+       int flags );
 
 int bdb_dn2id_add(
        BackendDB *be,
@@ -93,7 +95,8 @@ int bdb_dn2id_delete(
 int bdb_dn2id_children(
        BackendDB *be,
        DB_TXN *tid,
-       struct berval *dn );
+       struct berval *dn,
+       int flags );
 
 int
 bdb_dn2idl(
index 2c1af55ef793c2da2059f3bb7f9c11bee4a9dc92..c0e532930a884995f4ddb0b0b37b2248651037fd 100644 (file)
@@ -242,7 +242,7 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op)
                ( void )rewrite_session_init( li->rwinfo, conn );
 #endif /* ENABLE_REWRITE */
 
-               if ( lc->conn->c_cdn.bv_len != 0 ) {
+               if ( lc->conn->c_dn.bv_len != 0 ) {
                        
                        /*
                         * Rewrite the bind dn if needed
@@ -251,23 +251,23 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op)
                        lc->bound_dn.bv_val = NULL;
                        lc->bound_dn.bv_len = 0;
                        switch ( rewrite_session( li->rwinfo, "bindDn",
-                                               lc->conn->c_cdn.bv_val, conn,
+                                               lc->conn->c_dn.bv_val, conn,
                                                &lc->bound_dn.bv_val ) ) {
                        case REWRITE_REGEXEC_OK:
                                if ( lc->bound_dn.bv_val == NULL ) {
-                                       ber_dupbv( &lc->bound_dn, &lc->conn->c_cdn );
+                                       ber_dupbv( &lc->bound_dn, &lc->conn->c_dn );
                                }
 #ifdef NEW_LOGGING
                                LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
                                                "[rw] bindDn: \"%s\" ->"
                                                " \"%s\"\n%s",
-                                               lc->conn->c_cdn.bv_val,
+                                               lc->conn->c_dn.bv_val,
                                                lc->bound_dn.bv_val ));
 #else /* !NEW_LOGGING */
                                Debug( LDAP_DEBUG_ARGS,
                                                "rw> bindDn: \"%s\" ->"
                                                " \"%s\"\n%s",
-                                               lc->conn->c_cdn.bv_val,
+                                               lc->conn->c_dn.bv_val,
                                                lc->bound_dn.bv_val, "" );
 #endif /* !NEW_LOGGING */
                                break;
@@ -288,8 +288,8 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op)
                        }
 #else /* !ENABLE_REWRITE */
                        struct berval bv;
-                       ldap_back_dn_massage( li, &lc->conn->c_cdn, &bv, 0, 1 );
-                       if ( bv.bv_val == lc->conn->c_cdn.bv_val )
+                       ldap_back_dn_massage( li, &lc->conn->c_dn, &bv, 0, 1 );
+                       if ( bv.bv_val == lc->conn->c_dn.bv_val )
                                ber_dupbv( &lc->bound_dn, &bv );
                        else
                                lc->bound_dn = bv;
index f40fd8273f3aefca0f40785b4397ac9d0364218f..a8e82ad0eacd6c612c246ca2760630c0d1bce8c8 100644 (file)
@@ -232,7 +232,7 @@ ldap_back_db_config(
 
                if ( argc < 3 || argc > 4 ) {
                        fprintf( stderr,
-       "%s: line %d: syntax is \"map {objectclass | attribute} {<source> | *} [<dest> | *]\"\n",
+       "%s: line %d: syntax is \"map {objectclass | attribute} [<local> | *] {<foreign> | *}\"\n",
                                fname, lineno );
                        return( 1 );
                }
@@ -243,32 +243,24 @@ ldap_back_db_config(
                        map = &li->at_map;
                } else {
                        fprintf( stderr, "%s: line %d: syntax is "
-                               "\"map {objectclass | attribute} {<source> | *} "
-                                       "[<dest> | *]\"\n",
+                               "\"map {objectclass | attribute} [<local> | *] "
+                               "{<foreign> | *}\"\n",
                                fname, lineno );
                        return( 1 );
                }
 
-               if ( strcasecmp( argv[2], "*" ) != 0 ) {
-                       src = argv[2];
-                       if ( argc < 4 )
-                               dst = "";
-                       else if ( strcasecmp( argv[3], "*" ) == 0 )
-                               dst = src;
-                       else
-                               dst = argv[3];
-               } else {
-                       if ( argc < 4 ) {
-                               map->drop_missing = 1;
+               if ( strcmp( argv[2], "*" ) == 0 ) {
+                       if ( argc < 4 || strcmp( argv[3], "*" ) == 0 ) {
+                               map->drop_missing = ( argc < 4 );
                                return 0;
                        }
-                       if ( strcasecmp( argv[3], "*" ) == 0 ) {
-                               map->drop_missing = 0;
-                               return 0;
-                       }
-
-                       src = argv[3];
-                       dst = src;
+                       src = dst = argv[3];
+               } else if ( argc < 4 ) {
+                       src = "";
+                       dst = argv[2];
+               } else {
+                       src = argv[2];
+                       dst = ( strcmp( argv[3], "*" ) == 0 ? src : argv[3] );
                }
 
                if ( ( map == &li->at_map )
@@ -290,15 +282,11 @@ ldap_back_db_config(
                }
                ber_str2bv( src, 0, 1, &mapping->src );
                ber_str2bv( dst, 0, 1, &mapping->dst );
-               if ( *dst != 0 ) {
-                       mapping[1].src = mapping->dst;
-                       mapping[1].dst = mapping->src;
-               } else {
-                       mapping[1].src = mapping->src;
-                       mapping[1].dst = mapping->dst;
-               }
+               mapping[1].src = mapping->dst;
+               mapping[1].dst = mapping->src;
 
-               if ( avl_find( map->map, (caddr_t)mapping, mapping_cmp ) != NULL ||
+               if ( (*src != '\0' &&
+                         avl_find( map->map, (caddr_t)mapping, mapping_cmp ) != NULL) ||
                        avl_find( map->remap, (caddr_t)&mapping[1], mapping_cmp ) != NULL)
                {
                        fprintf( stderr,
@@ -307,8 +295,9 @@ ldap_back_db_config(
                        return 0;
                }
 
-               avl_insert( &map->map, (caddr_t)mapping,
-                                       mapping_cmp, mapping_dup );
+               if ( *src != '\0' )
+                       avl_insert( &map->map, (caddr_t)mapping,
+                                               mapping_cmp, mapping_dup );
                avl_insert( &map->remap, (caddr_t)&mapping[1],
                                        mapping_cmp, mapping_dup );
 
diff --git a/servers/slapd/back-ldap/map.c b/servers/slapd/back-ldap/map.c
new file mode 100644 (file)
index 0000000..7bf1e47
--- /dev/null
@@ -0,0 +1,245 @@
+/* map.c - ldap backend mapping routines */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/* This is an altered version */
+/*
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ * 
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ * 
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ * 
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ * 
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ * 
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ *
+ * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ * 
+ * This software is being modified by Pierangelo Masarati.
+ * The previously reported conditions apply to the modified code as well.
+ * Changes in the original code are highlighted where required.
+ * Credits for the original code go to the author, Howard Chu.
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-ldap.h"
+
+int
+mapping_cmp ( const void *c1, const void *c2 )
+{
+       struct ldapmapping *map1 = (struct ldapmapping *)c1;
+       struct ldapmapping *map2 = (struct ldapmapping *)c2;
+       int rc = map1->src.bv_len - map2->src.bv_len;
+       if (rc) return rc;
+       return ( strcasecmp(map1->src.bv_val, map2->src.bv_val) );
+}
+
+int
+mapping_dup ( void *c1, void *c2 )
+{
+       struct ldapmapping *map1 = (struct ldapmapping *)c1;
+       struct ldapmapping *map2 = (struct ldapmapping *)c2;
+
+       return( ( strcasecmp(map1->src.bv_val, map2->src.bv_val) == 0 ) ? -1 : 0 );
+}
+
+void
+ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping **m )
+{
+       struct ldapmapping *mapping;
+
+       assert( m );
+
+       *m = NULL;
+       
+       mapping = (struct ldapmapping *)ch_calloc( 2, 
+                       sizeof( struct ldapmapping ) );
+       if ( mapping == NULL ) {
+               return;
+       }
+
+       ber_str2bv( "objectclass", sizeof("objectclass")-1, 1, &mapping->src);
+       ber_dupbv( &mapping->dst, &mapping->src );
+       mapping[1].src = mapping->src;
+       mapping[1].dst = mapping->dst;
+
+       avl_insert( &lm->map, (caddr_t)mapping, 
+                       mapping_cmp, mapping_dup );
+       avl_insert( &lm->remap, (caddr_t)&mapping[1], 
+                       mapping_cmp, mapping_dup );
+       *m = mapping;
+}
+
+void
+ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *bv,
+       int remap )
+{
+       Avlnode *tree;
+       struct ldapmapping *mapping, fmapping;
+
+       if (remap)
+               tree = map->remap;
+       else
+               tree = map->map;
+
+       bv->bv_len = 0;
+       bv->bv_val = NULL;
+       fmapping.src = *s;
+       mapping = (struct ldapmapping *)avl_find( tree, (caddr_t)&fmapping, mapping_cmp );
+       if (mapping != NULL) {
+               if ( mapping->dst.bv_val )
+                       *bv = mapping->dst;
+               return;
+       }
+
+       if (!map->drop_missing)
+               *bv = *s;
+
+       return;
+}
+
+char *
+ldap_back_map_filter(
+               struct ldapmap *at_map,
+               struct ldapmap *oc_map,
+               struct berval *f,
+               int remap
+)
+{
+       char *nf, *p, *q, *s, c;
+       int len, extra, plen, in_quote;
+       struct berval m, tmp;
+
+       if (f == NULL)
+               return(NULL);
+
+       len = f->bv_len;
+       extra = len;
+       len *= 2;
+       nf = ch_malloc( len + 1 );
+       if (nf == NULL)
+               return(NULL);
+
+       /* this loop assumes the filter ends with one
+        * of the delimiter chars -- probably ')'.
+        */
+
+       s = nf;
+       q = NULL;
+       in_quote = 0;
+       for (p = f->bv_val; (c = *p); p++) {
+               if (c == '"') {
+                       in_quote = !in_quote;
+                       if (q != NULL) {
+                               plen = p - q;
+                               AC_MEMCPY(s, q, plen);
+                               s += plen;
+                               q = NULL;
+                       }
+                       *s++ = c;
+               } else if (in_quote) {
+                       /* ignore everything in quotes --
+                        * what about attrs in DNs?
+                        */
+                       *s++ = c;
+               } else if (c != '(' && c != ')'
+                       && c != '=' && c != '>' && c != '<'
+                       && c != '|' && c != '&')
+               {
+                       if (q == NULL)
+                               q = p;
+               } else {
+                       if (q != NULL) {
+                               *p = 0;
+                               tmp.bv_len = p - q;
+                               tmp.bv_val = q;
+                               ldap_back_map(at_map, &tmp, &m, remap);
+                               if (m.bv_val == NULL)
+                                       ldap_back_map(oc_map, &tmp, &m, remap);
+                               if (m.bv_val == NULL) {
+                                       m = tmp;
+                               }
+                               extra += p - q;
+                               plen = m.bv_len;
+                               extra -= plen;
+                               if (extra < 0) {
+                                       char *tmpnf;
+                                       while (extra < 0) {
+                                               extra += len;
+                                               len *= 2;
+                                       }
+                                       s -= (long)nf;
+                                       tmpnf = ch_realloc(nf, len + 1);
+                                       if (tmpnf == NULL) {
+                                               ch_free(nf);
+                                               return(NULL);
+                                       }
+                                       nf = tmpnf;
+                                       s += (long)nf;
+                               }
+                               AC_MEMCPY(s, m.bv_val, plen);
+                               s += plen;
+                               *p = c;
+                               q = NULL;
+                       }
+                       *s++ = c;
+               }
+       }
+       *s = 0;
+       return(nf);
+}
+
+char **
+ldap_back_map_attrs(
+               struct ldapmap *at_map,
+               AttributeName *an,
+               int remap
+)
+{
+       int i, j;
+       char **na;
+       struct berval mapped;
+
+       if (an == NULL)
+               return(NULL);
+
+       for (i = 0; an[i].an_name.bv_val; i++) {
+               /*  */
+       }
+
+       na = (char **)ch_calloc( i + 1, sizeof(char *) );
+       if (na == NULL)
+               return(NULL);
+
+       for (i = j = 0; an[i].an_name.bv_val; i++) {
+               ldap_back_map(at_map, &an[i].an_name, &mapped, remap);
+               if (mapped.bv_val != NULL)
+                       na[j++] = mapped.bv_val;
+       }
+       if (j == 0 && i != 0)
+               na[j++] = LDAP_NO_ATTRS;
+       na[j] = NULL;
+
+       return(na);
+}
+
index 7b8f7cf6e54039ed4e0f3b2326478438a17e18cc..107ac5cadb9cc1c350fd99aa8f8527c8ec90e573 100644 (file)
@@ -503,7 +503,7 @@ meta_back_db_config(
 
                if ( argc < 3 || argc > 4 ) {
                        fprintf( stderr,
-       "%s: line %d: syntax is \"map {objectclass | attribute} {<source> | *} [<dest> | *]\"\n",
+       "%s: line %d: syntax is \"map {objectclass | attribute} [<local> | *] {<foreign> | *}\"\n",
                                fname, lineno );
                        return 1;
                }
@@ -514,32 +514,23 @@ meta_back_db_config(
                        map = &li->targets[ i ]->at_map;
                } else {
                        fprintf( stderr,
-       "%s: line %d: syntax is \"map {objectclass | attribute} {<source> | *} [<dest> | *]\"\n",
+       "%s: line %d: syntax is \"map {objectclass | attribute} [<local> | *] {<foreign> | *}\"\n",
                                fname, lineno );
                        return 1;
                }
 
-               if ( strcasecmp( argv[ 2 ], "*" ) != 0 ) {
-                       src = argv[ 2 ];
-                       if ( argc < 4 ) {
-                               dst = "";
-                       } else if ( strcasecmp( argv[ 3 ], "*" ) == 0 ) {
-                               dst = src;
-                       } else {
-                               dst = argv[ 3 ];
-                       }
-               } else {
-                       if ( argc < 4 ) {
-                               map->drop_missing = 1;
-                               return 0;
-                       }
-                       if ( strcasecmp( argv[ 3 ], "*" ) == 0 ) {
-                               map->drop_missing = 0;
+               if ( strcmp( argv[ 2 ], "*" ) == 0 ) {
+                       if ( argc < 4 || strcmp( argv[ 3 ], "*" ) == 0 ) {
+                               map->drop_missing = ( argc < 4 );
                                return 0;
                        }
-
-                       src = argv[ 3 ];
-                       dst = src;
+                       src = dst = argv[ 3 ];
+               } else if ( argc < 4 ) {
+                       src = "";
+                       dst = argv[ 2 ];
+               } else {
+                       src = argv[ 2 ];
+                       dst = ( strcmp( argv[ 3 ], "*" ) == 0 ? src : argv[ 3 ] );
                }
 
                if ( ( map == &li->targets[ i ]->at_map )
@@ -559,16 +550,12 @@ meta_back_db_config(
                }
                ber_str2bv( src, 0, 1, &mapping->src );
                ber_str2bv( dst, 0, 1, &mapping->dst );
-               if ( *dst != 0 ) {
-                       mapping[ 1 ].src = mapping->dst;
-                       mapping[ 1 ].dst = mapping->src;
-               } else {
-                       mapping[ 1 ].src = mapping->src;
-                       mapping[ 1 ].dst = mapping->dst;
-               }
+               mapping[ 1 ].src = mapping->dst;
+               mapping[ 1 ].dst = mapping->src;
 
-               if ( avl_find( map->map, ( caddr_t )mapping,
-                               mapping_cmp ) != NULL
+               if ( (*src != '\0' &&
+                         avl_find( map->map, ( caddr_t )mapping,
+                               mapping_cmp ) != NULL)
                        || avl_find( map->remap, ( caddr_t )&mapping[ 1 ],
                                mapping_cmp ) != NULL) {
                        fprintf( stderr,
@@ -577,8 +564,9 @@ meta_back_db_config(
                        return 0;
                }
 
-               avl_insert( &map->map, ( caddr_t )mapping,
-                                       mapping_cmp, mapping_dup );
+               if ( *src != '\0' )
+                       avl_insert( &map->map, ( caddr_t )mapping,
+                                               mapping_cmp, mapping_dup );
                avl_insert( &map->remap, ( caddr_t )&mapping[ 1 ],
                                        mapping_cmp, mapping_dup );
 
diff --git a/servers/slapd/back-meta/conn.c b/servers/slapd/back-meta/conn.c
new file mode 100644 (file)
index 0000000..8f17f60
--- /dev/null
@@ -0,0 +1,548 @@
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ *
+ * Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ *
+ * This work has been developed to fulfill the requirements
+ * of SysNet s.n.c. <http:www.sys-net.it> and it has been donated
+ * to the OpenLDAP Foundation in the hope that it may be useful
+ * to the Open Source community, but WITHOUT ANY WARRANTY.
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author and SysNet s.n.c. are not responsible for the consequences
+ *    of use of this software, no matter how awful, even if they arise from 
+ *    flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ *    SysNet s.n.c. cannot be responsible for the consequences of the
+ *    alterations.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ * This software is based on the backend back-ldap, implemented
+ * by Howard Chu <hyc@highlandsun.com>, and modified by Mark Valence
+ * <kurash@sassafras.com>, Pierangelo Masarati <ando@sys-net.it> and other
+ * contributors. The contribution of the original software to the present
+ * implementation is acknowledged in this copyright statement.
+ *
+ * A special acknowledgement goes to Howard for the overall architecture
+ * (and for borrowing large pieces of code), and to Mark, who implemented
+ * from scratch the attribute/objectclass mapping.
+ *
+ * The original copyright statement follows.
+ *
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the
+ *    documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
+
+#define AVL_INTERNAL
+#include "slap.h"
+#include "../back-ldap/back-ldap.h"
+#include "back-meta.h"
+
+/*
+ * Set PRINT_CONNTREE larger than 0 to dump the connection tree (debug only)
+ */
+#define PRINT_CONNTREE 0
+
+/*
+ * meta_back_conn_cmp
+ *
+ * compares two struct metaconn based on the value of the conn pointer;
+ * used by avl stuff
+ */
+int
+meta_back_conn_cmp(
+       const void *c1,
+       const void *c2
+       )
+{
+       struct metaconn *lc1 = ( struct metaconn * )c1;
+        struct metaconn *lc2 = ( struct metaconn * )c2;
+       
+       return ( ( lc1->conn < lc2->conn ) ? -1 :
+                       ( ( lc1->conn > lc2-> conn ) ? 1 : 0 ) );
+}
+
+/*
+ * meta_back_conn_dup
+ *
+ * returns -1 in case a duplicate struct metaconn has been inserted;
+ * used by avl stuff
+ */
+int
+meta_back_conn_dup(
+       void *c1,
+       void *c2
+       )
+{
+       struct metaconn *lc1 = ( struct metaconn * )c1;
+       struct metaconn *lc2 = ( struct metaconn * )c2;
+
+       return( ( lc1->conn == lc2->conn ) ? -1 : 0 );
+}
+
+/*
+ * Debug stuff (got it from libavl)
+ */
+#if PRINT_CONNTREE > 0
+static void
+ravl_print( Avlnode *root, int depth )
+{
+       int     i;
+       
+       if ( root == 0 ) {
+               return;
+       }
+       
+       ravl_print( root->avl_right, depth+1 );
+       
+       for ( i = 0; i < depth; i++ ) {
+               printf( "    " );
+       }
+
+       printf( "c(%d) %d\n", ( ( struct metaconn * )root->avl_data )->conn->c_connid, root->avl_bf );
+       
+       ravl_print( root->avl_left, depth+1 );
+}
+
+static void
+myprint( Avlnode *root )
+{
+       printf( "********\n" );
+       
+       if ( root == 0 ) {
+               printf( "\tNULL\n" );
+       } else {
+               ravl_print( root, 0 );
+       }
+       
+       printf( "********\n" );
+}
+#endif /* PRINT_CONNTREE */
+/*
+ * End of debug stuff
+ */
+
+/*
+ * metaconn_alloc
+ * 
+ * Allocates a connection structure, making room for all the referenced targets
+ */
+static struct metaconn *
+metaconn_alloc( int ntargets )
+{
+       struct metaconn *lc;
+       int i;
+
+       assert( ntargets > 0 );
+
+       lc = ch_calloc( sizeof( struct metaconn ), 1 );
+       if ( lc == NULL ) {
+               return NULL;
+       }
+       
+       /*
+        * make it a null-terminated array ...
+        */
+       lc->conns = ch_calloc( sizeof( struct metasingleconn * ), ntargets+1 );
+       if ( lc->conns == NULL ) {
+               free( lc );
+               return NULL;
+       }
+
+       for ( i = 0; i < ntargets; i++ ) {
+               lc->conns[ i ] =
+                       ch_calloc( sizeof( struct metasingleconn ), 1 );
+               if ( lc->conns[ i ] == NULL ) {
+                       charray_free( ( char ** )lc->conns );
+                       free( lc->conns );
+                       free( lc );
+                       return NULL;
+               }
+       }
+
+       lc->bound_target = META_BOUND_NONE;
+
+       return lc;
+}
+
+/*
+ * metaconn_free
+ *
+ * clears a metaconn
+ */
+static void
+metaconn_free(
+               struct metaconn *lc
+)
+{
+       if ( !lc ) {
+               return;
+       }
+       
+       if ( lc->conns ) {
+               int i;
+
+               for ( i = 0; lc->conns[ i ] != NULL; ++i ) {
+                       free( lc->conns[ i ] );
+               }
+               charray_free( ( char ** )lc->conns );
+       }
+
+       free( lc );
+}
+
+/*
+ * init_one_conn
+ * 
+ * Initializes one connection
+ */
+static int
+init_one_conn(
+               Connection *conn, 
+               Operation *op, 
+               struct metatarget *lt, 
+               int vers,
+               struct metasingleconn *lsc
+               )
+{
+       int err;
+
+       /*
+        * Already init'ed
+        */
+       if ( lsc->ld != NULL ) {
+               return LDAP_SUCCESS;
+       }
+       
+       /*
+        * Attempts to initialize the connection to the target ds
+        */
+       err = ldap_initialize( &lsc->ld, lt->uri );
+       if ( err != LDAP_SUCCESS ) {
+               return ldap_back_map_result( err );
+       }
+       
+       /*
+        * Set LDAP version. This will always succeed: If the client
+        * bound with a particular version, then so can we.
+        */
+       ldap_set_option( lsc->ld, LDAP_OPT_PROTOCOL_VERSION, &vers );
+
+       /*
+        * Sets a cookie for the rewrite session
+        */
+       ( void )rewrite_session_init( lt->rwinfo, conn );
+
+       /*
+        * If the connection dn is not null, an attempt to rewrite it is made
+        */
+       if ( conn->c_dn.bv_len != 0 ) {
+               
+               /*
+                * Rewrite the bind dn if needed
+                */
+               lsc->bound_dn.bv_val = NULL;
+               switch ( rewrite_session( lt->rwinfo, "bindDn",
+                                       conn->c_dn.bv_val, conn, 
+                                       &lsc->bound_dn.bv_val ) ) {
+               case REWRITE_REGEXEC_OK:
+                       if ( lsc->bound_dn.bv_val == NULL ) {
+                               ber_dupbv( &lsc->bound_dn, &conn->c_dn );
+                       }
+#ifdef NEW_LOGGING
+                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
+                                       "[rw] bindDn: \"%s\" -> \"%s\"\n",
+                                       conn->c_dn.bv_val, lsc->bound_dn.bv_val ));
+#else /* !NEW_LOGGING */
+                       Debug( LDAP_DEBUG_ARGS,
+                                       "rw> bindDn: \"%s\" -> \"%s\"\n",
+                                       conn->c_dn.bv_val, lsc->bound_dn.bv_val, 0 );
+#endif /* !NEW_LOGGING */
+                       break;
+                       
+               case REWRITE_REGEXEC_UNWILLING:
+                       send_ldap_result( conn, op,
+                                       LDAP_UNWILLING_TO_PERFORM,
+                                       NULL, "Unwilling to perform",
+                                       NULL, NULL );
+                       return LDAP_UNWILLING_TO_PERFORM;
+                       
+               case REWRITE_REGEXEC_ERR:
+                       send_ldap_result( conn, op,
+                                       LDAP_OPERATIONS_ERROR,
+                                       NULL, "Operations error",
+                                       NULL, NULL );
+                       return LDAP_OPERATIONS_ERROR;
+               }
+
+               assert( lsc->bound_dn.bv_val );
+
+       } else {
+               ber_str2bv( "", 0, 1, &lsc->bound_dn );
+       }
+
+       lsc->bound = META_UNBOUND;
+
+       /*
+        * The candidate is activated
+        */
+       lsc->candidate = META_CANDIDATE;
+       return LDAP_SUCCESS;
+}
+
+/*
+ * meta_back_getconn
+ * 
+ * Prepares the connection structure
+ * 
+ * FIXME: This function needs to receive some info on the type of operation
+ * it is invoked by, so that only the correct pool of candidate targets
+ * is initialized in case no connection was available yet.
+ * 
+ * At present a flag that says whether the candidate target must be unique
+ * is passed; eventually an operation agent will be used.
+ */
+struct metaconn *
+meta_back_getconn(
+               struct metainfo *li,
+               Connection      *conn,
+               Operation       *op,
+               int             op_type,
+               struct berval   *ndn,
+               int             *candidate )
+{
+       struct metaconn *lc, lc_curr;
+       int vers, cached = -1, i = -1, err = LDAP_SUCCESS;
+       int new_conn = 0;
+
+       /* Searches for a metaconn in the avl tree */
+       lc_curr.conn = conn;
+       ldap_pvt_thread_mutex_lock( &li->conn_mutex );
+       lc = (struct metaconn *)avl_find( li->conntree, 
+               (caddr_t)&lc_curr, meta_back_conn_cmp );
+       ldap_pvt_thread_mutex_unlock( &li->conn_mutex );
+
+       /* Looks like we didn't get a bind. Open a new session... */
+       if ( !lc ) {
+               lc = metaconn_alloc( li->ntargets );
+               lc->conn = conn;
+               new_conn = 1;
+       }
+
+       vers = conn->c_protocol;
+
+       /*
+        * looks in cache, if any
+        */
+       if ( li->cache.ttl != META_DNCACHE_DISABLED ) {
+               cached = i = meta_dncache_get_target( &li->cache, ndn );
+       }
+
+       if ( op_type == META_OP_REQUIRE_SINGLE ) {
+
+               /*
+                * tries to get a unique candidate
+                * (takes care of default target 
+                */
+               if ( i < 0 ) {
+                       i = meta_back_select_unique_candidate( li, ndn );
+               }
+
+               /*
+                * if any is found, inits the connection
+                */
+               if ( i < 0 ) {
+                       if ( new_conn ) {
+                               metaconn_free( lc );
+                       }
+
+                       send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT,
+                               NULL, "", NULL, NULL );
+
+                       return NULL;
+               }
+                               
+#ifdef NEW_LOGGING
+               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+                               "meta_back_getconn: got target %d"
+                               " for ndn=\"%s\" from cache\n", 
+                               i, ndn->bv_val ));
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_CACHE,
+       "==>meta_back_getconn: got target %d for ndn=\"%s\" from cache\n%s",
+                               i, ndn->bv_val, "" );
+#endif /* !NEW_LOGGING */
+
+               /*
+                * Clear all other candidates
+                */
+               ( void )meta_clear_unused_candidates( li, lc, i, 0 );
+
+               /*
+                * The target is activated; if needed, it is
+                * also init'd. In case of error, init_one_conn
+                * sends the appropriate result.
+                */
+               err = init_one_conn( conn, op, li->targets[ i ],
+                               vers, lc->conns[ i ] );
+               if ( err != LDAP_SUCCESS ) {
+               
+                       /*
+                        * FIXME: in case one target cannot
+                        * be init'd, should the other ones
+                        * be tried?
+                        */
+                       ( void )meta_clear_one_candidate( lc->conns[ i ], 1 );
+                       if ( new_conn ) {
+                               metaconn_free( lc );
+                       }
+                       return NULL;
+               }
+
+               if ( candidate ) {
+                       *candidate = i;
+               }
+
+       /*
+        * require all connections ...
+        */
+       } else if (op_type == META_OP_REQUIRE_ALL) {
+               for ( i = 0; i < li->ntargets; i++ ) {
+
+                       /*
+                        * The target is activated; if needed, it is
+                        * also init'd
+                        */
+                       int lerr = init_one_conn( conn, op, li->targets[ i ],
+                                       vers, lc->conns[ i ] );
+                       if ( lerr != LDAP_SUCCESS ) {
+                               
+                               /*
+                                * FIXME: in case one target cannot
+                                * be init'd, should the other ones
+                                * be tried?
+                                */
+                               ( void )meta_clear_one_candidate( lc->conns[ i ], 1 );
+                               err = lerr;
+                               continue;
+                       }
+               }
+
+       /*
+        * if no unique candidate ...
+        */
+       } else {
+               for ( i = 0; i < li->ntargets; i++ ) {
+                       if ( i == cached 
+               || meta_back_is_candidate( &li->targets[ i ]->suffix, ndn ) ) {
+
+                               /*
+                                * The target is activated; if needed, it is
+                                * also init'd
+                                */
+                               int lerr = init_one_conn( conn, op,
+                                               li->targets[ i ],
+                                               vers, lc->conns[ i ] );
+                               if ( lerr != LDAP_SUCCESS ) {
+                               
+                                       /*
+                                        * FIXME: in case one target cannot
+                                        * be init'd, should the other ones
+                                        * be tried?
+                                        */
+                                       ( void )meta_clear_one_candidate( lc->conns[ i ], 1 );
+                                       err = lerr;
+                                       continue;
+                               }
+                       }
+               }
+       }
+
+       if ( new_conn ) {
+               
+               /*
+                * Inserts the newly created metaconn in the avl tree
+                */
+               ldap_pvt_thread_mutex_lock( &li->conn_mutex );
+               err = avl_insert( &li->conntree, ( caddr_t )lc,
+                               meta_back_conn_cmp, meta_back_conn_dup );
+
+#if PRINT_CONNTREE > 0
+               myprint( li->conntree );
+#endif /* PRINT_CONNTREE */
+               
+               ldap_pvt_thread_mutex_unlock( &li->conn_mutex );
+
+#ifdef NEW_LOGGING
+               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+                               "meta_back_getconn: conn %ld inserted\n",
+                               lc->conn->c_connid ));
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_TRACE,
+                       "=>meta_back_getconn: conn %ld inserted\n%s%s",
+                       lc->conn->c_connid, "", "" );
+#endif /* !NEW_LOGGING */
+               
+               /*
+                * Err could be -1 in case a duplicate metaconn is inserted
+                */
+               if ( err != 0 ) {
+                       send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                       NULL, "Internal server error", NULL, NULL );
+                       metaconn_free( lc );
+                       return NULL;
+               }
+       } else {
+#ifdef NEW_LOGGING
+               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+                               "meta_back_getconn: conn %ld fetched\n",
+                               lc->conn->c_connid ));
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_TRACE,
+                       "=>meta_back_getconn: conn %ld fetched\n%s%s",
+                       lc->conn->c_connid, "", "" );
+#endif /* !NEW_LOGGING */
+       }
+       
+       return lc;
+}
+
index ae877020b70893cc627f6a68177bee27697af5c1..43ba3dc4e4fe951f19601e3bac973da08adc280a 100644 (file)
@@ -322,7 +322,7 @@ conn_create(
                connection_state2str( c->c_conn_state ),
                c->c_sasl_bind_in_progress ? "S" : "",
                
-               c->c_cdn.bv_len ? c->c_cdn.bv_val : SLAPD_ANONYMOUS,
+               c->c_dn.bv_len ? c->c_dn.bv_val : SLAPD_ANONYMOUS,
                
                c->c_listener_url.bv_val,
                c->c_peer_domain.bv_val,
index bfc1eded080642cadbc51ee4d9ab644608585e7a..66b0b0bce4520035df9c579c5888c08ca19aa27e 100644 (file)
@@ -48,6 +48,7 @@ monitor_subsys_database_init(
        int                     i;
        struct monitorentrypriv *mp;
        AttributeDescription    *ad_nc = slap_schema.si_ad_namingContexts;
+       AttributeDescription    *ad_mc = slap_schema.si_ad_monitorContext;
        AttributeDescription    *ad_seeAlso = NULL;
        const char              *text = NULL;
 
@@ -114,8 +115,13 @@ monitor_subsys_database_init(
                        return( -1 );
                }
                
-               attr_merge( e, ad_nc, be->be_suffix );
-               attr_merge( e_database, ad_nc, be->be_suffix );
+               if ( be->be_flags & SLAP_BFLAG_MONITOR ) {
+                       attr_merge( e, ad_mc, be->be_suffix );
+                       attr_merge( e_database, ad_mc, be->be_suffix );
+               } else {
+                       attr_merge( e, ad_nc, be->be_suffix );
+                       attr_merge( e_database, ad_nc, be->be_suffix );
+               }
 
                for ( j = nBackendInfo; j--; ) {
                        if ( &backendInfo[ j ] == be->bd_info ) {
index 05ecf4d33838be056cad1c94eeb20f16ced59865..755a1329b9597a902562798df3818593d6bcd5f4 100644 (file)
@@ -20,7 +20,6 @@
 #endif
 
 #include <EXTERN.h>
-#include <XSUB.h>
 #include <perl.h>
 
 #include "perl_back.h"
index ec105f95430f8318d87c1eebd82fa7edd9433a69..8cac0819e08f3e167b67b65dea1cbab8bd4e04b7 100644 (file)
@@ -20,7 +20,6 @@
 #endif
 
 #include <EXTERN.h>
-#include <XSUB.h>
 #include <perl.h>
 
 #include "perl_back.h"
index 0e2f570eab484947798f08ec0674ba49dfc3897a..5d13518fe67ebddb0fdb59c921237b234da372f2 100644 (file)
@@ -69,7 +69,7 @@ perl_back_modify(
                        }
 
                        
-                       XPUSHs(sv_2mortal(newSVpv( mods->sm_desc.ad_cname.bv_val, 0 )));
+                       XPUSHs(sv_2mortal(newSVpv( mods->sm_desc->ad_cname.bv_val, 0 )));
 
                        for ( i = 0;
                                mods->sm_bvalues != NULL && mods->sm_bvalues[i].bv_val != NULL;
index 7d7414aaa831a3a9d1eaaf7e2c41aa7e73039d3c..a962aabd063fc36a540a56ec07f20cda21495b4c 100644 (file)
@@ -924,7 +924,8 @@ backend_check_restrictions(
 
                if( requires & SLAP_REQUIRE_STRONG ) {
                        /* should check mechanism */
-                       if( op->o_authmech.bv_len == 0 || op->o_dn.bv_len == 0 )
+                       if( ( op->o_transport_ssf < ssf->sss_transport
+                               && op->o_authmech.bv_len == 0 ) || op->o_dn.bv_len == 0 )
                        {
                                *text = "strong authentication required";
                                return LDAP_STRONG_AUTH_REQUIRED;
@@ -932,8 +933,7 @@ backend_check_restrictions(
                }
 
                if( requires & SLAP_REQUIRE_SASL ) {
-                       if( op->o_authmech.bv_len == 0 || op->o_dn.bv_len == 0 )
-                       {
+                       if( op->o_authmech.bv_len == 0 || op->o_dn.bv_len == 0 ) {
                                *text = "SASL authentication required";
                                return LDAP_STRONG_AUTH_REQUIRED;
                        }
index e2afd091567ab08fa75260252ca744500652333b..af3949325d9af8dfb9f74a87d3608bd5b073b063 100644 (file)
@@ -413,8 +413,15 @@ glue_back_bind (
        be = glue_back_select (b0, ndn->bv_val);
 
        if (be && be->be_bind) {
-               conn->c_authz_backend = be;
                rc = be->be_bind (be, conn, op, dn, ndn, method, cred, edn);
+
+               if( rc == LDAP_SUCCESS ) {
+                       ldap_pvt_thread_mutex_lock( &conn->c_mutex );
+                       if( conn->c_authz_backend == NULL ) {
+                               conn->c_authz_backend = be;
+                       }
+                       ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
+               }
        } else {
                rc = LDAP_UNWILLING_TO_PERFORM;
                send_ldap_result (conn, op, rc, NULL, "No bind target found",
index cbbb1383f69489d791b283abe744836b86151679..15055120b4e5ca95d24336b916bfb50a5e83a81b 100644 (file)
@@ -402,6 +402,27 @@ do_bind(
                        Debug( LDAP_DEBUG_TRACE,
                                "do_bind: v%d simple bind(%s) disallowed\n",
                                version, ndn.bv_val, 0 );
+#endif
+                       goto cleanup;
+
+               } else if (( global_disallows & SLAP_DISALLOW_BIND_SIMPLE_UNPROTECTED )
+                       && ( op->o_ssf < global_ssf_set.sss_ssf ))
+               {
+                       rc = LDAP_CONFIDENTIALITY_REQUIRED;
+                       text = "unwilling to perform simple authentication "
+                               "without confidentilty protection";
+
+                       send_ldap_result( conn, op, rc,
+                               NULL, text, NULL, NULL );
+
+#ifdef NEW_LOGGING
+                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "do_bind: conn %d  "
+                               "v%d unprotected simple bind(%s) disallowed\n",
+                               conn->c_connid, version, ndn.bv_val ));
+#else
+                       Debug( LDAP_DEBUG_TRACE,
+                               "do_bind: v%d unprotected simple bind(%s) disallowed\n",
+                               version, ndn.bv_val, 0 );
 #endif
                        goto cleanup;
                }
@@ -478,8 +499,6 @@ do_bind(
                goto cleanup;
        }
 
-       conn->c_authz_backend = be;
-
        if ( be->be_bind ) {
                int ret;
 
@@ -492,14 +511,17 @@ do_bind(
                if ( ret == 0 ) {
                        ldap_pvt_thread_mutex_lock( &conn->c_mutex );
 
+                       if( conn->c_authz_backend == NULL ) {
+                               conn->c_authz_backend = be;
+                       }
+
                        if(edn.bv_len) {
                                conn->c_dn = edn;
                        } else {
-                               ber_dupbv( &conn->c_dn, &pdn );
+                               conn->c_dn = pdn;
+                               pdn.bv_val = NULL;
+                               pdn.bv_len = 0;
                        }
-                       conn->c_cdn = pdn;
-                       pdn.bv_val = NULL;
-                       pdn.bv_len = 0;
 
                        conn->c_ndn = ndn;
                        ndn.bv_val = NULL;
@@ -514,11 +536,11 @@ do_bind(
 #ifdef NEW_LOGGING
                        LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
                                "do_bind: conn %d  v%d bind: \"%s\" to \"%s\" \n",
-                               conn->c_connid, version, conn->c_cdn.bv_val, conn->c_dn.bv_val ));
+                               conn->c_connid, version, dn.bv_val, conn->c_dn.bv_val ));
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "do_bind: v%d bind: \"%s\" to \"%s\"\n",
-                               version, conn->c_cdn.bv_val, conn->c_dn.bv_val );
+                               version, dn.bv_val, conn->c_dn.bv_val );
 #endif
 
                        ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
index 513372912affdd36e28515288152ca524dbc491f..d3619af88924439ffdd6bbd6374e08adb490b455 100644 (file)
@@ -61,9 +61,6 @@ char   *slapd_args_file = NULL;
 
 char   *strtok_quote_ptr;
 
-int nSaslRegexp = 0;
-SaslRegexp_t *SaslRegexp = NULL;
-
 #ifdef SLAPD_RLOOKUPS
 int use_reverse_lookup = 1;
 #else /* !SLAPD_RLOOKUPS */
@@ -561,128 +558,12 @@ read_config( const char *fname )
 
                        lutil_salt_format( cargv[1] );
 
-               /* set SASL host */
-               } else if ( strcasecmp( cargv[0], "sasl-host" ) == 0 ) {
-                       if ( cargc < 2 ) {
-#ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing host in \"sasl-host <host>\" line\n",
-                                          fname, lineno ));
-#else
-                               Debug( LDAP_DEBUG_ANY,
-           "%s: line %d: missing host in \"sasl-host <host>\" line\n",
-                                   fname, lineno, 0 );
-#endif
-
-                               return( 1 );
-                       }
-
-                       if ( global_host != NULL ) {
-#ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: already set sasl-host!\n",
-                                          fname, lineno ));
-#else
-                               Debug( LDAP_DEBUG_ANY,
-                                       "%s: line %d: already set sasl-host!\n",
-                                       fname, lineno, 0 );
-#endif
-
-                               return 1;
-
-                       } else {
-                               global_host = ch_strdup( cargv[1] );
-                       }
-
-               /* set SASL realm */
-               } else if ( strcasecmp( cargv[0], "sasl-realm" ) == 0 ) {
-                       if ( cargc < 2 ) {
-#ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing realm in \"sasl-realm <realm>\" line.\n",
-                                          fname, lineno ));
-#else
-                               Debug( LDAP_DEBUG_ANY,
-           "%s: line %d: missing realm in \"sasl-realm <realm>\" line\n",
-                                   fname, lineno, 0 );
-#endif
-
-                               return( 1 );
-                       }
-
-                       if ( global_realm != NULL ) {
-#ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: already set sasl-realm!\n",
-                                          fname, lineno ));
-#else
-                               Debug( LDAP_DEBUG_ANY,
-                                       "%s: line %d: already set sasl-realm!\n",
-                                       fname, lineno, 0 );
-#endif
-
+#ifdef HAVE_CYRUS_SASL
+               /* SASL config options */
+               } else if ( strncasecmp( cargv[0], "sasl", 4 ) == 0 ) {
+                       if ( slap_sasl_config( cargc, cargv, line, fname, lineno ) )
                                return 1;
-
-                       } else {
-                               global_realm = ch_strdup( cargv[1] );
-                       }
-
-               } else if ( !strcasecmp( cargv[0], "sasl-regexp" ) 
-                       || !strcasecmp( cargv[0], "saslregexp" ) )
-               {
-                       int rc;
-                       if ( cargc != 3 ) {
-#ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: need 2 args in "
-                                          "\"saslregexp <match> <replace>\"\n",
-                                          fname, lineno ));
-#else
-                               Debug( LDAP_DEBUG_ANY, 
-                               "%s: line %d: need 2 args in \"saslregexp <match> <replace>\"\n",
-                                   fname, lineno, 0 );
-#endif
-
-                               return( 1 );
-                       }
-                       rc = slap_sasl_regexp_config( cargv[1], cargv[2] );
-                       if ( rc ) {
-                               return rc;
-                       }
-
-               /* SASL security properties */
-               } else if ( strcasecmp( cargv[0], "sasl-secprops" ) == 0 ) {
-                       char *txt;
-
-                       if ( cargc < 2 ) {
-#ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing flags in "
-                                          "\"sasl-secprops <properties>\" line\n",
-                                          fname, lineno ));
-#else
-                               Debug( LDAP_DEBUG_ANY,
-           "%s: line %d: missing flags in \"sasl-secprops <properties>\" line\n",
-                                   fname, lineno, 0 );
-#endif
-
-                               return 1;
-                       }
-
-                       txt = slap_sasl_secprops( cargv[1] );
-                       if ( txt != NULL ) {
-#ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d sas-secprops: %s\n",
-                                          fname, lineno, txt ));
-#else
-                               Debug( LDAP_DEBUG_ANY,
-           "%s: line %d: sasl-secprops: %s\n",
-                                   fname, lineno, txt );
-#endif
-
-                               return 1;
-                       }
+#endif /* HAVE_CYRUS_SASL */
 
                /* set UCDATA path */
                } else if ( strcasecmp( cargv[0], "ucdata-path" ) == 0 ) {
@@ -1408,6 +1289,9 @@ read_config( const char *fname )
                                } else if( strcasecmp( cargv[i], "bind_simple" ) == 0 ) {
                                        disallows |= SLAP_DISALLOW_BIND_SIMPLE;
 
+                               } else if( strcasecmp( cargv[i], "bind_simple_unprotected" ) == 0 ) {
+                                       disallows |= SLAP_DISALLOW_BIND_SIMPLE_UNPROTECTED;
+
                                } else if( strcasecmp( cargv[i], "bind_krbv4" ) == 0 ) {
                                        disallows |= SLAP_DISALLOW_BIND_KRBV4;
 
index a93af0d11679b6b19f2934aa1053dfd50cbd8260..0f4ce390dad14242e498e711b9ea3bd12e02aeb7 100644 (file)
@@ -417,8 +417,6 @@ long connection_init(
                c->c_dn.bv_len = 0;
                c->c_ndn.bv_val = NULL;
                c->c_ndn.bv_len = 0;
-               c->c_cdn.bv_val = NULL;
-               c->c_cdn.bv_len = 0;
                c->c_groups = NULL;
 
                c->c_listener_url.bv_val = NULL;
@@ -461,7 +459,6 @@ long connection_init(
     assert( c->c_authmech.bv_val == NULL );
     assert( c->c_dn.bv_val == NULL );
     assert( c->c_ndn.bv_val == NULL );
-    assert( c->c_cdn.bv_val == NULL );
     assert( c->c_groups == NULL );
     assert( c->c_listener_url.bv_val == NULL );
     assert( c->c_peer_domain.bv_val == NULL );
@@ -573,8 +570,8 @@ long connection_init(
 
 void connection2anonymous( Connection *c )
 {
-    assert( connections != NULL );
-    assert( c != NULL );
+       assert( connections != NULL );
+       assert( c != NULL );
 
        {
                ber_len_t max = sockbuf_max_incoming;
@@ -587,35 +584,27 @@ void connection2anonymous( Connection *c )
        }
        c->c_authmech.bv_len = 0;
 
-    if(c->c_dn.bv_val != NULL) {
-       free(c->c_dn.bv_val);
-       c->c_dn.bv_val = NULL;
-    }
-    c->c_dn.bv_len = 0;
-    if(c->c_ndn.bv_val != NULL) {
-       free(c->c_ndn.bv_val);
-       c->c_ndn.bv_val = NULL;
-    }
-    c->c_ndn.bv_len = 0;
-
-       if(c->c_cdn.bv_val != NULL) {
-               free(c->c_cdn.bv_val);
-               c->c_cdn.bv_val = NULL;
+       if(c->c_dn.bv_val != NULL) {
+               free(c->c_dn.bv_val);
+               c->c_dn.bv_val = NULL;
        }
-       c->c_cdn.bv_len = 0;
+       c->c_dn.bv_len = 0;
+       if(c->c_ndn.bv_val != NULL) {
+               free(c->c_ndn.bv_val);
+               c->c_ndn.bv_val = NULL;
+       }
+       c->c_ndn.bv_len = 0;
 
        c->c_authz_backend = NULL;
-    
-    {
-       GroupAssertion *g, *n;
-       for (g = c->c_groups; g; g=n)
+       
        {
-           n = g->ga_next;
-           free(g);
+               GroupAssertion *g, *n;
+               for (g = c->c_groups; g; g=n) {
+                       n = g->ga_next;
+                       free(g);
+               }
+               c->c_groups = NULL;
        }
-       c->c_groups = NULL;
-    }
-
 }
 
 static void
index 137734c104b8d3a3d2fb8557cd4d137c911d21e1..c34077e2244ef3013edcccaefe026d1240bf3c7b 100644 (file)
@@ -33,6 +33,8 @@ int deny_severity = LOG_NOTICE;
 #define LDAPI_MOD_URLEXT               "x-mod"
 #endif /* LDAP_PF_LOCAL */
 
+int slap_inet4or6 = AF_UNSPEC;
+
 /* globals */
 time_t starttime;
 ber_socket_t dtblsize;
@@ -237,7 +239,7 @@ void slapd_remove(ber_socket_t s, int wake) {
        FD_CLR( s, &slap_daemon.sd_writers );
 
        ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex );
-       WAKE_LISTENER(wake || slapd_gentle_shutdown < 0);
+       WAKE_LISTENER(wake || slapd_gentle_shutdown == 2);
 }
 
 void slapd_clr_write(ber_socket_t s, int wake) {
@@ -414,7 +416,7 @@ static int slap_get_listener_addresses(
                memset( &hints, '\0', sizeof(hints) );
                hints.ai_flags = AI_PASSIVE;
                hints.ai_socktype = SOCK_STREAM;
-               hints.ai_family = AF_UNSPEC;
+               hints.ai_family = slap_inet4or6;
                snprintf(serv, sizeof serv, "%d", port);
 
                if ( (err = getaddrinfo(host, serv, &hints, &res)) ) {
@@ -1114,17 +1116,18 @@ slapd_daemon_task(
                if( slapd_gentle_shutdown ) {
                        ber_socket_t active;
 
-                       if( slapd_gentle_shutdown > 0 ) {
+                       if( slapd_gentle_shutdown == 1 ) {
                                Debug( LDAP_DEBUG_ANY, "slapd gentle shutdown\n", 0, 0, 0 );
                                close_listeners( 1 );
-                               slapd_gentle_shutdown = -1;
+                               global_restrictops |= SLAP_RESTRICT_OP_WRITES;
+                               slapd_gentle_shutdown = 2;
                        }
 
                        ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex );
                        active = slap_daemon.sd_nactives;
                        ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex );
                        if( active == 0 ) {
-                               slapd_shutdown = -1;
+                               slapd_shutdown = 2;
                                break;
                        }
                }
@@ -1780,7 +1783,7 @@ slapd_daemon_task(
 #endif
        }
 
-       if( slapd_gentle_shutdown >= 0 )
+       if( slapd_gentle_shutdown != 2 )
                close_listeners ( 0 );
        free ( slap_listeners );
        slap_listeners = NULL;
index 8a1106e9744bf75ff713cc40a974cdfc512c964c..f5829d395af02a3555138d88234b8df301b6e68e 100644 (file)
@@ -305,6 +305,8 @@ entry2str(
        int             i;
        ber_len_t tmplen;
 
+       assert( e != NULL );
+
        /*
         * In string format, an entry looks like this:
         *      dn: <dn>\n
index b48f222450b9b3552c8c1d58719294718ff3196b..cea889cf7adfc9c38a657b481e40f431b4929b54 100644 (file)
@@ -96,6 +96,8 @@ usage( char *name )
        fprintf( stderr,
                "usage: %s options\n", name );
        fprintf( stderr,
+               "\t-4\t\tIPv4 only\n"
+               "\t-6\t\tIPv6 only\n"
                "\t-d level\tDebug level" "\n"
                "\t-f filename\tConfiguration file\n"
 #if defined(HAVE_SETUID) && defined(HAVE_SETGID)
@@ -216,6 +218,9 @@ int main( int argc, char **argv )
 
        while ( (i = getopt( argc, argv,
                             "d:f:h:s:n:t"
+#if LDAP_PF_INET6
+                               "46"
+#endif
 #ifdef HAVE_CHROOT
                                "r:"
 #endif
@@ -227,6 +232,15 @@ int main( int argc, char **argv )
 #endif
                             )) != EOF ) {
                switch ( i ) {
+#ifdef LDAP_PF_INET6
+               case '4':
+                       slap_inet4or6 = AF_INET;
+                       break;
+               case '6':
+                       slap_inet4or6 = AF_INET6;
+                       break;
+#endif
+
                case 'h':       /* listen URLs */
                        if ( urls != NULL ) free( urls );
                        urls = ch_strdup( optarg );
index 94cbeac0cf2d7631efd2376b40dd7655c4cde281..06cc1586a87478d2285866f4d7b2badd4b3d0bf0 100644 (file)
@@ -29,6 +29,7 @@ int passwd_extop(
        const char **text,
        BerVarray *refs )
 {
+       Backend *be;
        int rc;
 
        assert( reqoid != NULL );
@@ -39,31 +40,44 @@ int passwd_extop(
                return LDAP_STRONG_AUTH_REQUIRED;
        }
 
-       if( conn->c_authz_backend == NULL || !conn->c_authz_backend->be_extended ) {
+       ldap_pvt_thread_mutex_lock( &conn->c_mutex );
+       be = conn->c_authz_backend;
+       ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
+
+       if( be && !be->be_extended ) {
                *text = "operation not supported for current user";
                return LDAP_UNWILLING_TO_PERFORM;
        }
 
        {
                struct berval passwd = BER_BVC( LDAP_EXOP_MODIFY_PASSWD );
-
-               rc = backend_check_restrictions( conn->c_authz_backend,
-                       conn, op, &passwd, text );
+               rc = backend_check_restrictions( be, conn, op, &passwd, text );
        }
 
        if( rc != LDAP_SUCCESS ) {
                return rc;
        }
 
-       if( conn->c_authz_backend->be_update_ndn.bv_len ) {
+       if( be == NULL ) {
+#ifdef HAVE_CYRUS_SASL
+               rc = slap_sasl_setpass( conn, op,
+                       reqoid, reqdata,
+                       rspoid, rspdata, rspctrls,
+                       text );
+#else
+               *text = "no authz backend";
+               rc = LDAP_OTHER;
+#endif
+
+       } else if( be->be_update_ndn.bv_len ) {
                /* we SHOULD return a referral in this case */
-               *refs = referral_rewrite( conn->c_authz_backend->be_update_refs,
+               *refs = referral_rewrite( be->be_update_refs,
                        NULL, NULL, LDAP_SCOPE_DEFAULT );
                        rc = LDAP_REFERRAL;
 
        } else {
-               rc = conn->c_authz_backend->be_extended(
-                       conn->c_authz_backend, conn, op,
+               rc = be->be_extended(
+                       be, conn, op,
                        reqoid, reqdata,
                        rspoid, rspdata, rspctrls,
                        text, refs );
@@ -88,6 +102,11 @@ int slap_passwd_parse( struct berval *reqdata,
                return LDAP_SUCCESS;
        }
 
+       if( reqdata->bv_len == 0 ) {
+               *text = "empty request data field";
+               return LDAP_PROTOCOL_ERROR;
+       }
+
        /* ber_init2 uses reqdata directly, doesn't allocate new buffers */
        ber_init2( ber, reqdata, 0 );
 
@@ -204,7 +223,6 @@ decoding_error:
                        (long) len, 0, 0 );
 #endif
 
-
                *text = "data decoding error";
                rc = LDAP_PROTOCOL_ERROR;
        }
index f80e53969a21dd3834cff7738131e54a3ca21bb5..98aab651f7b26ad8f3a933c2cd9b47b5cce6ce0b 100644 (file)
@@ -830,6 +830,24 @@ LDAP_SLAPD_F (int) slap_sasl_bind LDAP_P((
        struct berval *cred,
        struct berval *edn, slap_ssf_t *ssf ));
 
+LDAP_SLAPD_F (int) slap_sasl_setpass(
+       Connection      *conn,
+       Operation       *op,
+       const char      *reqoid,
+       struct berval   *reqdata,
+       char            **rspoid,
+       struct berval   **rspdata,
+       LDAPControl     *** rspctrls,
+       const char      **text );
+
+LDAP_SLAPD_F (int) slap_sasl_config(
+       int cargc,
+       char **cargv,
+       char *line,
+       const char *fname,
+       int lineno );
+
+
 /*
  * saslauthz.c
  */
@@ -842,6 +860,8 @@ LDAP_SLAPD_F (int) slap_sasl_authorized LDAP_P((
        struct berval *authzid ));
 LDAP_SLAPD_F (int) slap_sasl_regexp_config LDAP_P((
        const char *match, const char *replace ));
+LDAP_SLAPD_F (int) slap_sasl_setpolicy LDAP_P(( const char * ));
+
 
 /*
  * schema.c
@@ -1028,9 +1048,6 @@ LDAP_SLAPD_V (int)                ldap_syslog;
 LDAP_SLAPD_V (struct berval)   default_search_base;
 LDAP_SLAPD_V (struct berval)   default_search_nbase;
 
-LDAP_SLAPD_V (int)             nSaslRegexp;
-LDAP_SLAPD_V (SaslRegexp_t*) SaslRegexp;
-
 LDAP_SLAPD_V (ldap_pvt_thread_mutex_t) num_sent_mutex;
 LDAP_SLAPD_V (unsigned long)           num_bytes_sent;
 LDAP_SLAPD_V (unsigned long)           num_pdu_sent;
index 140e4a6d6cb22625602992aad41171dcebc28fa5..b6099f4cf242c534c6155864b84e0b3cff0a258f 100644 (file)
@@ -236,14 +236,14 @@ send_ldap_response(
            }
        }
        if (conn->c_is_udp && op->o_protocol == LDAP_VERSION2) {
-           rc = ber_printf( ber, "{is{t{ess",
+           rc = ber_printf( ber, "{is{t{ess" /*"}}}"*/,
                msgid, "", tag, err,
                matched == NULL ? "" : matched,
                text == NULL ? "" : text );
        } else
 #endif
        {
-           rc = ber_printf( ber, "{it{ess",
+           rc = ber_printf( ber, "{it{ess" /*"}}"*/,
                msgid, tag, err,
                matched == NULL ? "" : matched,
                text == NULL ? "" : text );
@@ -275,11 +275,11 @@ send_ldap_response(
        }
 
        if( rc != -1 ) {
-               rc = ber_printf( ber, "N}N}" );
+               rc = ber_printf( ber, /*"{{"*/ "N}N}" );
        }
 #ifdef LDAP_CONNECTIONLESS
        if( conn->c_is_udp && op->o_protocol == LDAP_VERSION2 && rc != -1 ) {
-               rc = ber_printf( ber, "N}" );
+               rc = ber_printf( ber, /*"{"*/ "N}" );
        }
 #endif
 
@@ -1139,11 +1139,11 @@ send_search_entry(
        if ( bytes < 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_ldap_response: conn %lu  ber write failed.\n",
+                          "send_search_entry: conn %lu  ber write failed.\n",
                           op->o_connid ));
 #else
                Debug( LDAP_DEBUG_ANY,
-                       "send_ldap_response: ber write failed\n",
+                       "send_search_entry: ber write failed\n",
                        0, 0, 0 );
 #endif
 
index 5db42c0f70c67647bb06734250e21c0709fa8e30..e814c5155d648a5768f3dc2c989f8224f6835483 100644 (file)
@@ -58,6 +58,8 @@ root_dse_info(
                = slap_schema.si_ad_supportedSASLMechanisms;
        AttributeDescription *ad_supportedFeatures
                = slap_schema.si_ad_supportedFeatures;
+       AttributeDescription *ad_monitorContext
+               = slap_schema.si_ad_monitorContext;
        AttributeDescription *ad_ref
                = slap_schema.si_ad_ref;
 
@@ -77,10 +79,6 @@ root_dse_info(
 
        e->e_private = NULL;
 
-       vals[0].bv_val = "OpenLDAProotDSE";
-       vals[0].bv_len = sizeof("OpenLDAProotDSE")-1;
-       attr_merge( e, ad_structuralObjectClass, vals );
-
        vals[0].bv_val = "top";
        vals[0].bv_len = sizeof("top")-1;
        attr_merge( e, ad_objectClass, vals );
@@ -88,8 +86,14 @@ root_dse_info(
        vals[0].bv_val = "OpenLDAProotDSE";
        vals[0].bv_len = sizeof("OpenLDAProotDSE")-1;
        attr_merge( e, ad_objectClass, vals );
+       attr_merge( e, ad_structuralObjectClass, vals );
 
        for ( i = 0; i < nbackends; i++ ) {
+               if ( backends[i].be_flags & SLAP_BFLAG_MONITOR ) {
+                       vals[0] = backends[i].be_suffix[0];
+                       attr_merge( e, ad_monitorContext, vals );
+                       continue;
+               }
                if ( backends[i].be_flags & SLAP_BFLAG_GLUE_SUBORDINATE ) {
                        continue;
                }
index ba1cdb0c2fae812807adca27485fa1e622506513..13088088afe0de9f69dfad6fecea924867969f29 100644 (file)
 
 static sasl_security_properties_t sasl_secprops;
 
+int slap_sasl_config( int cargc, char **cargv, char *line,
+       const char *fname, int lineno )
+{
+               /* set SASL proxy authorization policy */
+               if ( strcasecmp( cargv[0], "sasl-authz-policy" ) == 0 ) {
+                       if ( cargc != 2 ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d: missing policy in \"sasl-authz-policy <policy>\" line\n",
+                                          fname, lineno ));
+#else
+                               Debug( LDAP_DEBUG_ANY,
+           "%s: line %d: missing policy in \"sasl-authz-policy <policy>\" line\n",
+                                   fname, lineno, 0 );
+#endif
+
+                               return( 1 );
+                       }
+                       if ( slap_sasl_setpolicy( cargv[1] ) ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d: unable "
+                                          "to parse value \"%s\" "
+                                          "in \"sasl-authz-policy "
+                                          "<policy>\" line.\n",
+                                          fname, lineno, cargv[1] ));
+#else
+                               Debug( LDAP_DEBUG_ANY,
+                                       "%s: line %d: unable "
+                                       "to parse value \"%s\" "
+                                       "in \"sasl-authz-policy "
+                                       "<policy>\" line\n",
+                                       fname, lineno, cargv[1] );
+#endif
+                               return( 1 );
+                       }
+                       
+
+               /* set SASL host */
+               } else if ( strcasecmp( cargv[0], "sasl-host" ) == 0 ) {
+                       if ( cargc < 2 ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d: missing host in \"sasl-host <host>\" line\n",
+                                          fname, lineno ));
+#else
+                               Debug( LDAP_DEBUG_ANY,
+           "%s: line %d: missing host in \"sasl-host <host>\" line\n",
+                                   fname, lineno, 0 );
+#endif
+
+                               return( 1 );
+                       }
+
+                       if ( global_host != NULL ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d: already set sasl-host!\n",
+                                          fname, lineno ));
+#else
+                               Debug( LDAP_DEBUG_ANY,
+                                       "%s: line %d: already set sasl-host!\n",
+                                       fname, lineno, 0 );
+#endif
+
+                               return 1;
+
+                       } else {
+                               global_host = ch_strdup( cargv[1] );
+                       }
+
+               /* set SASL realm */
+               } else if ( strcasecmp( cargv[0], "sasl-realm" ) == 0 ) {
+                       if ( cargc < 2 ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d: missing realm in \"sasl-realm <realm>\" line.\n",
+                                          fname, lineno ));
+#else
+                               Debug( LDAP_DEBUG_ANY,
+           "%s: line %d: missing realm in \"sasl-realm <realm>\" line\n",
+                                   fname, lineno, 0 );
+#endif
+
+                               return( 1 );
+                       }
+
+                       if ( global_realm != NULL ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d: already set sasl-realm!\n",
+                                          fname, lineno ));
+#else
+                               Debug( LDAP_DEBUG_ANY,
+                                       "%s: line %d: already set sasl-realm!\n",
+                                       fname, lineno, 0 );
+#endif
+
+                               return 1;
+
+                       } else {
+                               global_realm = ch_strdup( cargv[1] );
+                       }
+
+               } else if ( !strcasecmp( cargv[0], "sasl-regexp" ) 
+                       || !strcasecmp( cargv[0], "saslregexp" ) )
+               {
+                       int rc;
+                       if ( cargc != 3 ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d: need 2 args in "
+                                          "\"saslregexp <match> <replace>\"\n",
+                                          fname, lineno ));
+#else
+                               Debug( LDAP_DEBUG_ANY, 
+                               "%s: line %d: need 2 args in \"saslregexp <match> <replace>\"\n",
+                                   fname, lineno, 0 );
+#endif
+
+                               return( 1 );
+                       }
+                       rc = slap_sasl_regexp_config( cargv[1], cargv[2] );
+                       if ( rc ) {
+                               return rc;
+                       }
+
+               /* SASL security properties */
+               } else if ( strcasecmp( cargv[0], "sasl-secprops" ) == 0 ) {
+                       char *txt;
+
+                       if ( cargc < 2 ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d: missing flags in "
+                                          "\"sasl-secprops <properties>\" line\n",
+                                          fname, lineno ));
+#else
+                               Debug( LDAP_DEBUG_ANY,
+           "%s: line %d: missing flags in \"sasl-secprops <properties>\" line\n",
+                                   fname, lineno, 0 );
+#endif
+
+                               return 1;
+                       }
+
+                       txt = slap_sasl_secprops( cargv[1] );
+                       if ( txt != NULL ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                          "%s: line %d sasl-secprops: %s\n",
+                                          fname, lineno, txt ));
+#else
+                               Debug( LDAP_DEBUG_ANY,
+           "%s: line %d: sasl-secprops: %s\n",
+                                   fname, lineno, txt );
+#endif
+
+                               return 1;
+                       }
+           }
+
+           return LDAP_SUCCESS;
+}
+
 static int
 slap_sasl_log(
        void *context,
@@ -602,17 +767,26 @@ slap_sasl_authorize(
                "authcid=\"%s\" authzid=\"%s\"\n",
                conn ? conn->c_connid : -1, auth_identity, requested_user );
 #endif
+       if ( conn->c_sasl_dn.bv_val ) {
+               ch_free( conn->c_sasl_dn.bv_val );
+               conn->c_sasl_dn.bv_val = NULL;
+               conn->c_sasl_dn.bv_len = 0;
+       }
 
        prop_getnames( props, slap_propnames, auxvals );
        
+       AC_MEMCPY( &authcDN, auxvals[0].values[0], sizeof(authcDN) );
+
        /* Nothing to do if no authzID was given */
-       if ( !auxvals[1].name || !auxvals[1].values )
+       if ( !auxvals[1].name || !auxvals[1].values ) {
+               conn->c_sasl_dn = authcDN;
                return SASL_OK;
+       }
        
-       AC_MEMCPY( &authcDN, auxvals[0].values[0], sizeof(authcDN) );
        AC_MEMCPY( &authzDN, auxvals[1].values[0], sizeof(authzDN) );
 
        rc = slap_sasl_authorized( &authcDN, &authzDN );
+       ch_free( authcDN.bv_val );
        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
                LDAP_LOG(( "sasl", LDAP_LEVEL_INFO,
@@ -625,9 +799,12 @@ slap_sasl_authorize(
 #endif
 
                sasl_seterror( sconn, 0, "not authorized" );
+               ch_free( authzDN.bv_val );
                return SASL_NOAUTHZ;
        }
 
+       conn->c_sasl_dn = authzDN;
+
 #ifdef NEW_LOGGING
        LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
                   "slap_sasl_authorize: conn %d authorization allowed\n",
@@ -654,6 +831,11 @@ slap_sasl_authorize(
        char *realm;
 
        *user = NULL;
+       if ( conn->c_sasl_dn.bv_val ) {
+               ch_free( conn->c_sasl_dn.bv_val );
+               conn->c_sasl_dn.bv_val = NULL;
+               conn->c_sasl_dn.bv_len = 0;
+       }
 
 #ifdef NEW_LOGGING
        LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
@@ -700,7 +882,7 @@ slap_sasl_authorize(
                 "Using authcDN=%s\n", (long) (conn ? conn->c_connid : -1), authcDN.bv_val,0 );
 #endif
 
-               *user = authcDN.bv_val;
+               conn->c_sasl_dn = authcDN;
                *errstr = NULL;
                return SASL_OK;
        }
@@ -712,6 +894,7 @@ slap_sasl_authorize(
        }
 
        rc = slap_sasl_authorized( &authcDN, &authzDN );
+       ch_free( authcDN.bv_val );
        if( rc ) {
 #ifdef NEW_LOGGING
                LDAP_LOG(( "sasl", LDAP_LEVEL_INFO,
@@ -724,7 +907,6 @@ slap_sasl_authorize(
 #endif
 
                *errstr = "not authorized";
-               ch_free( authcDN.bv_val );
                ch_free( authzDN.bv_val );
                return SASL_NOAUTHZ;
        }
@@ -739,9 +921,7 @@ slap_sasl_authorize(
                (long) (conn ? conn->c_connid : -1), 0, 0 );
 #endif
 
-
-       ch_free( authcDN.bv_val );
-       *user = authzDN.bv_val;
+       conn->c_sasl_dn = authzDN;
        *errstr = NULL;
        return SASL_OK;
 }
@@ -1169,18 +1349,11 @@ int slap_sasl_bind(
        response.bv_len = reslen;
 
        if ( sc == SASL_OK ) {
-#if SASL_VERSION_MAJOR >= 2
-               struct propctx *props = sasl_auxprop_getctx( ctx );
-               struct propval vals[3];
                sasl_ssf_t *ssf = NULL;
 
-               prop_getnames( props, slap_propnames, vals );
-
-               AC_MEMCPY( edn, vals[0].values[0], sizeof(*edn) );
-               if ( vals[1].name && vals[1].values ) {
-                       ch_free( edn->bv_val );
-                       AC_MEMCPY( edn, vals[1].values[0], sizeof(*edn) );
-               }
+               *edn = conn->c_sasl_dn;
+               conn->c_sasl_dn.bv_val = NULL;
+               conn->c_sasl_dn.bv_len = 0;
 
                rc = LDAP_SUCCESS;
 
@@ -1196,46 +1369,6 @@ int slap_sasl_bind(
                send_ldap_sasl( conn, op, rc,
                        NULL, NULL, NULL, NULL,
                        response.bv_len ? &response : NULL );
-#else
-               char *username = NULL;
-
-               sc = sasl_getprop( ctx,
-                       SASL_USERNAME, (SASL_CONST void **)&username );
-
-               if ( sc != SASL_OK ) {
-#ifdef NEW_LOGGING
-                       LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
-                               "slap_sasl_bind: getprop(USERNAME) failed: %d\n", sc ));
-#else
-                       Debug(LDAP_DEBUG_TRACE,
-                               "slap_sasl_bind: getprop(USERNAME) failed!\n",
-                               0, 0, 0);
-#endif
-
-
-                       send_ldap_result( conn, op, rc = slap_sasl_err2ldap( sc ),
-                               NULL, "no SASL username", NULL, NULL );
-
-               } else {
-                       sasl_ssf_t *ssf = NULL;
-
-                       rc = LDAP_SUCCESS;
-                       ber_str2bv( username, 0, 1, edn );
-
-                       (void) sasl_getprop( ctx, SASL_SSF, (void *)&ssf );
-                       *ssfp = ssf ? *ssf : 0;
-
-                       if( *ssfp ) {
-                               ldap_pvt_thread_mutex_lock( &conn->c_mutex );
-                               conn->c_sasl_layers++;
-                               ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
-                       }
-
-                       send_ldap_sasl( conn, op, rc,
-                               NULL, NULL, NULL, NULL,
-                               response.bv_len ? &response : NULL );
-               }
-#endif
 
        } else if ( sc == SASL_CONTINUE ) {
                send_ldap_sasl( conn, op, rc = LDAP_SASL_BIND_IN_PROGRESS,
@@ -1281,3 +1414,90 @@ char* slap_sasl_secprops( const char *in )
        return "SASL not supported";
 #endif
 }
+
+#ifdef HAVE_CYRUS_SASL
+int
+slap_sasl_setpass(
+       Connection      *conn,
+       Operation       *op,
+       const char      *reqoid,
+       struct berval   *reqdata,
+       char            **rspoid,
+       struct berval   **rspdata,
+       LDAPControl     *** rspctrls,
+       const char      **text )
+{
+       int rc;
+       struct berval id = { 0, NULL }; /* needs to come from connection */
+       struct berval new = { 0, NULL };
+       struct berval old = { 0, NULL };
+
+       assert( reqoid != NULL );
+       assert( strcmp( LDAP_EXOP_MODIFY_PASSWD, reqoid ) == 0 );
+
+       rc = sasl_getprop( conn->c_sasl_context, SASL_USERNAME,
+               (SASL_CONST void **)&id.bv_val );
+
+       if( rc != SASL_OK ) {
+               *text = "unable to retrieve SASL username";
+               rc = LDAP_OTHER;
+               goto done;
+       }
+
+#ifdef NEW_LOGGING
+       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
+               "slap_sasl_setpass: \"%s\"\n",
+               id.bv_val ? id.bv_val : "" ));
+#else
+       Debug( LDAP_DEBUG_ARGS, "==> ldbm_back_exop_passwd: \"%s\"\n",
+               id.bv_val ? id.bv_val : "", 0, 0 );
+#endif
+
+       rc = slap_passwd_parse( reqdata,
+               NULL, &old, &new, text );
+
+       if( rc != LDAP_SUCCESS ) {
+               goto done;
+       }
+
+       if( new.bv_len == 0 ) {
+               slap_passwd_generate(&new);
+
+               if( new.bv_len == 0 ) {
+                       *text = "password generation failed.";
+                       rc = LDAP_OTHER;
+                       goto done;
+               }
+               
+               *rspdata = slap_passwd_return( &new );
+       }
+
+#if SASL_VERSION_MAJOR < 2
+       rc = sasl_setpass( conn->c_sasl_context,
+               id.bv_val, new.bv_val, new.bv_len, 0, text );
+#else
+       rc = sasl_setpass( conn->c_sasl_context, id.bv_val,
+               old.bv_val, old.bv_len, new.bv_val, new.bv_len, 0 );
+       if( rc != SASL_OK ) {
+               *text = sasl_errdetail( conn->c_sasl_context );
+       }
+#endif
+       switch(rc) {
+               case SASL_OK:
+                       rc = LDAP_SUCCESS;
+                       break;
+
+               case SASL_NOCHANGE:
+               case SASL_NOMECH:
+               case SASL_DISABLED:
+               case SASL_PWLOCK:
+               case SASL_FAIL:
+               case SASL_BADPARAM:
+               default:
+                       rc = LDAP_OTHER;
+       }
+
+done:
+       return rc;
+}
+#endif
index d196a4f084ba1d4c1de2e9278fccc3d43d3dc513..601d0245c8481102d6792be533e960c3f3d9ca06 100644 (file)
 
 #include <ldap_pvt.h>
 
+#define SASLREGEX_REPLACE 10
+
+typedef struct sasl_uri {
+  struct berval dn;
+  struct berval filter;
+  int scope;
+} SaslUri_t;
+
+typedef struct sasl_regexp {
+  char *sr_match;                                                      /* regexp match pattern */
+  SaslUri_t sr_replace;                                                /* regexp replace pattern */
+  regex_t sr_workspace;                                                /* workspace for regexp engine */
+  regmatch_t sr_strings[SASLREGEX_REPLACE];    /* strings matching $1,$2 ... */
+  int sr_dn_offset[SASLREGEX_REPLACE+2];               /* offsets of $1,$2... in *replace */
+  int sr_fi_offset[SASLREGEX_REPLACE+2];               /* offsets of $1,$2... in *replace */
+} SaslRegexp_t;
+
+static int nSaslRegexp = 0;
+static SaslRegexp_t *SaslRegexp = NULL;
+
+/* What SASL proxy authorization policies are allowed? */
+#define        SASL_AUTHZ_NONE 0
+#define        SASL_AUTHZ_FROM 1
+#define        SASL_AUTHZ_TO   2
+
+static int authz_policy = SASL_AUTHZ_NONE;
+
+int slap_sasl_setpolicy( const char *arg )
+{
+       int rc = LDAP_SUCCESS;
+
+       if ( strcasecmp( arg, "none" ) == 0 )
+               authz_policy = SASL_AUTHZ_NONE;
+       else if ( strcasecmp( arg, "from" ) == 0 )
+               authz_policy = SASL_AUTHZ_FROM;
+       else if ( strcasecmp( arg, "to" ) == 0 )
+               authz_policy = SASL_AUTHZ_TO;
+       else if ( strcasecmp( arg, "both" ) == 0 )
+               authz_policy = SASL_AUTHZ_FROM | SASL_AUTHZ_TO;
+       else
+               rc = LDAP_OTHER;
+       return rc;
+}
+
 /* URI format: ldap://<host>/<base>[?[<attrs>][?[<scope>][?[<filter>]]]] */
 
 static int slap_parseURI( struct berval *uri,
@@ -81,7 +125,10 @@ is_dn:              bv.bv_len = uri->bv_len - (bv.bv_val - uri->bv_val);
                return( LDAP_PROTOCOL_ERROR );
        }
 
-       /* could check the hostname here */
+       if ( ludp->lud_host && *ludp->lud_host ) {
+               /* host part should be empty */
+               return( LDAP_PROTOCOL_ERROR );
+       }
 
        /* Grab the scope */
        *scope = ludp->lud_scope;
@@ -357,21 +404,22 @@ static int sasl_sc_sasl2dn( BackendDB *be, Connection *conn, Operation *o,
        struct berval *ndn = o->o_callback->sc_private;
 
        /* We only want to be called once */
-       if (ndn->bv_val) {
+       if( ndn->bv_val ) {
                free(ndn->bv_val);
                ndn->bv_val = NULL;
+
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1,
-                  "slap_sasl2dn: search DN returned more than 1 entry\n" ));
+               LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1,
+                       "slap_sasl2dn: search DN returned more than 1 entry\n" ));
 #else
-       Debug( LDAP_DEBUG_TRACE,
-          "slap_sasl2dn: search DN returned more than 1 entry\n", 0,0,0 );
+               Debug( LDAP_DEBUG_TRACE,
+                       "slap_sasl2dn: search DN returned more than 1 entry\n", 0,0,0 );
 #endif
                return -1;
-       } else {
-               ber_dupbv(ndn, &e->e_nname);
-               return 0;
        }
+
+       ber_dupbv(ndn, &e->e_nname);
+       return 0;
 }
 
 /*
@@ -396,9 +444,10 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn
        LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
                "slap_sasl2dn: converting SASL name %s to DN.\n", saslname->bv_val ));
 #else
-       Debug( LDAP_DEBUG_TRACE,
-               "==>slap_sasl2dn: Converting SASL name %s to a DN\n", saslname->bv_val, 0,0 );
+       Debug( LDAP_DEBUG_TRACE, "==>slap_sasl2dn: "
+               "converting SASL name %s to a DN\n", saslname->bv_val, 0,0 );
 #endif
+
        dn->bv_val = NULL;
        dn->bv_len = 0;
        cb.sc_private = dn;
@@ -414,8 +463,6 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn
 
        be = select_backend( &uri.dn, 0, 1 );
 
-       conn->c_authz_backend = be;
-
        /* Massive shortcut: search scope == base */
        if( uri.scope == LDAP_SCOPE_BASE ) {
                *dn = uri.dn;
@@ -426,16 +473,17 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn
 
 #ifdef NEW_LOGGING
        LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1,
-                  "slap_sasl2dn: performing internal search (base=%s, scope=%d)\n",
-                  uri.dn.bv_val, uri.scope ));
+               "slap_sasl2dn: performing internal search (base=%s, scope=%d)\n",
+               uri.dn.bv_val, uri.scope ));
 #else
        Debug( LDAP_DEBUG_TRACE,
           "slap_sasl2dn: performing internal search (base=%s, scope=%d)\n",
           uri.dn.bv_val, uri.scope, 0 );
 #endif
 
-       if(( be == NULL ) || ( be->be_search == NULL))
+       if(( be == NULL ) || ( be->be_search == NULL)) {
                goto FINISHED;
+       }
        suffix_alias( be, &uri.dn );
 
        op.o_tag = LDAP_REQ_SEARCH;
@@ -444,10 +492,14 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn
        op.o_callback = &cb;
        op.o_time = slap_get_time();
 
-       (*be->be_search)( be, /*conn*/NULL, &op, /*base*/NULL, &uri.dn,
-          uri.scope, /*deref=*/1, /*sizelimit=*/1, /*time=*/0, filter, /*fstr=*/NULL,
-          /*attrs=*/NULL, /*attrsonly=*/0 );
+       (*be->be_search)( be, NULL, &op, NULL, &uri.dn,
+               uri.scope, LDAP_DEREF_NEVER, 1, 0,
+               filter, NULL, NULL, 1 );
        
+       if( dn->bv_len ) {
+               conn->c_authz_backend = be;
+       }
+
 FINISHED:
        if( uri.dn.bv_len ) ch_free( uri.dn.bv_val );
        if( uri.filter.bv_len ) ch_free( uri.filter.bv_val );
@@ -593,27 +645,21 @@ CONCLUDED:
  * The DNs should not have the dn: prefix
  */
 static int
-slap_sasl_check_authz(struct berval *searchDN, struct berval *assertDN, struct berval *attr, struct berval *authc)
+slap_sasl_check_authz(struct berval *searchDN, struct berval *assertDN, AttributeDescription *ad, struct berval *authc)
 {
-       const char *errmsg;
        int i, rc;
        BerVarray vals=NULL;
-       AttributeDescription *ad=NULL;
 
 #ifdef NEW_LOGGING
        LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
                   "slap_sasl_check_authz: does %s match %s rule in %s?\n",
-                  assertDN->bv_val, attr->bv_val, searchDN->bv_val ));
+                  assertDN->bv_val, ad->ad_cname.bv_val, searchDN->bv_val ));
 #else
        Debug( LDAP_DEBUG_TRACE,
           "==>slap_sasl_check_authz: does %s match %s rule in %s?\n",
-          assertDN->bv_val, attr->bv_val, searchDN->bv_val);
+          assertDN->bv_val, ad->ad_cname.bv_val, searchDN->bv_val);
 #endif
 
-       rc = slap_bv2ad( attr, &ad, &errmsg );
-       if( rc != LDAP_SUCCESS )
-               goto COMPLETE;
-
        rc = backend_attribute( NULL, NULL, NULL, NULL, searchDN, ad, &vals );
        if( rc != LDAP_SUCCESS )
                goto COMPLETE;
@@ -631,10 +677,10 @@ COMPLETE:
 
 #ifdef NEW_LOGGING
        LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                  "slap_sasl_check_authz: %s check returning %s\n", attr->bv_val, rc ));
+                  "slap_sasl_check_authz: %s check returning %s\n", ad->ad_cname.bv_val, rc ));
 #else
        Debug( LDAP_DEBUG_TRACE,
-          "<==slap_sasl_check_authz: %s check returning %d\n", attr->bv_val, rc, 0);
+          "<==slap_sasl_check_authz: %s check returning %d\n", ad->ad_cname.bv_val, rc, 0);
 #endif
 
        return( rc );
@@ -646,12 +692,6 @@ COMPLETE:
  * The DNs should not have the dn: prefix
  */
 
-static struct berval sasl_authz_src = {
-       sizeof(SASL_AUTHZ_SOURCE_ATTR)-1, SASL_AUTHZ_SOURCE_ATTR };
-
-static struct berval sasl_authz_dst = {
-       sizeof(SASL_AUTHZ_DEST_ATTR)-1, SASL_AUTHZ_DEST_ATTR };
-
 int slap_sasl_authorized( struct berval *authcDN, struct berval *authzDN )
 {
        int rc = LDAP_INAPPROPRIATE_AUTH;
@@ -678,17 +718,21 @@ int slap_sasl_authorized( struct berval *authcDN, struct berval *authzDN )
        }
 
        /* Check source rules */
-       rc = slap_sasl_check_authz( authcDN, authzDN, &sasl_authz_src,
-          authcDN );
-       if( rc == LDAP_SUCCESS ) {
-               goto DONE;
+       if( authz_policy & SASL_AUTHZ_TO ) {
+               rc = slap_sasl_check_authz( authcDN, authzDN,
+                       slap_schema.si_ad_saslAuthzTo, authcDN );
+               if( rc == LDAP_SUCCESS ) {
+                       goto DONE;
+               }
        }
 
        /* Check destination rules */
-       rc = slap_sasl_check_authz( authzDN, authcDN, &sasl_authz_dst,
-          authcDN );
-       if( rc == LDAP_SUCCESS ) {
-               goto DONE;
+       if( authz_policy & SASL_AUTHZ_FROM ) {
+               rc = slap_sasl_check_authz( authzDN, authcDN,
+                       slap_schema.si_ad_saslAuthzFrom, authcDN );
+               if( rc == LDAP_SUCCESS ) {
+                       goto DONE;
+               }
        }
 
        rc = LDAP_INAPPROPRIATE_AUTH;
index d06b32fe29bb2673e9a005f2d8b54ff8790fd1e7..6262c414fb08530c4996868edb44c8595ea9271e 100644 (file)
@@ -339,6 +339,15 @@ static struct slap_schema_ad_map {
                        "USAGE dSAOperation )",
                rootDseAttribute, 0, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_supportedFeatures) },
+       { "monitorContext", "( 1.3.6.1.4.1.4203.666.1.10 "
+                       "NAME 'monitorContext' "
+                       "DESC 'monitor context' "
+                       "EQUALITY objectIdentifierMatch "
+                       "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
+                       "SINGLE-VALUE NO-USER-MODIFICATION "
+                       "USAGE dSAOperation )",
+               rootDseAttribute, SLAP_AT_HIDE, NULL, NULL, NULL,
+               offsetof(struct slap_internal_schema, si_ad_monitorContext) },
        { "vendorName", "( 1.3.6.1.1.4 NAME 'vendorName' "
                        "DESC 'RFC3045: name of implementation vendor' "
                        "EQUALITY 1.3.6.1.4.1.1466.109.114.1 "
@@ -453,7 +462,22 @@ static struct slap_schema_ad_map {
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE dSAOperation )",
                NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_children) },
-
+       { "saslAuthzTo", "( 1.3.6.1.4.1.4203.666.1.8 "
+                       "NAME 'saslAuthzTo' "
+                       "DESC 'SASL proxy authorization targets' "
+                       "EQUALITY caseExactMatch "
+                       "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 "
+                       "USAGE distributedOperation )",
+               NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
+               offsetof(struct slap_internal_schema, si_ad_saslAuthzTo) },
+       { "saslAuthzFrom", "( 1.3.6.1.4.1.4203.666.1.9 "
+                       "NAME 'saslAuthzFrom' "
+                       "DESC 'SASL proxy authorization sources' "
+                       "EQUALITY caseExactMatch "
+                       "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 "
+                       "USAGE distributedOperation )",
+               NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
+               offsetof(struct slap_internal_schema, si_ad_saslAuthzFrom) },
 #ifdef SLAPD_ACI_ENABLED
        { "OpenLDAPaci", "( 1.3.6.1.4.1.4203.666.1.5 "
                        "NAME 'OpenLDAPaci' "
index 10e92f827cb260fa4a791324a507b29323094ab2..1f9138753b38459864de403b687d815e669c37f7 100644 (file)
@@ -22,6 +22,7 @@ static void           oc_usage(void);
 static void            at_usage(void);
 
 static char *const err2text[] = {
+       "Success",
        "Out of memory",
        "ObjectClass not found",
        "ObjectClass inappropriate SUPerior",
@@ -46,7 +47,7 @@ static char *const err2text[] = {
 char *
 scherr2str(int code)
 {
-       if ( code < 0 || SLAP_SCHERR_LAST < code ) {
+       if ( code < 0 || SLAP_SCHERR_LAST <= code ) {
                return "Unknown error";
        } else {
                return err2text[code];
index a4b02c75bd730eb2011c75cc7dca46db56a35fdf..4284b9dfdd0dd8ef05193a7b874d302f955825c2 100644 (file)
@@ -250,6 +250,10 @@ typedef union slap_sockaddr {
 #endif
 } Sockaddr;
 
+#ifdef LDAP_PF_INET6
+extern int slap_inet4or6;
+#endif
+
 typedef struct slap_oid_macro {
        struct berval som_oid;
        char **som_names;
@@ -590,6 +594,7 @@ struct slap_internal_schema {
        AttributeDescription *si_ad_supportedLDAPVersion;
        AttributeDescription *si_ad_supportedSASLMechanisms;
        AttributeDescription *si_ad_supportedFeatures;
+       AttributeDescription *si_ad_monitorContext;
        AttributeDescription *si_ad_vendorName;
        AttributeDescription *si_ad_vendorVersion;
 
@@ -614,6 +619,8 @@ struct slap_internal_schema {
        /* Access Control Internals */
        AttributeDescription *si_ad_entry;
        AttributeDescription *si_ad_children;
+       AttributeDescription *si_ad_saslAuthzTo;
+       AttributeDescription *si_ad_saslAuthzFrom;
 #ifdef SLAPD_ACI_ENABLED
        AttributeDescription *si_ad_aci;
 #endif
@@ -1161,7 +1168,9 @@ struct slap_backend_db {
 
 #define SLAP_DISALLOW_BIND_ANON                0x0001U /* no anonymous */
 #define SLAP_DISALLOW_BIND_SIMPLE      0x0002U /* simple authentication */
-#define SLAP_DISALLOW_BIND_KRBV4       0x0004U /* Kerberos V4 authentication */
+#define SLAP_DISALLOW_BIND_SIMPLE_UNPROTECTED \
+                                                                       0x0004U /* unprotected simple auth */
+#define SLAP_DISALLOW_BIND_KRBV4       0x0008U /* Kerberos V4 authentication */
 
 #define SLAP_DISALLOW_TLS_2_ANON       0x0010U /* StartTLS -> Anonymous */
 #define SLAP_DISALLOW_TLS_AUTHC                0x0020U /* TLS while authenticated */
@@ -1541,7 +1550,7 @@ typedef struct slap_conn {
        /* only can be changed by binding thread */
        int             c_sasl_bind_in_progress;        /* multi-op bind in progress */
        struct berval   c_sasl_bind_mech;                       /* mech in progress */
-       struct berval   c_cdn;
+       struct berval   c_sasl_dn;      /* temporary storage */
 
        /* authorization backend */
        Backend *c_authz_backend;
@@ -1596,26 +1605,6 @@ typedef struct slap_conn {
 #define Statslog( level, fmt, connid, opid, arg1, arg2, arg3 )
 #endif
 
-
-#define SASLREGEX_REPLACE 10
-#define SASL_AUTHZ_SOURCE_ATTR "saslAuthzTo"
-#define SASL_AUTHZ_DEST_ATTR "saslAuthzFrom"
-
-typedef struct sasl_uri {
-  struct berval dn;
-  struct berval filter;
-  int scope;
-} SaslUri_t;
-
-typedef struct sasl_regexp {
-  char *sr_match;                                                      /* regexp match pattern */
-  SaslUri_t sr_replace;                                                /* regexp replace pattern */
-  regex_t sr_workspace;                                                /* workspace for regexp engine */
-  regmatch_t sr_strings[SASLREGEX_REPLACE];    /* strings matching $1,$2 ... */
-  int sr_dn_offset[SASLREGEX_REPLACE+2];               /* offsets of $1,$2... in *replace */
-  int sr_fi_offset[SASLREGEX_REPLACE+2];               /* offsets of $1,$2... in *replace */
-} SaslRegexp_t;
-
 /*
  * listener; need to access it from monitor backend
  */
index 3db426bac42a2c9763730db289879a6632b521b6..a6c9ebb3ae1130575959413c1f3e110d4f951040 100644 (file)
@@ -140,15 +140,27 @@ int slap_sasl_destroy(void)
        return LDAP_SUCCESS;
 }
 
-char * slap_sasl_secprops( const char *in )
+int slap_sasl_setpass(
+       Connection      *conn,
+       Operation       *op,
+       const char      *reqoid,
+       struct berval   *reqdata,
+       char            **rspoid,
+       struct berval   **rspdata,
+       LDAPControl     *** rspctrls,
+       const char      **text )
 {
-       return NULL;
+       return LDAP_SUCCESS;
 }
 
-
-int slap_sasl_regexp_config( const char *match, const char *replace )
+int slap_sasl_config(
+       int cargc,
+       char **cargv,
+       char *line,
+       const char *fname,
+       int lineno )
 {
-       return(0);
+       return LDAP_SUCCESS;
 }
 
 
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644 (file)
index 0000000..bbbbc87
--- /dev/null
@@ -0,0 +1,64 @@
+# $OpenLDAP$
+## Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+## COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+##
+## tests Makefile.in for OpenLDAP
+SUBDIRS= progs
+BUILD_LDBM=@BUILD_LDBM@
+BUILD_BDB=@BUILD_BDB@
+BUILD_MONITOR=@BUILD_MONITOR@
+
+test: tests
+tests: bdb ldbm
+
+bdb: test-bdb
+test-bdb:      FORCE
+       @-$(LN_S) $(srcdir)/data .
+       @-$(LN_S) $(top_srcdir)/servers/slapd/schema .
+       @-$(LN_S) ../libraries/liblunicode ucdata
+       @if test "$(BUILD_BDB)" = "yes" ; then \
+               echo "Initiating LDAP tests for BDB..." ; \
+               $(MKDIR) test-db test-repl || true; \
+               $(srcdir)/scripts/all $(srcdir) bdb $(BUILD_MONITOR) ; \
+       else \
+               echo "run configure with --enable-bdb" ; \
+       fi
+
+ldbm: test-ldbm
+test-ldbm:     FORCE
+       @-$(LN_S) $(srcdir)/data .
+       @-$(LN_S) $(top_srcdir)/servers/slapd/schema .
+       @-$(LN_S) ../libraries/liblunicode ucdata
+       @if test "$(BUILD_LDBM)" = "yes" ; then \
+               echo "Initiating LDAP tests for LDBM..." ; \
+               $(MKDIR) test-db test-repl || true; \
+               $(srcdir)/scripts/all $(srcdir) ldbm $(BUILD_MONITOR); \
+       else \
+               echo "run configure with --enable-ldbm" ; \
+       fi
+
+passwd: test-passwd
+test-passwd: FORCE
+       @-$(LN_S) $(srcdir)/data .
+       @-$(LN_S) $(top_srcdir)/servers/slapd/schema .
+       @-$(LN_S) ../libraries/liblunicode ucdata
+       @echo "Initiating LDAP tests..."
+       @-$(MKDIR) test-db test-repl || true
+       @$(srcdir)/scripts/passwd-search $(srcdir) passwd
+
+test-nis-schema:        test-nis-schema-ldbm
+test-nis-schema-ldbm:
+       @-$(LN_S) $(srcdir)/data .
+       @-$(LN_S) $(top_srcdir)/servers/slapd/schema .
+       @-$(LN_S) ../libraries/liblunicode ucdata
+       @echo "Initiating LDAP server with NIS schema & ldbm backend..."; \
+       $(MKDIR) test-db test-repl ; \
+       $(srcdir)/scripts/startup_nis_ldap_server.sh $(srcdir) ldbm
+
+clean-local:   FORCE
+       -$(RM) -r test-db/[!C]* test-repl/[!C]* *leak *gmon *core
+
+veryclean-local: FORCE
+       @-$(RM) data schema ucdata
+       -$(RM) -r test-db test-repl
+
index fa715ef1c76688d9839f7414cdcab82b68d8f3fb..055e5fe14506fa3e1e0e51e1a8520c0ef21e9d25 100644 (file)
@@ -32,3 +32,5 @@ directory     ./test-db
 #suffix                "dc=example,dc=com"
 #directory     ./test-repl
 #index         objectClass eq
+
+#monitor#database monitor
index 451c739caa1948a267c5b964c635ae45ac1d337b..85cb1a0edbec5bf4746e99e2abbf94b17c8cfb12 100755 (executable)
@@ -1,23 +1,49 @@
-#!/bin/sh
+#! /bin/sh
+# $OpenLDAP$
+
+# disable LDAP initialization
+LDAPNOINIT=true; export LDAPNOINIT
 
 echo ">>>>> Executing all LDAP tests..."
 
-if [ $# -eq 0 ]; then
-       SCRIPTDIR="."
+if test $# -eq 0 ; then
+       SRCDIR="."
+else
+       SRCDIR=$1; shift
+fi
+
+echo ">>>>> Test Directory: $SRCDIR"
+
+if test $# -eq 0 ; then
+       BACKEND=bdb
 else
-       SCRIPTDIR=$1; shift
+       BACKEND=$1; shift
 fi
 
-for i in $SCRIPTDIR/test*; do
-       CMD=$i $*
-       echo ">>>>> Starting $CMD ..."
-       $CMD
+echo ">>>>> Backend: $BACKEND"
+
+if test $# -eq 0 ; then
+       MONITOR=no
+else
+       MONITOR=$1; shift
+fi
+
+SHTOOL="$SRCDIR/../build/shtool"
+
+TB=`$SHTOOL echo -e "%B"`
+TN=`$SHTOOL echo -e "%b"`
+
+for CMD in $SRCDIR/scripts/test*; do
+       echo ">>>>> Starting ${TB}`basename $CMD`${TN} ..."
+       $CMD $SRCDIR $BACKEND $MONITOR
        RC=$?
-       if [ $RC -eq 0 ]; then
-               echo ">>>>> $CMD completed OK."
+       if test $RC -eq 0 ; then
+               echo ">>>>> $CMD completed ${TB}OK${TN}."
        else
-               echo ">>>>> $CMD failed (exit $RC)"
+               echo ">>>>> $CMD ${TB}failed${TN} (exit $RC)"
                exit $RC
        fi
-       echo
+       echo ">>>>> waiting 10 seconds for things to exit"
+       sleep 10
+       echo ""
 done
index afdaa5c693cfc76ce70f285d2f7840f22d4f829c..703b199f4b0addf63672b0e9ff76a1dfe10f2cb6 100755 (executable)
@@ -1,3 +1,8 @@
 #! /bin/sh
 # $OpenLDAP$
-sed -e "s/@BACKEND@/$BACKEND/" -e "s/^#$BACKEND#//"
+if [ x"$MONITORDB" = x"yes" ] ; then
+       MON=monitor
+else
+       MON=nomonitor
+fi
+sed -e "s/@BACKEND@/$BACKEND/" -e "s/^#$BACKEND#//"  -e "s/^#$MON#//"
diff --git a/tests/scripts/test000-rootdse b/tests/scripts/test000-rootdse
new file mode 100755 (executable)
index 0000000..b407afb
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# $OpenLDAP$
+
+SRCDIR="."
+if test $# -ge 1 ; then
+       SRCDIR=$1; shift
+fi
+BACKEND=bdb
+if test $# -ge 1 ; then
+       BACKEND=$1; shift
+fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
+
+WAIT=0
+if test $# -ge 1 ; then
+       WAIT=1; shift
+fi
+
+echo "running defines.sh"
+. $SRCDIR/scripts/defines.sh
+
+echo "Datadir is $DATADIR"
+
+echo "Cleaning up in $DBDIR..."
+
+rm -f $DBDIR/[!C]*
+
+echo "Starting slapd on TCP/IP port $PORT..."
+. $CONFFILTER $BACKEND $MONITORDB < $SCHEMACONF > $DBCONF
+$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
+PID=$!
+if test $WAIT != 0 ; then
+    echo PID $PID
+    read foo
+fi
+
+echo "Using ldapsearch to retrieve the root DSE..."
+for i in 0 1 2 3 4 5; do
+       $LDAPSEARCH -b "" -s base -h $LOCALHOST -p $PORT 'extensibleObject' > $SEARCHOUT 2>&1
+       RC=$?
+       if test $RC = 1 ; then
+               echo "Waiting 5 seconds for slapd to start..."
+               sleep 5
+       fi
+done
+
+if test $RC = 0 -a $MONITORDB = yes ; then
+       echo "Using ldapsearch to retrieve the cn=Monitor..."
+       $LDAPSEARCH -b "cn=Monitor" -s base -h $LOCALHOST -p $PORT 'extensibleObject' >> $SEARCHOUT 2>&1
+       RC=$?
+fi
+
+kill -HUP $PID
+
+cat $SEARCHOUT
+
+if test $RC != 0 ; then
+       echo ">>>>> Test failed"
+else
+       if grep "TLS:" $SEARCHOUT; then
+               RC=-1
+       else
+           echo ">>>>> Test succeeded"
+       fi
+fi
+
+
+exit $RC
index d22e04c8e0791fadab91bed24cbf02baffa1c22a..de2f05a331f7c3cc656a1311634bb422eddd6a98 100755 (executable)
@@ -1,30 +1,55 @@
-#!/bin/sh
+#! /bin/sh
+# $OpenLDAP$
 
-. scripts/defines.sh
+SRCDIR="."
+if test $# -ge 1 ; then
+       SRCDIR=$1; shift
+fi
+BACKEND=bdb
+if test $# -ge 1 ; then
+       BACKEND=$1; shift
+fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
+WAIT=0
+if test $# -ge 1 ; then
+       WAIT=1; shift
+fi
 
+echo "running defines.sh"
+. $SRCDIR/scripts/defines.sh
+
+echo "Datadir is $DATADIR"
 
 echo "Cleaning up in $DBDIR..."
 
-rm -f $DBDIR/*
+rm -f $DBDIR/[!C]*
 
-echo "Running ldif2ldbm to build slapd database..."
-$LDIF2LDBM -f $CONF -i $LDIF -e ../servers/slapd/tools
+echo "Running slapadd to build slapd database..."
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $ADDCONF
+$SLAPADD -f $ADDCONF -l $LDIFORDERED
 RC=$?
-if [ $RC != 0 ]; then
-       echo "ldif2ldbm failed!"
+if test $RC != 0 ; then
+       echo "slapadd failed ($RC)!"
        exit $RC
 fi
 
 echo "Starting slapd on TCP/IP port $PORT..."
-$SLAPD -f $CONF -p $PORT -d 1 > /dev/null 2>&1 &
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
+$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
+if test $WAIT != 0 ; then
+    echo PID $PID
+    read foo
+fi
 
 echo "Using ldapsearch to retrieve all the entries..."
 for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
-               'objectClass=*' > $SEARCHOUT 2>&1
+       $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT > $SEARCHOUT 2>&1
        RC=$?
-       if [ $RC = 1 ]; then
+       if test $RC = 1 ; then
                echo "Waiting 5 seconds for slapd to start..."
                sleep 5
        fi
@@ -32,15 +57,22 @@ done
 
 kill -HUP $PID
 
-if [ $RC != 0 ]; then
-       echo "ldapsearch failed!"
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
        exit $RC
 fi
 
-echo "Comparing retrieved entries to LDIF file used to create database"
-cmp $SEARCHOUT $LDIF
-if [ $? != 0 ]; then
+echo "Filtering ldapsearch results..."
+. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
+echo "Filtering original ldif used to create database..."
+. $LDIFFILTER < $LDIF > $LDIFFLT
+echo "Comparing filter output..."
+$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
+
+if test $? != 0 ; then
        echo "comparison failed - database was not created correctly"
+       echo $SEARCHFLT $LDIFFLT
+       $DIFF $SEARCHFLT $LDIFFLT
        exit 1
 fi
 
index dd785f09449307945d0b85e974342a7126ee5f7e..3d6fea0806e3cac3407a0c2cdc2e3c8c3bf404e3 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 
 echo "Starting slapd on TCP/IP port $PORT..."
-. $CONFFILTER $BACKEND < $CONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
 if test $WAIT != 0 ; then
index 94121d32f4ec82ecdc68f645de575079a4860916..c69cc2d797bde2083d1e29de0aabc4ecd2b69899 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 
 echo "Running slapadd to build slapd database..."
-. $CONFFILTER $BACKEND < $MCONF > $ADDCONF
+. $CONFFILTER $BACKEND $MONITORDB < $MCONF > $ADDCONF
 $SLAPADD -f $ADDCONF -l $LDIFORDERED
 RC=$?
 if test $RC != 0 ; then
@@ -31,7 +35,7 @@ if test $RC != 0 ; then
 fi
 
 echo "Running slapindex to index slapd database..."
-. $CONFFILTER $BACKEND < $CONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
 $SLAPINDEX -f $DBCONF
 RC=$?
 if test $RC != 0 ; then
index 09a4fdfee1134601803b17e3332f3b5461b894ec..d5571ae3a4a1d771f267a5c99e28bf3543d46994 100755 (executable)
@@ -1,54 +1,86 @@
-#!/bin/sh
+#! /bin/sh
+# $OpenLDAP$
 
-. scripts/defines.sh
+SRCDIR="."
+if test $# -ge 1 ; then
+       SRCDIR=$1; shift
+fi
+BACKEND=bdb
+if test $# -ge 1 ; then
+       BACKEND=$1; shift
+fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
+WAIT=0
+if test $# -ge 1 ; then
+       WAIT=1; shift
+fi
+
+echo "running defines.sh"
+. $SRCDIR/scripts/defines.sh
+
+echo "running defines.sh $SRCDIR $BACKEND"
+. $SRCDIR/scripts/defines.sh
 
 echo "Cleaning up in $DBDIR..."
 
-rm -f $DBDIR/*
+rm -f $DBDIR/[!C]*
 
-echo "Running ldif2ldbm to build slapd database..."
-$LDIF2LDBM -f $CONF -i $LDIF -e ../servers/slapd/tools
+echo "Running slapadd to build slapd database..."
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
+$SLAPADD -f $DBCONF -l $LDIFORDERED
 RC=$?
-if [ $RC != 0 ]; then
-       echo "ldif2ldbm failed!"
+if test $RC != 0 ; then
+       echo "slapadd failed ($RC)!"
        exit $RC
 fi
 
 echo "Starting slapd on TCP/IP port $PORT..."
-$SLAPD -f $CONF -p $PORT -d 1 > /dev/null 2>&1 &
+$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
+if test $WAIT != 0 ; then
+    echo PID $PID
+    read foo
+fi
 
 echo "Testing slapd modify operations..."
 for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
-               'cn=Manager' > /dev/null 2>&1
+       $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \
+               'objectclass=*' > /dev/null 2>&1
        RC=$?
-       if [ $RC = 1 ]; then
+       if test $RC = 1 ; then
                echo "Waiting 5 seconds for slapd to start..."
                sleep 5
        fi
 done
 
-if [ $RC != 0 ]; then
-       echo "ldapsearch failed!"
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
        kill -HUP $PID
        exit $RC
 fi
 
-cat /dev/null > $TESTOUT
-
 echo "Testing modify, add, and delete..."
-$LDAPMODIFY -v -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD > \
-       /dev/null 2>&1 << EOMODS
-dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
+$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \
+       $TESTOUT 2>&1 << EOMODS
+version: 1
+
+# LEADING COMMENT AND WHITE SPACE
+
+dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michigan,c=US
+# EMBEDDED COMMENT
 changetype: modify
 add: drink
 drink: Orange Juice
 
-dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
+dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University of Michigan,c=US
 changetype: modify
-replace: multilinedescription
-multilinedescription: The replaced multiLineDescription $ Blah Woof.
+# EMBEDDED COMMENT
+ CONTINUED
+replace: description
+description: The replaced multiLineDescription $ Blah Woof.
 -
 replace: drink
 drink: Iced Tea
@@ -56,71 +88,76 @@ drink: Mad Dog 20/20
 
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
 delete: member
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=University of Michigan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University of Michigan,c=US
 -
 add: member
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michigan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michigan,c=US
 
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 changetype: modify
 delete: member
+-
+add: member
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michigan,c=US
 
-dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
+dn: cn=Gern Jensen,ou=Information Technology Division,ou=People,o=University of Michigan,c=US
 changetype: add
 objectclass: top
 objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+objectclass: OpenLDAPperson
 cn: Gern Jensen
+sn: Jensen
+uid: gjensen
 title: Chief Investigator, ITD
 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: gjensen
-krbname: gjensen@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 drink: Coffee
 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
-multilinedescription: Very odd
+description: Very odd
 facsimiletelephonenumber: +1 313 555 7557
 telephonenumber: +1 313 555 8343
 mail: gjensen@mailgw.umich.edu
 homephone: +1 313 555 8844
 
-dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
+dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=University of Michigan,c=US
 changetype: delete
+# TRAILING COMMENT AND WHITE SPACE
 
 EOMODS
 
 RC=$?
-if [ $RC != 0 ]; then
-       echo "ldapmodify failed!"
+if test $RC != 0 ; then
+       echo "ldapmodify failed ($RC)!"
        kill -HUP $PID
        exit $RC
 fi
 
 echo "Using ldapsearch to retrieve all the entries..."
-$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
-           'objectClass=*' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
-           > $SEARCHOUT 2>&1
+$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
+           'objectClass=*' > $SEARCHOUT 2>&1
 RC=$?
 kill -HUP $PID
-if [ $RC != 0 ]; then
-       echo "ldapsearch failed!"
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
        exit $RC
 fi
 
-echo "Comparing database to reference file"
-cmp $SEARCHOUT $MODIFYOUTMASTER
-if [ $? != 0 ]; then
+LDIF=$MODIFYOUTMASTER
+
+echo "Filtering ldapsearch results..."
+. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
+echo "Filtering original ldif used to create database..."
+. $LDIFFILTER < $LDIF > $LDIFFLT
+echo "Comparing filter output..."
+$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
+
+if test $? != 0 ; then
        echo "comparison failed - modify operations did not complete correctly"
        exit 1
 fi
 
 echo ">>>>> Test succeeded"
 
-
 exit 0
index 11d3c44f03d9ef08f4a63d1113d69965bfb5ea53..994cc411913c46ab15989167c7dad07bdeb96a6d 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 
 echo "Running slapadd to build slapd database..."
-. $CONFFILTER $BACKEND < $CONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
 $SLAPADD -f $DBCONF -l $LDIFORDERED
 RC=$?
 if test $RC != 0 ; then
index 8a389b67f35ea05f499c2ab361e464118c117375..91b412fe8b416c438a45f500abf2011717489598 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 
 echo "Running slapadd to build slapd database..."
-. $CONFFILTER $BACKEND < $ACLCONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $ACLCONF > $DBCONF
 $SLAPADD -f $DBCONF -l $LDIFORDERED
 RC=$?
 if test $RC != 0 ; then
index 4f93e1a62c8721dc9c0bec7c3870165a2603195c..e3eaab27bd2d77eb3d57b33df84396f217fd8dbf 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -39,7 +43,7 @@ echo "Cleaning up in $REPLDIR..."
 rm -f $REPLDIR/[!C]*
 
 echo "Starting master slapd on TCP/IP port $PORT..."
-. $CONFFILTER $BACKEND < $MASTERCONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $MASTERCONF > $DBCONF
 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
 if test $WAIT != 0 ; then
@@ -48,7 +52,7 @@ if test $WAIT != 0 ; then
 fi
 
 echo "Starting slave slapd on TCP/IP port $SLAVEPORT..."
-. $CONFFILTER $BACKEND < $SLAVECONF > $REPLCONF
+. $CONFFILTER $BACKEND $MONITORDB < $SLAVECONF > $REPLCONF
 $SLAPD -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 &
 SLAVEPID=$!
 if test $WAIT != 0 ; then
diff --git a/tests/scripts/test008-concurrency b/tests/scripts/test008-concurrency
new file mode 100755 (executable)
index 0000000..e646a08
--- /dev/null
@@ -0,0 +1,97 @@
+#! /bin/sh
+# $OpenLDAP$
+
+SRCDIR="."
+if test $# -ge 1 ; then
+       SRCDIR=$1; shift
+fi
+BACKEND=bdb
+if test $# -ge 1 ; then
+       BACKEND=$1; shift
+fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
+WAIT=0
+if test $# -ge 1 ; then
+       WAIT=1; shift
+fi
+
+echo "running defines.sh"
+. $SRCDIR/scripts/defines.sh
+
+echo "Datadir is $DATADIR"
+
+echo "Cleaning up in $DBDIR..."
+
+rm -f $DBDIR/[!C]*
+
+echo "Running slapadd to build slapd database..."
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
+$SLAPADD -f $DBCONF -l $LDIFORDERED
+RC=$?
+if test $RC != 0 ; then
+       echo "slapadd failed ($RC)!"
+       exit $RC
+fi
+
+echo "Waiting 5 seconds for slapadd to build slapd database..."
+sleep 5
+
+echo "Starting slapd on TCP/IP port $PORT..."
+$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
+PID=$!
+if test $WAIT != 0 ; then
+    echo PID $PID
+    read foo
+fi
+
+echo "Using ldapsearch to check that slapd is running..."
+for i in 0 1 2 3 4 5; do
+       $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \
+               'objectclass=*' > /dev/null 2>&1
+       RC=$?
+       if test $RC = 1 ; then
+               echo "Waiting 5 seconds for slapd to start..."
+               sleep 5
+       fi
+done
+
+echo "Using tester for concurrent server access..."
+$SLAPDTESTER -b "$BASEDN" -P "$PROGDIR" -d "$DATADIR" -h $LOCALHOST -p $PORT -D "$MANAGERDN" -w $PASSWD -l 50
+RC=$?
+
+if test $RC != 0 ; then
+       echo "slapd-tester failed ($RC)!"
+       exit $RC
+fi 
+
+echo "Using ldapsearch to retrieve all the entries..."
+$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
+                       'objectClass=*' > $SEARCHOUT 2>&1
+RC=$?
+
+kill -HUP $PID
+
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       exit $RC
+fi
+
+echo "Filtering ldapsearch results..."
+. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
+echo "Filtering original ldif used to create database..."
+. $LDIFFILTER < $LDIF > $LDIFFLT
+echo "Comparing filter output..."
+$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
+
+if test $? != 0 ; then
+       echo "comparison failed - database was not created correctly"
+       exit 1
+fi
+
+echo ">>>>> Test succeeded"
+
+
+exit 0
index 63e145eebc3a3591ddd0554cec6dc60c1c3f65f9..bf295ea656c46ae833a17ad84634c155b7b31e50 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -28,7 +32,7 @@ rm -f $DBDIR/[!C]*
 rm -f $REPLDIR/[!C]*
 
 echo "Running slapadd to build slapd database..."
-. $CONFFILTER $BACKEND < $CONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
 $SLAPADD -f $DBCONF -l $LDIFORDERED
 RC=$?
 if test $RC != 0 ; then
@@ -45,7 +49,7 @@ if test $WAIT != 0 ; then
 fi
 
 echo "Starting slave slapd on TCP/IP port $SLAVEPORT..."
-. $CONFFILTER $BACKEND < $REFSLAVECONF > $REPLCONF
+. $CONFFILTER $BACKEND $MONITORDB < $REFSLAVECONF > $REPLCONF
 $SLAPD -n slave -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 &
 SLAVEPID=$!
 if test $WAIT != 0 ; then
index acf6175319f2521860fbec6d0a75623a2f20547b..aeafbd1eb6b040c62b7d64c83408dda680900823 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 
 echo "Starting slapd on TCP/IP port $PORT..."
-. $CONFFILTER $BACKEND < $PWCONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $PWCONF > $DBCONF
 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
 if test $WAIT != 0 ; then
index a1db8872e0bc505af5794a864b6af68d65a4a2d6..9957160c0149d757159a8fdbb77efc45b9e04fa8 100755 (executable)
@@ -12,6 +12,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -44,7 +48,7 @@ rm -f $REPLDIR/replica/[!C]*
 rm -f $REPLDIR/[!C]*
 
 echo "Starting master slapd on TCP/IP port $PORT..."
-. $CONFFILTER $BACKEND < $SUBMASTERCONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $SUBMASTERCONF > $DBCONF
 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
 if test $WAIT != 0 ; then
@@ -53,7 +57,7 @@ if test $WAIT != 0 ; then
 fi
 
 echo "Starting slave slapd on TCP/IP port $SLAVEPORT..."
-. $CONFFILTER $BACKEND < $SUBSLAVECONF > $REPLCONF
+. $CONFFILTER $BACKEND $MONITORDB < $SUBSLAVECONF > $REPLCONF
 $SLAPD -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 &
 SLAVEPID=$!
 if test $WAIT != 0 ; then
index 51c589ca84526708720ec8ecc88bd632891fde4a..ff5b1ec2f8d5b456eb8344bc7d5ea3242dcd9eb8 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -24,7 +28,7 @@ mkdir $DBDIR/C_db1 $DBDIR/C_db2 $DBDIR/C_db3
 rm -f $DBDIR/[!C]* $DBDIR/C_db?/*
 
 echo "Running slapadd to build glued slapd databases..."
-. $CONFFILTER $BACKEND < $GLUECONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $GLUECONF > $DBCONF
 $SLAPADD -d $LVL -f $DBCONF -l $LDIFORDERED > $DBDIR/slapadd.log 2>&1
 RC=$?
 if test $RC != 0 ; then
index ba8b0eedbc0a80f31c12ff0e09f4adcdb3799845..1deb30164f2dbc20faa57d268464019d97ed9514 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 
 echo "Starting slapd on TCP/IP port $PORT..."
-. $CONFFILTER $BACKEND < $CONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
 if test $WAIT != 0 ; then
index 705600981b605f01f054de0cbe3952f16e04fcba..cdedf81b1e365ce973689e224ee6fe53ea3f741c 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 
 echo "Starting slapd on TCP/IP port $PORT..."
-. $CONFFILTER $BACKEND < $PWCONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $PWCONF > $DBCONF
 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
 if test $WAIT != 0 ; then
index 9f66443aa1122cf2a69f40acff2bb246436e5277..1657b9204c4d15608fe86f6a90debcd0add50bd2 100755 (executable)
@@ -9,6 +9,10 @@ BACKEND=bdb
 if test $# -ge 1 ; then
        BACKEND=$1; shift
 fi
+MONITORDB=no
+if test $# -ge 1 ; then
+       MONITORDB=$1; shift
+fi
 WAIT=0
 if test $# -ge 1 ; then
        WAIT=1; shift
@@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 
 echo "Running slapadd to build slapd database..."
-. $CONFFILTER $BACKEND < $MCONF > $ADDCONF
+. $CONFFILTER $BACKEND $MONITORDB < $MCONF > $ADDCONF
 $SLAPADD -f $ADDCONF -l $LDIFORDERED
 RC=$?
 if test $RC != 0 ; then
@@ -31,7 +35,7 @@ if test $RC != 0 ; then
 fi
 
 echo "Running slapindex to index slapd database..."
-. $CONFFILTER $BACKEND < $CONF > $DBCONF
+. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF
 $SLAPINDEX -f $DBCONF
 RC=$?
 if test $RC != 0 ; then