From 1dff9049f9b4788883e9b3820763483d01875fb3 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Thu, 1 Sep 2005 22:27:55 +0000 Subject: [PATCH] Ready for release --- CHANGES | 2 + configure | 67 +----- configure.in | 17 -- doc/man/man5/slapd.conf.5 | 45 ++-- doc/man/man5/slapo-glue.5 | 81 ------- doc/man/man8/slapadd.8 | 6 +- doc/man/man8/slapcat.8 | 6 +- doc/man/man8/slapindex.8 | 6 +- include/portable.hin | 3 - servers/slapd/Makefile.in | 4 +- servers/slapd/back-bdb/init.c | 6 +- servers/slapd/{overlays/glue.c => backglue.c} | 216 ++++++++++++------ servers/slapd/bconfig.c | 42 +++- servers/slapd/main.c | 8 + servers/slapd/overlays/Makefile.in | 4 - servers/slapd/proto-slap.h | 8 + servers/slapd/slapcommon.c | 7 + tests/data/slapd-glue-ldap.conf | 7 +- tests/data/slapd-glue-syncrepl1.conf | 6 +- tests/data/slapd-glue-syncrepl2.conf | 6 +- tests/data/slapd-glue.conf | 6 +- tests/data/slapd-ldapglue.conf | 22 +- tests/scripts/defines.sh | 1 - tests/scripts/test011-glue-slapadd | 5 - tests/scripts/test012-glue-populate | 5 - tests/scripts/test029-ldapglue | 5 - tests/scripts/test033-glue-syncrepl | 5 - tests/scripts/test039-glue-ldap-concurrency | 5 - 28 files changed, 280 insertions(+), 321 deletions(-) delete mode 100644 doc/man/man5/slapo-glue.5 rename servers/slapd/{overlays/glue.c => backglue.c} (84%) diff --git a/CHANGES b/CHANGES index 4fda00acce..3da76514fa 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,7 @@ OpenLDAP 2.3.7 Release Fixed slapd winsock assert (ITS#3983) Fixed slapd-bdb/hdb paged results deadlock (ITS#3940) Fixed slapd-bdb/hdb/ldbm searchBase disclose (ITS#3964) + Fixed slapd-bdb/hdb bi_dbenv check (ITS#3992) Fixed slapd-meta generic attribute normalize/pretty (ITS#3956) Fixed slapd-ldap/meta 'undefined' attribute mutex protection (ITS#3958) Added slapd-ldap/meta 'proxied' attribute support (ITS#3959) @@ -16,6 +17,7 @@ OpenLDAP 2.3.7 Release Fixed slapd-meta matchedDN handling (ITS#3944) Fixed slapd-monitor hiding issue (ITS#3986) Fixed slapo-ppolicy lockout status at Bind (ITS#3946) + Moved slapo-glue into slapd core Fixed slaptest cn=config segfault (ITS#3961) Fixed slaptools logging issue (ITS#3937) Fixed slaptools fails after db clean (ITS#3970) diff --git a/configure b/configure index 5d20068110..7044222340 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in OpenLDAP: pkg/ldap/configure.in,v 1.598 2005/08/27 22:23:35 hyc Exp . +# From configure.in OpenLDAP: pkg/ldap/configure.in,v 1.560.2.13 2005/08/29 18:46:16 kurt Exp . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59. # @@ -465,7 +465,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar OPENLDAP_LIBRELEASE OPENLDAP_LIBVERSION OPENLDAP_RELEASE_DATE top_builddir ldap_subdir CC AR CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP LIBTOOL PERLBIN OL_MKDEP OL_MKDEP_FLAGS LTSTATIC LIBOBJS LIBSRCS PLAT WITH_SASL WITH_TLS WITH_MODULES_ENABLED WITH_ACI_ENABLED BUILD_LIBS_DYNAMIC BUILD_SLAPD BUILD_SLAPI SLAPD_SLAPI_DEPEND BUILD_BDB BUILD_DNSSRV BUILD_HDB BUILD_LDAP BUILD_LDBM BUILD_META BUILD_MONITOR BUILD_NULL BUILD_PASSWD BUILD_RELAY BUILD_PERL BUILD_SHELL BUILD_SQL BUILD_ACCESSLOG BUILD_DENYOP BUILD_DYNGROUP BUILD_DYNLIST BUILD_GLUE BUILD_LASTMOD BUILD_PPOLICY BUILD_PROXYCACHE BUILD_REFINT BUILD_RETCODE BUILD_RWM BUILD_SYNCPROV BUILD_TRANSLUCENT BUILD_UNIQUE BUILD_VALSORT BUILD_SLURPD LDAP_LIBS SLAPD_LIBS SLURPD_LIBS LDBM_LIBS LTHREAD_LIBS LUTIL_LIBS WRAP_LIBS SLAPD_MODULES_CPPFLAGS SLAPD_MODULES_LDFLAGS SLAPD_NO_STATIC SLAPD_STATIC_BACKENDS SLAPD_DYNAMIC_BACKENDS SLAPD_STATIC_OVERLAYS SLAPD_DYNAMIC_OVERLAYS PERL_CPPFLAGS SLAPD_PERL_LDFLAGS MOD_PERL_LDFLAGS KRB4_LIBS KRB5_LIBS SASL_LIBS TLS_LIBS MODULES_LIBS SLAPI_LIBS LIBSLAPI LIBSLAPITOOLS AUTH_LIBS SLAPD_SLP_LIBS SLAPD_GMP_LIBS SLAPD_SQL_LDFLAGS SLAPD_SQL_LIBS SLAPD_SQL_INCLUDES LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar OPENLDAP_LIBRELEASE OPENLDAP_LIBVERSION OPENLDAP_RELEASE_DATE top_builddir ldap_subdir CC AR CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP LIBTOOL PERLBIN OL_MKDEP OL_MKDEP_FLAGS LTSTATIC LIBOBJS LIBSRCS PLAT WITH_SASL WITH_TLS WITH_MODULES_ENABLED WITH_ACI_ENABLED BUILD_LIBS_DYNAMIC BUILD_SLAPD BUILD_SLAPI SLAPD_SLAPI_DEPEND BUILD_BDB BUILD_DNSSRV BUILD_HDB BUILD_LDAP BUILD_LDBM BUILD_META BUILD_MONITOR BUILD_NULL BUILD_PASSWD BUILD_RELAY BUILD_PERL BUILD_SHELL BUILD_SQL BUILD_ACCESSLOG BUILD_DENYOP BUILD_DYNGROUP BUILD_DYNLIST BUILD_LASTMOD BUILD_PPOLICY BUILD_PROXYCACHE BUILD_REFINT BUILD_RETCODE BUILD_RWM BUILD_SYNCPROV BUILD_TRANSLUCENT BUILD_UNIQUE BUILD_VALSORT BUILD_SLURPD LDAP_LIBS SLAPD_LIBS SLURPD_LIBS LDBM_LIBS LTHREAD_LIBS LUTIL_LIBS WRAP_LIBS SLAPD_MODULES_CPPFLAGS SLAPD_MODULES_LDFLAGS SLAPD_NO_STATIC SLAPD_STATIC_BACKENDS SLAPD_DYNAMIC_BACKENDS SLAPD_STATIC_OVERLAYS SLAPD_DYNAMIC_OVERLAYS PERL_CPPFLAGS SLAPD_PERL_LDFLAGS MOD_PERL_LDFLAGS KRB4_LIBS KRB5_LIBS SASL_LIBS TLS_LIBS MODULES_LIBS SLAPI_LIBS LIBSLAPI LIBSLAPITOOLS AUTH_LIBS SLAPD_SLP_LIBS SLAPD_GMP_LIBS SLAPD_SQL_LDFLAGS SLAPD_SQL_LIBS SLAPD_SQL_INCLUDES LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -1051,7 +1051,6 @@ SLAPD Overlay Options: --enable-denyop Deny Operation overlay no|yes|mod [no] --enable-dyngroup Dynamic Group overlay no|yes|mod [no] --enable-dynlist Dynamic List overlay no|yes|mod [no] - --enable-glue Backend Glue overlay no|yes|mod [yes] --enable-lastmod Last Modification overlay no|yes|mod [no] --enable-ppolicy Password Policy overlay no|yes|mod [no] --enable-proxycache Proxy Cache overlay no|yes|mod [no] @@ -3145,7 +3144,6 @@ Overlays="accesslog \ denyop \ dyngroup \ dynlist \ - glue \ lastmod \ ppolicy \ proxycache \ @@ -3280,30 +3278,6 @@ else fi; # end --enable-dynlist -# OpenLDAP --enable-glue - - # Check whether --enable-glue or --disable-glue was given. -if test "${enable_glue+set}" = set; then - enableval="$enable_glue" - - ol_arg=invalid - for ol_val in no yes mod ; do - if test "$enableval" = "$ol_val" ; then - ol_arg="$ol_val" - fi - done - if test "$ol_arg" = "invalid" ; then - { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-glue" >&5 -echo "$as_me: error: bad value $enableval for --enable-glue" >&2;} - { (exit 1); exit 1; }; } - fi - ol_enable_glue="$ol_arg" - -else - ol_enable_glue=${ol_enable_overlays:-yes} -fi; -# end --enable-glue - # OpenLDAP --enable-lastmod # Check whether --enable-lastmod or --disable-lastmod was given. @@ -3877,7 +3851,6 @@ BUILD_ACCESSLOG=no BUILD_DENYOP=no BUILD_DYNGROUP=no BUILD_DYNLIST=no -BUILD_GLUE=no BUILD_LASTMOD=no BUILD_PPOLICY=no BUILD_PROXYCACHE=no @@ -5712,7 +5685,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 5715 "configure"' > conftest.$ac_ext + echo '#line 5688 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -7692,11 +7665,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7695: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7668: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7699: \$? = $ac_status" >&5 + echo "$as_me:7672: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7954,11 +7927,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7957: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7930: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7961: \$? = $ac_status" >&5 + echo "$as_me:7934: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -8016,11 +7989,11 @@ else -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8019: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7992: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8023: \$? = $ac_status" >&5 + echo "$as_me:7996: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -10256,7 +10229,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <>confdefs.h <<_ACEOF -#define SLAPD_OVER_GLUE $MFLAG -_ACEOF - -fi - if test "$ol_enable_lastmod" != no ; then BUILD_LASTMOD=$ol_enable_lastmod if test "$ol_enable_lastmod" = mod ; then @@ -42822,7 +42779,6 @@ fi - # Check whether --with-xxinstall or --without-xxinstall was given. @@ -43573,7 +43529,6 @@ s,@BUILD_ACCESSLOG@,$BUILD_ACCESSLOG,;t t s,@BUILD_DENYOP@,$BUILD_DENYOP,;t t s,@BUILD_DYNGROUP@,$BUILD_DYNGROUP,;t t s,@BUILD_DYNLIST@,$BUILD_DYNLIST,;t t -s,@BUILD_GLUE@,$BUILD_GLUE,;t t s,@BUILD_LASTMOD@,$BUILD_LASTMOD,;t t s,@BUILD_PPOLICY@,$BUILD_PPOLICY,;t t s,@BUILD_PROXYCACHE@,$BUILD_PROXYCACHE,;t t diff --git a/configure.in b/configure.in index bf859e6c0b..d1ef9c248c 100644 --- a/configure.in +++ b/configure.in @@ -340,7 +340,6 @@ Overlays="accesslog \ denyop \ dyngroup \ dynlist \ - glue \ lastmod \ ppolicy \ proxycache \ @@ -365,8 +364,6 @@ OL_ARG_ENABLE(dyngroup,[ --enable-dyngroup Dynamic Group overlay], no, [no yes mod], ol_enable_overlays) OL_ARG_ENABLE(dynlist,[ --enable-dynlist Dynamic List overlay], no, [no yes mod], ol_enable_overlays) -OL_ARG_ENABLE(glue,[ --enable-glue Backend Glue overlay], - yes, [no yes mod], ol_enable_overlays) OL_ARG_ENABLE(lastmod,[ --enable-lastmod Last Modification overlay], no, [no yes mod], ol_enable_overlays) OL_ARG_ENABLE(ppolicy,[ --enable-ppolicy Password Policy overlay], @@ -617,7 +614,6 @@ BUILD_ACCESSLOG=no BUILD_DENYOP=no BUILD_DYNGROUP=no BUILD_DYNLIST=no -BUILD_GLUE=no BUILD_LASTMOD=no BUILD_PPOLICY=no BUILD_PROXYCACHE=no @@ -2907,18 +2903,6 @@ if test "$ol_enable_dynlist" != no ; then AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNLIST,$MFLAG,[define for Dynamic List overlay]) fi -if test "$ol_enable_glue" != no ; then - BUILD_GLUE=$ol_enable_glue - if test "$ol_enable_glue" = mod ; then - MFLAG=SLAPD_MOD_DYNAMIC - SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS glue.la" - else - MFLAG=SLAPD_MOD_STATIC - SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS glue.o" - fi - AC_DEFINE_UNQUOTED(SLAPD_OVER_GLUE,$MFLAG,[define for Backend Glue overlay]) -fi - if test "$ol_enable_lastmod" != no ; then BUILD_LASTMOD=$ol_enable_lastmod if test "$ol_enable_lastmod" = mod ; then @@ -3101,7 +3085,6 @@ dnl overlays AC_SUBST(BUILD_DENYOP) AC_SUBST(BUILD_DYNGROUP) AC_SUBST(BUILD_DYNLIST) - AC_SUBST(BUILD_GLUE) AC_SUBST(BUILD_LASTMOD) AC_SUBST(BUILD_PPOLICY) AC_SUBST(BUILD_PROXYCACHE) diff --git a/doc/man/man5/slapd.conf.5 b/doc/man/man5/slapd.conf.5 index 573d4f1af8..27e0be29be 100644 --- a/doc/man/man5/slapd.conf.5 +++ b/doc/man/man5/slapd.conf.5 @@ -2,7 +2,6 @@ .\" Copyright 1998-2005 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ -.SH NAME slapd.conf \- configuration file for slapd, the stand-alone LDAP daemon .SH SYNOPSIS ETCDIR/slapd.conf @@ -1392,6 +1391,36 @@ backend database. Multiple suffix lines can be given and at least one is required for each database definition. If the suffix of one database is "inside" that of another, the database with the inner suffix must come first in the configuration file. +.TP +.B subordinate [advertise] +Specify that the current backend database is a subordinate of another +backend database. A subordinate database may have only one suffix. This +option may be used to glue multiple databases into a single namingContext. +If the suffix of the current database is within the namingContext of a +superior database, searches against the superior database will be +propagated to the subordinate as well. All of the databases +associated with a single namingContext should have identical rootdns. +Behavior of other LDAP operations is unaffected by this setting. In +particular, it is not possible to use moddn to move an entry from +one subordinate to another subordinate within the namingContext. + +If the optional \fBadvertise\fP flag is supplied, the naming context of +this database is advertised in the root DSE. The default is to hide this +database context, so that only the superior context is visible. + +If the slap tools +.BR slapcat (8), +.BR slapadd (8), +or +.BR slapindex (8) +are used on the superior database, any glued subordinates that support +these tools are opened as well. + +Databases that are glued together should usually be configured with the +same indices (assuming they support indexing), even for attributes that +only exist in some of these databases. In general, all of the glued +databases should be configured as similarly as possible, since the intent +is to provide the appearance of a single directory. .HP .hy 0 .B syncrepl rid= @@ -1665,10 +1694,6 @@ It has no effect on any other operations. Dynamic List. This overlay allows expansion of dynamic groups and more. .TP -.B glue -Backend Glue. -This overlay glues multiple databases into a single namingContext. -.TP .B lastmod Last Modification. This overlay maintains a service entry in the database with the DN, @@ -1764,15 +1789,6 @@ lastmod off "OpenLDAP Administrator's Guide" contains a longer annotated example of a configuration file. The original ETCDIR/slapd.conf is another example. -.SH OBSOLETED DIRECTIVES -.TP -.B subordinate -This directive was used in OpenLDAP 2.1 and 2.2 to glue a database -with its superior. The same functionality is now provided by the -.B glue -overlay; see -.BR slapo-glue (5) -for details. .SH FILES .TP ETCDIR/slapd.conf @@ -1812,7 +1828,6 @@ Known overlays are documented in .BR slapo\-auditlog (5), .BR slapo\-chain (5), .BR slapo\-dynlist (5), -.BR slapo\-glue (5), .BR slapo\-lastmod (5), .BR slapo\-pcache (5), .BR slapo\-ppolicy (5), diff --git a/doc/man/man5/slapo-glue.5 b/doc/man/man5/slapo-glue.5 deleted file mode 100644 index 23d8f569c1..0000000000 --- a/doc/man/man5/slapo-glue.5 +++ /dev/null @@ -1,81 +0,0 @@ -.TH SLAPO-GLUE 5 "RELEASEDATE" "OpenLDAP LDVERSION" -.\" Copyright 2004-2005 The OpenLDAP Foundation All Rights Reserved. -.\" Copying restrictions apply. See COPYRIGHT/LICENSE. -.\" $OpenLDAP$ -.SH NAME -slapo-glue \- Backend Glue overlay -.SH SYNOPSIS -ETCDIR/slapd.conf -.SH DESCRIPTION -The Backend Glue overlay can be used to glue multiple databases into a -single namingContext. The overlay must be configured on the root database -of the context, and any other databases must be explicitly configured -as subordinates of the root database. All of the participating databases -should have identical rootdns. - -All search and write operations will be intercepted by this overlay. Searches -against the root database will be propagated to all the subordinates. Write -operations will pass unaltered to the relevant target database. - -Note that -any overlays on the root database configured before this overlay will fail -to execute. As such, the glue overlay should always be the first overlay -configured on the root database. -.SH CONFIGURATION -These -.B slapd.conf -options apply to the Backend Glue overlay. -They should appear after the -.B overlay -directive and before any subsequent -.B database -directive. -.TP -.B glue-sub [async] [advertise] -Specify the suffix of a database to attach as a subordinate to the root -database. The specified database must have already been configured. If the -optional \fBasync\fP keyword is supplied, searches against this database may -be spawned in a separate thread to run concurrently with other operations -(currently not implemented). If the optional \fBadvertise\fP flag -is supplied, the naming context is advertised in the root DSE. -.SH EXAMPLE -The following will cause a search from dc=example,dc=com to search -people as well, but it will not search services. -.LP -.RS -.nf -database bdb -suffix "ou=people,dc=example,dc=com" - -database bdb -suffix "ou=services,dc=example,dc=com" - -database bdb -suffix "dc=example,dc=com" -overlay glue -glue-sub "ou=people,dc=example,dc=com" -.fi -.RE -.SH NOTES -Databases that are glued together should usually be configured with -the same indexes, even for attributes that only exist in some of -these databases. -A search for an attribute which is only indexed in some of the glued -databases must otherwise examine each entry in the search scope in the -other databases, looking for the attribute. - -If the extra indexes assist searches one would prefer not to -support, these can be disabled with access controls in some of the -databases. -E.g.: -.RS -access to attrs=cn by * =rcxd -.RE -See -.BR slapd.access (5). -.SH FILES -.TP -ETCDIR/slapd.conf -default slapd configuration file -.SH SEE ALSO -.BR slapd.conf (5). diff --git a/doc/man/man8/slapadd.8 b/doc/man/man8/slapadd.8 index 03412881d7..818f77cbe9 100644 --- a/doc/man/man8/slapadd.8 +++ b/doc/man/man8/slapadd.8 @@ -26,9 +26,9 @@ database. It opens the given database determined by the database number or suffix and adds entries corresponding to the provided LDIF to the database. -Subordinate databases glued with -.BR slapo-glue (5) -are also updated. +Databases configured as +.B subordinate +of this one are also updated. The LDIF input is read from standard input or the specified file. .LP As diff --git a/doc/man/man8/slapcat.8 b/doc/man/man8/slapcat.8 index 70954fe663..03a0aa5d4a 100644 --- a/doc/man/man8/slapcat.8 +++ b/doc/man/man8/slapcat.8 @@ -27,9 +27,9 @@ 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. -Subordinate databases glued with -.BR slapo-glue (5) -are also output. +Databases configured as +.B subordinate +of this one are also output. .LP The LDIF generated by this tool is suitable for use with .BR slapadd (8). diff --git a/doc/man/man8/slapindex.8 b/doc/man/man8/slapindex.8 index 63f7d1a17d..f99d09d3fb 100644 --- a/doc/man/man8/slapindex.8 +++ b/doc/man/man8/slapindex.8 @@ -24,9 +24,9 @@ indices based upon the current contents of a database. It opens the given database determined by the database number or suffix and updates the indices for all values of all attributes of all entries. -Subordinate databases glued with -.BR slapo-glue (5) -are also re-indexed. +Databases configured as +.B subordinate +of this one are also re-indexed. .SH OPTIONS .TP .B \-v diff --git a/include/portable.hin b/include/portable.hin index 1a54e8c3e4..e339b15d12 100644 --- a/include/portable.hin +++ b/include/portable.hin @@ -984,9 +984,6 @@ /* define for Dynamic List overlay */ #undef SLAPD_OVER_DYNLIST -/* define for Backend Glue overlay */ -#undef SLAPD_OVER_GLUE - /* define for Last Modification overlay */ #undef SLAPD_OVER_LASTMOD diff --git a/servers/slapd/Makefile.in b/servers/slapd/Makefile.in index f774b1322c..46ee8dac69 100644 --- a/servers/slapd/Makefile.in +++ b/servers/slapd/Makefile.in @@ -35,7 +35,7 @@ SRCS = main.c globals.c bconfig.c config.c daemon.c \ oidm.c starttls.c index.c sets.c referral.c root_dse.c \ sasl.c module.c mra.c mods.c sl_malloc.c zn_malloc.c limits.c \ operational.c matchedValues.c cancel.c syncrepl.c \ - backover.c ctxcsn.c ldapsync.c frontend.c \ + backglue.c backover.c ctxcsn.c ldapsync.c frontend.c \ slapadd.c slapcat.c slapcommon.c slapdn.c slapindex.c \ slappasswd.c slaptest.c slapauth.c slapacl.c component.c \ aci.c \ @@ -53,7 +53,7 @@ OBJS = main.o globals.o bconfig.o config.o daemon.o \ oidm.o starttls.o index.o sets.o referral.o root_dse.o \ sasl.o module.o mra.o mods.o sl_malloc.o zn_malloc.o limits.o \ operational.o matchedValues.o cancel.o syncrepl.o \ - backover.o ctxcsn.o ldapsync.o frontend.o \ + backglue.o backover.o ctxcsn.o ldapsync.o frontend.o \ slapadd.o slapcat.o slapcommon.o slapdn.o slapindex.o \ slappasswd.o slaptest.o slapauth.o slapacl.o component.o \ aci.o \ diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c index e7417c7faa..36af08c8e5 100644 --- a/servers/slapd/back-bdb/init.c +++ b/servers/slapd/back-bdb/init.c @@ -312,8 +312,10 @@ bdb_db_open( BackendDB *be ) open_env = 0; } else { /* Create a new env that can take the desired settings */ - bdb->bi_dbenv->close( bdb->bi_dbenv, 0 ); - bdb->bi_dbenv = NULL; + if ( bdb->bi_dbenv != NULL ) { + bdb->bi_dbenv->close( bdb->bi_dbenv, 0 ); + bdb->bi_dbenv = NULL; + } rc = db_env_create( &bdb->bi_dbenv, 0 ); if( rc != 0 ) { Debug( LDAP_DEBUG_ANY, diff --git a/servers/slapd/overlays/glue.c b/servers/slapd/backglue.c similarity index 84% rename from servers/slapd/overlays/glue.c rename to servers/slapd/backglue.c index 52f3034ceb..936d617fde 100644 --- a/servers/slapd/overlays/glue.c +++ b/servers/slapd/backglue.c @@ -1,4 +1,4 @@ -/* glue.c - backend glue overlay */ +/* backglue.c - backend glue */ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * @@ -28,8 +28,6 @@ #include "portable.h" -#ifdef SLAPD_OVER_GLUE - #include #include @@ -41,7 +39,6 @@ typedef struct gluenode { BackendDB *gn_be; struct berval gn_pdn; - int gn_async; } gluenode; typedef struct glueinfo { @@ -746,6 +743,8 @@ glue_db_init( oi->oi_bi.bi_tool_id2entry_get = 0; oi->oi_bi.bi_tool_entry_modify = 0; + SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_GLUE_INSTANCE; + return 0; } @@ -772,105 +771,172 @@ glue_db_close( return 0; } -static int -glue_db_config( - BackendDB *be, - const char *fname, - int lineno, - int argc, - char **argv -) +int +glue_sub_del( BackendDB *b0 ) { - slap_overinst *on = (slap_overinst *)be->bd_info; - glueinfo *gi = (glueinfo *)on->on_bi.bi_private; + BackendDB *be; + int rc = 0; - /* redundant; could be applied just once */ - SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_GLUE_INSTANCE; + /* Find the top backend for this subordinate */ + be = b0; + while ( be=LDAP_STAILQ_NEXT( be, be_next )) { + slap_overinfo *oi; + slap_overinst *on; + glueinfo *gi; + int i; + + if ( SLAP_GLUE_SUBORDINATE( be )) + continue; + if ( !SLAP_GLUE_INSTANCE( be )) + continue; + if ( !dnIsSuffix( &b0->be_nsuffix[0], &be->be_nsuffix[0] )) + continue; + + /* OK, got the right backend, find the overlay */ + oi = (slap_overinfo *)be->bd_info; + for ( on=oi->oi_list; on; on=on->on_next ) { + if ( on->on_bi.bi_type == glue.on_bi.bi_type ) + break; + } + assert( on != NULL ); + gi = on->on_bi.bi_private; + for ( i=0; i < gi->gi_nodes; i++ ) { + if ( gi->gi_n[i].gn_be == b0 ) { + int j; - if ( strcasecmp( argv[0], "glue-sub" ) == 0 ) { - int i, async = 0, advertise = 0; - BackendDB *b2; - struct berval bv, dn = BER_BVNULL; + for (j=i+1; j < gi->gi_nodes; j++) + gi->gi_n[j-1] = gi->gi_n[j]; - if ( argc < 2 ) { - fprintf( stderr, "%s: line %d: too few arguments in " - "\"glue-sub [async] [advertise]\"\n", fname, lineno ); - return -1; + gi->gi_nodes--; + } } - for ( i = 2; i < argc; i++ ) { - if ( strcasecmp( argv[i], "async" ) == 0 ) { - async = 1; + } + if ( be == NULL ) + rc = LDAP_NO_SUCH_OBJECT; - } else if ( strcasecmp( argv[i], "advertise" ) == 0 ) { - advertise = 1; + return rc; +} - } else { - fprintf( stderr, "%s: line %d: unrecognized option " - "\"%s\" ignored.\n", fname, lineno, argv[i] ); +typedef struct glue_Addrec { + struct glue_Addrec *ga_next; + BackendDB *ga_be; +} glue_Addrec; + +/* List of added subordinates */ +static glue_Addrec *ga_list; + +/* Attach all the subordinate backends to their superior */ +static int +glue_sub_attach() +{ + glue_Addrec *ga, *gnext = NULL; + int rc = 0; + + /* For all the subordinate backends */ + for ( ga=ga_list; ga != NULL; ga = gnext ) { + BackendDB *be; + + gnext = ga->ga_next; + + /* Find the top backend for this subordinate */ + be = ga->ga_be; + while ( be=LDAP_STAILQ_NEXT( be, be_next )) { + slap_overinfo *oi; + slap_overinst *on; + glueinfo *gi; + + if ( SLAP_GLUE_SUBORDINATE( be )) + continue; + if ( !dnIsSuffix( &ga->ga_be->be_nsuffix[0], &be->be_nsuffix[0] )) + continue; + + /* If it's not already configured, set up the overlay */ + if ( !SLAP_GLUE_INSTANCE( be )) { + rc = overlay_config( be, glue.on_bi.bi_type ); + if ( rc ) + break; } + /* Find the overlay instance */ + oi = (slap_overinfo *)be->bd_info; + for ( on=oi->oi_list; on; on=on->on_next ) { + if ( on->on_bi.bi_type == glue.on_bi.bi_type ) + break; + } + assert( on != NULL ); + gi = on->on_bi.bi_private; + gi = (glueinfo *)ch_realloc( gi, sizeof(glueinfo) + + gi->gi_nodes * sizeof(gluenode)); + gi->gi_n[gi->gi_nodes].gn_be = ga->ga_be; + dnParent( &ga->ga_be->be_nsuffix[0], + &gi->gi_n[gi->gi_nodes].gn_pdn ); + gi->gi_nodes++; + on->on_bi.bi_private = gi; + break; } - ber_str2bv( argv[1], 0, 0, &bv ); - if ( dnNormalize( 0, NULL, NULL, &bv, &dn, NULL )) { - fprintf( stderr, "invalid suffixDN \"%s\"\n", argv[1] ); - return -1; - } - b2 = select_backend( &dn, 0, 1 ); - ber_memfree( dn.bv_val ); - if ( !b2 ) { - fprintf( stderr, "%s: line %d: unknown suffix \"%s\"\n", - fname, lineno, argv[1] ); - return -1; - } - if ( SLAP_GLUE_INSTANCE( b2 )) { - fprintf( stderr, "%s: line %d: backend for %s is already glued; " - "only one glue overlay is allowed per tree.\n", - fname, lineno, argv[1] ); - return -1; - } - SLAP_DBFLAGS(b2) |= SLAP_DBFLAG_GLUE_SUBORDINATE; - if ( advertise ) { - SLAP_DBFLAGS(b2) |= SLAP_DBFLAG_GLUE_ADVERTISE; + if ( !be ) { + Debug( LDAP_DEBUG_ANY, "glue: no superior found for sub %s!\n", + ga->ga_be->be_suffix[0].bv_val, 0, 0 ); + rc = LDAP_NO_SUCH_OBJECT; } - gi = (glueinfo *)ch_realloc( gi, sizeof(glueinfo) + - gi->gi_nodes * sizeof(gluenode)); - gi->gi_n[gi->gi_nodes].gn_be = b2; - dnParent( &b2->be_nsuffix[0], &gi->gi_n[gi->gi_nodes].gn_pdn ); - gi->gi_n[gi->gi_nodes].gn_async = async; - gi->gi_nodes++; - on->on_bi.bi_private = gi; - return 0; + ch_free( ga ); + if ( rc ) break; } - return SLAP_CONF_UNKNOWN; + + ga_list = gnext; + + return rc; } int -glue_init() +glue_sub_add( BackendDB *be, int advert, int online ) { + glue_Addrec *ga; + int rc = 0; + + SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_GLUE_SUBORDINATE; + if ( advert ) + SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_GLUE_ADVERTISE; + + ga = ch_malloc( sizeof( glue_Addrec )); + ga->ga_next = NULL; + ga->ga_be = be; + if ( ga_list ) { + glue_Addrec *g2 = ga_list; + + for ( ; g2 && g2->ga_next; g2=g2->ga_next ); + g2->ga_next = ga; + } else { + ga_list = ga; + } + + if ( online ) + rc = glue_sub_attach(); + + return rc; +} + +int +glue_sub_init() +{ + int rc; + glue.on_bi.bi_type = "glue"; glue.on_bi.bi_db_init = glue_db_init; - glue.on_bi.bi_db_config = glue_db_config; glue.on_bi.bi_db_close = glue_db_close; glue.on_bi.bi_db_destroy = glue_db_destroy; glue.on_bi.bi_op_search = glue_op_search; glue.on_bi.bi_op_modify = glue_op_func; glue.on_bi.bi_op_modrdn = glue_op_func; - glue.on_bi.bi_op_add = glue_op_func; + glue.on_bi.bi_op_add = glue_op_func; glue.on_bi.bi_op_delete = glue_op_func; glue.on_bi.bi_chk_referrals = glue_chk_referrals; glue.on_bi.bi_chk_controls = glue_chk_controls; - return overlay_register( &glue ); -} + rc = overlay_register( &glue ); + if ( rc ) return rc; -#if SLAPD_OVER_GLUE == SLAPD_MOD_DYNAMIC -int -init_module( int argc, char *argv[] ) -{ - return glue_init(); + return glue_sub_attach(); } -#endif /* SLAPD_OVER_GLUE == SLAPD_MOD_DYNAMIC */ - -#endif /* defined(SLAPD_OVER_GLUE */ diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 4b47318626..5718714c27 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -105,6 +105,7 @@ static ConfigDriver config_schema_dn; static ConfigDriver config_sizelimit; static ConfigDriver config_timelimit; static ConfigDriver config_overlay; +static ConfigDriver config_subordinate; static ConfigDriver config_suffix; static ConfigDriver config_rootdn; static ConfigDriver config_rootpw; @@ -481,6 +482,9 @@ static ConfigTable config_back_cf_table[] = { #endif "( OLcfgGlAt:63 NAME 'olcSrvtab' " "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL }, + { "subordinate", "[advertise]", 1, 2, 0, ARG_DB|ARG_MAGIC, + &config_subordinate, "( OLcfgDbAt:0.15 NAME 'olcSubordinate' " + "SYNTAX OMsDirectoryString )", NULL, NULL }, { "suffix", "suffix", 2, 2, 0, ARG_DB|ARG_DN|ARG_QUOTE|ARG_MAGIC, &config_suffix, "( OLcfgDbAt:0.10 NAME 'olcSuffix' " "SYNTAX OMsDN )", NULL, NULL }, @@ -634,7 +638,7 @@ static ConfigOCs cf_ocs[] = { "DESC 'OpenLDAP Database-specific options' " "SUP olcConfig STRUCTURAL " "MUST olcDatabase " - "MAY ( olcSuffix $ olcAccess $ olcLastMod $ olcLimits $ " + "MAY ( olcSuffix $ olcSubordinate $ olcAccess $ olcLastMod $ olcLimits $ " "olcMaxDerefDepth $ olcPlugin $ olcReadOnly $ olcReplica $ " "olcReplogFile $ olcRequires $ olcRestrict $ olcRootDN $ olcRootPW $ " "olcSchemaDN $ olcSecurity $ olcSizeLimit $ olcSyncrepl $ " @@ -1560,6 +1564,42 @@ config_overlay(ConfigArgs *c) { return(0); } +static int +config_subordinate(ConfigArgs *c) +{ + int rc = 1; + int advertise; + + switch( c->op ) { + case SLAP_CONFIG_EMIT: + if ( SLAP_GLUE_SUBORDINATE( c->be )) { + struct berval bv; + + bv.bv_val = SLAP_GLUE_ADVERTISE( c->be ) ? "advertise" : "TRUE"; + bv.bv_len = SLAP_GLUE_ADVERTISE( c->be ) ? STRLENOF("advertise") : + STRLENOF("TRUE"); + + value_add_one( &c->rvalue_vals, &bv ); + rc = 0; + } + break; + case LDAP_MOD_DELETE: + if ( !c->line || strcasecmp( c->line, "advertise" )) { + glue_sub_del( c->be ); + } else { + SLAP_DBFLAGS( c->be ) &= ~SLAP_DBFLAG_GLUE_ADVERTISE; + } + rc = 0; + break; + case LDAP_MOD_ADD: + case SLAP_CONFIG_ADD: + advertise = ( c->argc == 2 && !strcasecmp( c->argv[1], "advertise" )); + rc = glue_sub_add( c->be, advertise, CONFIG_ONLINE_ADD( c )); + break; + } + return rc; +} + static int config_suffix(ConfigArgs *c) { diff --git a/servers/slapd/main.c b/servers/slapd/main.c index 03b264513d..81fbed49f4 100644 --- a/servers/slapd/main.c +++ b/servers/slapd/main.c @@ -631,6 +631,14 @@ unhandled_option:; } } + if ( glue_sub_init( ) != 0 ) { + Debug( LDAP_DEBUG_ANY, + "subordinate config error\n", + 0, 0, 0 ); + + goto destroy; + } + if ( slap_schema_check( ) != 0 ) { Debug( LDAP_DEBUG_ANY, "schema prep error\n", diff --git a/servers/slapd/overlays/Makefile.in b/servers/slapd/overlays/Makefile.in index 59547e22fe..86c8f043ca 100644 --- a/servers/slapd/overlays/Makefile.in +++ b/servers/slapd/overlays/Makefile.in @@ -18,7 +18,6 @@ SRCS = overlays.c \ denyop.c \ dyngroup.c \ dynlist.c \ - glue.c \ lastmod.c \ pcache.c \ ppolicy.c \ @@ -68,9 +67,6 @@ dyngroup.la : dyngroup.lo dynlist.la : dynlist.lo $(LTLINK_MOD) -module -o $@ dynlist.lo version.lo $(LINK_LIBS) -glue.la : glue.lo - $(LTLINK_MOD) -module -o $@ glue.lo version.lo $(LINK_LIBS) - lastmod.la : lastmod.lo $(LTLINK_MOD) -module -o $@ lastmod.lo version.lo $(LINK_LIBS) diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index 899d13dfcc..d79433ca20 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -389,6 +389,14 @@ LDAP_SLAPD_F (int) backend_operational LDAP_P(( LDAP_SLAPD_V(BackendInfo) slap_binfo[]; +/* + * backglue.c + */ + +LDAP_SLAPD_F (int) glue_sub_init( void ); +LDAP_SLAPD_F (int) glue_sub_add( BackendDB *be, int advert, int online ); +LDAP_SLAPD_F (int) glue_sub_del( BackendDB *be ); + /* * backover.c */ diff --git a/servers/slapd/slapcommon.c b/servers/slapd/slapcommon.c index a035874ee1..bbdb5bb3e3 100644 --- a/servers/slapd/slapcommon.c +++ b/servers/slapd/slapcommon.c @@ -424,6 +424,13 @@ slap_tool_init( break; } + rc = glue_sub_init(); + + if ( rc != 0 ) { + fprintf( stderr, "%s: subordinate configuration error\n", progname ); + exit( EXIT_FAILURE ); + } + rc = slap_schema_check(); if ( rc != 0 ) { diff --git a/tests/data/slapd-glue-ldap.conf b/tests/data/slapd-glue-ldap.conf index e8a3f3e483..32497bf9db 100644 --- a/tests/data/slapd-glue-ldap.conf +++ b/tests/data/slapd-glue-ldap.conf @@ -32,8 +32,6 @@ argsfile ./test-db/slapd.m.args #metamod#moduleload back_meta.la #monitormod#modulepath ../servers/slapd/back-monitor/ #monitormod#moduleload back_monitor.la -#gluemod#modulepath ../servers/slapd/overlays/ -#gluemod#moduleload glue.la #rwmmod#modulepath ../servers/slapd/overlays/ #rwmmod#moduleload rwm.la @@ -47,6 +45,7 @@ rwm-suffixmassage "o=Example,c=US" "dc=example,dc=com" # remote database ldap suffix "ou=Meta,dc=example,dc=com" +subordinate uri "@URI2@" rootdn "cn=Manager,dc=example,dc=com" chase-referrals no @@ -71,8 +70,4 @@ idassert-bind bindmethod=simple flags=non-prescriptive idassert-authzfrom "dn.exact:cn=Manager,dc=example,dc=com" - -overlay glue -glue-sub "ou=Meta,dc=example,dc=com" - #monitor#database monitor diff --git a/tests/data/slapd-glue-syncrepl1.conf b/tests/data/slapd-glue-syncrepl1.conf index 4f10f84b56..ef9ebf485b 100644 --- a/tests/data/slapd-glue-syncrepl1.conf +++ b/tests/data/slapd-glue-syncrepl1.conf @@ -26,7 +26,6 @@ argsfile ./testrun/slapd.1.args #mod#moduleload back_@BACKEND@.la #monitormod#modulepath ../servers/slapd/back-monitor/ #monitormod#moduleload back_monitor.la -#gluemod#moduleload ../servers/slapd/overlays/glue.la #syncprovmod#moduleload ../servers/slapd/overlays/syncprov.la ####################################################################### @@ -35,6 +34,7 @@ argsfile ./testrun/slapd.1.args database @BACKEND@ suffix "ou=Information Technology Division,ou=People,dc=example,dc=com" +subordinate directory ./testrun/db.1.a rootdn "cn=Manager 1,dc=example,dc=com" #bdb#index objectclass eq @@ -54,6 +54,7 @@ overlay syncprov database @BACKEND@ suffix "ou=Groups,dc=example,dc=com" +subordinate directory ./testrun/db.1.b rootdn "cn=Manager 1,dc=example,dc=com" #bdb#index objectclass eq @@ -102,8 +103,5 @@ rootpw secret #ldbm#dbnosync #ldbm#dbnolocking #overlay syncprov -overlay glue -glue-sub "ou=Information Technology Division,ou=People,dc=example,dc=com" -glue-sub "ou=Groups,dc=example,dc=com" #monitor#database monitor diff --git a/tests/data/slapd-glue-syncrepl2.conf b/tests/data/slapd-glue-syncrepl2.conf index 19ddc8d5d9..2147cc1631 100644 --- a/tests/data/slapd-glue-syncrepl2.conf +++ b/tests/data/slapd-glue-syncrepl2.conf @@ -26,7 +26,6 @@ argsfile ./testrun/slapd.2.args #mod#moduleload back_@BACKEND@.la #monitormod#modulepath ../servers/slapd/back-monitor/ #monitormod#moduleload back_monitor.la -#gluemod#moduleload ../servers/slapd/overlays/glue.la #syncprovmod#moduleload ../servers/slapd/overlays/syncprov.la ####################################################################### @@ -35,6 +34,7 @@ argsfile ./testrun/slapd.2.args database @BACKEND@ suffix "ou=Information Technology Division,ou=People,dc=example,dc=com" +subordinate directory ./testrun/db.2.a rootdn "cn=Manager 2,dc=example,dc=com" #bdb#index objectclass eq @@ -67,6 +67,7 @@ updateref @URI1@ database @BACKEND@ suffix "ou=Groups,dc=example,dc=com" +subordinate directory ./testrun/db.2.b rootdn "cn=Manager 2,dc=example,dc=com" #bdb#index objectclass eq @@ -102,8 +103,5 @@ rootpw secret #ldbm#dbnosync #ldbm#dbnolocking #overlay syncprov -overlay glue -glue-sub "ou=Information Technology Division,ou=People,dc=example,dc=com" -glue-sub "ou=Groups,dc=example,dc=com" #monitor#database monitor diff --git a/tests/data/slapd-glue.conf b/tests/data/slapd-glue.conf index 69e9178c56..4f9d1c2a95 100644 --- a/tests/data/slapd-glue.conf +++ b/tests/data/slapd-glue.conf @@ -26,7 +26,6 @@ argsfile ./testrun/slapd.1.args #mod#moduleload back_@BACKEND@.la #monitormod#modulepath ../servers/slapd/back-monitor/ #monitormod#moduleload back_monitor.la -#gluemod#moduleload ../servers/slapd/overlays/glue.la ####################################################################### # database definitions @@ -34,6 +33,7 @@ argsfile ./testrun/slapd.1.args database @BACKEND@ suffix "ou=Information Technology Division,ou=People,dc=example,dc=com" +subordinate directory ./testrun/db.1.a rootdn "cn=Manager, dc=example,dc=com" #bdb#index objectclass eq @@ -50,6 +50,7 @@ rootdn "cn=Manager, dc=example,dc=com" database @BACKEND@ suffix "ou=Groups,dc=example,dc=com" +subordinate directory ./testrun/db.1.b rootdn "cn=Manager, dc=example,dc=com" #bdb#index objectclass eq @@ -80,8 +81,5 @@ rootpw secret #ldbm#index cn,sn pres,eq,sub,subany #ldbm#dbnosync #ldbm#dbnolocking -overlay glue -glue-sub "ou=Information Technology Division,ou=People,dc=example,dc=com" -glue-sub "ou=Groups,dc=example,dc=com" #monitor#database monitor diff --git a/tests/data/slapd-ldapglue.conf b/tests/data/slapd-ldapglue.conf index e235aed4d8..9f0bfd3dc0 100644 --- a/tests/data/slapd-ldapglue.conf +++ b/tests/data/slapd-ldapglue.conf @@ -29,7 +29,6 @@ argsfile ./testrun/slapd.1.args #ldapmod#moduleload back_ldap.la #monitormod#modulepath ../servers/slapd/back-monitor/ #monitormod#moduleload back_monitor.la -#gluemod#moduleload ../servers/slapd/overlays/glue.la ####################################################################### # database definitions @@ -49,22 +48,24 @@ access to attr=userpassword access to * by * read -# people branch -database ldap -suffix "ou=People,dc=example,dc=com" -uri "@URI2@" -# FIXME: doesn't work with authz=native -#sasl#idassert-bind bindmethod=sasl authcid=proxy credentials=proxy @SASL_MECH@ mode=self -#nosasl#idassert-bind bindmethod=simple binddn="uid=proxy,ou=People,dc=example,dc=com" credentials=proxy mode=self - # groups branch database ldap suffix "ou=Groups,dc=example,dc=com" +subordinate uri "@URI3@" # FIXME: doesn't work with authz=native #sasl#idassert-bind bindmethod=sasl authcid=proxy credentials=proxy @SASL_MECH@ mode=self #nosasl#idassert-bind bindmethod=simple binddn="uid=proxy,ou=Groups,dc=example,dc=com" credentials=proxy mode=self +# people branch +database ldap +suffix "ou=People,dc=example,dc=com" +subordinate +uri "@URI2@" +# FIXME: doesn't work with authz=native +#sasl#idassert-bind bindmethod=sasl authcid=proxy credentials=proxy @SASL_MECH@ mode=self +#nosasl#idassert-bind bindmethod=simple binddn="uid=proxy,ou=People,dc=example,dc=com" credentials=proxy mode=self + # root database @BACKEND@ suffix "dc=example,dc=com" @@ -77,8 +78,5 @@ rootpw secret #hdb#index cn,sn,uid pres,eq,sub #ldbm#index objectClass eq #ldbm#index cn,sn,uid pres,eq,sub -overlay glue -glue-sub "ou=groups,dc=example,dc=com" -glue-sub "ou=people,dc=example,dc=com" #monitor#database monitor diff --git a/tests/scripts/defines.sh b/tests/scripts/defines.sh index c504790be9..a26622a231 100755 --- a/tests/scripts/defines.sh +++ b/tests/scripts/defines.sh @@ -20,7 +20,6 @@ BACKRELAY=${AC_relay-relayno} BACKSQL=${AC_sql-sqlno} RDBMS=${SLAPD_USE_SQL-rdbmsno} RDBMSWRITE=${SLAPD_USE_SQLWRITE-no} -GLUE=${AC_glue-glueno} PROXYCACHE=${AC_pcache-pcacheno} PPOLICY=${AC_ppolicy-ppolicyno} REFINT=${AC_refint-refintno} diff --git a/tests/scripts/test011-glue-slapadd b/tests/scripts/test011-glue-slapadd index df6afa1d58..f87fe6df77 100755 --- a/tests/scripts/test011-glue-slapadd +++ b/tests/scripts/test011-glue-slapadd @@ -16,11 +16,6 @@ echo "running defines.sh" . $SRCDIR/scripts/defines.sh -if test $GLUE = glueno; then - echo "Backend glue overlay not available, test skipped" - exit 0 -fi - mkdir -p $TESTDIR $DBDIR1A $DBDIR1B $DBDIR1C echo "Running slapadd to build glued slapd databases..." diff --git a/tests/scripts/test012-glue-populate b/tests/scripts/test012-glue-populate index 085a005b4f..c45feec9d6 100755 --- a/tests/scripts/test012-glue-populate +++ b/tests/scripts/test012-glue-populate @@ -16,11 +16,6 @@ echo "running defines.sh" . $SRCDIR/scripts/defines.sh -if test $GLUE = glueno; then - echo "Backend glue overlay not available, test skipped" - exit 0 -fi - mkdir -p $TESTDIR $DBDIR1A $DBDIR1B $DBDIR1C echo "Starting slapd on TCP/IP port $PORT..." diff --git a/tests/scripts/test029-ldapglue b/tests/scripts/test029-ldapglue index 572e7e8199..4701e1897e 100755 --- a/tests/scripts/test029-ldapglue +++ b/tests/scripts/test029-ldapglue @@ -27,11 +27,6 @@ if test $BACKLDAP = "ldapno" ; then exit 0 fi -if test $GLUE = "glueno" ; then - echo "glue overlay not available, test skipped" - exit 0 -fi - if test $WITH_SASL = "yes" ; then if test $USE_SASL != "no" ; then if test $USE_SASL = "yes" ; then diff --git a/tests/scripts/test033-glue-syncrepl b/tests/scripts/test033-glue-syncrepl index 75b876cf16..1ffb611d6b 100755 --- a/tests/scripts/test033-glue-syncrepl +++ b/tests/scripts/test033-glue-syncrepl @@ -15,11 +15,6 @@ echo "running defines.sh" . $SRCDIR/scripts/defines.sh -if test $GLUE = glueno; then - echo "Backend glue overlay not available, test skipped" - exit 0 -fi - mkdir -p $TESTDIR $DBDIR1A $DBDIR1B $DBDIR1C echo "Running slapadd to build glued slapd databases..." diff --git a/tests/scripts/test039-glue-ldap-concurrency b/tests/scripts/test039-glue-ldap-concurrency index d0d89afc30..87cabe33d8 100755 --- a/tests/scripts/test039-glue-ldap-concurrency +++ b/tests/scripts/test039-glue-ldap-concurrency @@ -23,11 +23,6 @@ if test $BACKLDAP = ldapno ; then exit 0 fi -if test $GLUE = "glueno" ; then - echo "glue overlay not available, test skipped" - exit 0 -fi - if test $RWM = rwmno ; then echo "rwm (rewrite/remap) overlay not available, test skipped" exit 0 -- 2.39.5