Commit 1dff9049 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Ready for release

parent aeade1fb
......@@ -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)
......
#! /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 <unistd.h>
#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 <<EOF
#line 10259 "configure"
#line 10232 "configure"
#include "confdefs.h"
 
#if HAVE_DLFCN_H
......@@ -10354,7 +10327,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 10357 "configure"
#line 10330 "configure"
#include "confdefs.h"
 
#if HAVE_DLFCN_H
......@@ -42535,22 +42508,6 @@ _ACEOF
 
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
cat >>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
......@@ -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)
......
......@@ -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=<replica ID>
......@@ -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),
......
.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 <suffix-DN> [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).
......@@ -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
......
......@@ -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).
......
......@@ -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
......
......@@ -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
......
......@@ -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 \
......
......@@ -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,
......
/* glue.c - backend glue overlay */
/* backglue.c - backend glue */
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
......@@ -28,8 +28,6 @@
#include "portable.h"
#ifdef SLAPD_OVER_GLUE
#include <stdio.h>
#include <ac/string.h>
......@@ -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 <suffixDN> [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;