Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
David Barchiesi
OpenLDAP
Commits
33962301
Commit
33962301
authored
Dec 14, 2018
by
Quanah Gibson-Mount
Browse files
Remove test058 from RE.
Syncrepl does not currently support this configuration and the test only leads to false failures
parent
07d02d0d
Changes
1
Hide whitespace changes
Inline
Side-by-side
tests/scripts/test058-syncrepl-asymmetric
deleted
100755 → 0
View file @
07d02d0d
#! /bin/sh
# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
## Copyright 1998-2018 The OpenLDAP Foundation.
## 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 in the file LICENSE in the
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
# This script tests a configuration scenario as described in these URLs:
#
# http://www.openldap.org/lists/openldap-devel/200806/msg00041.html
# http://www.openldap.org/lists/openldap-devel/200806/msg00054.html
#
# Search for "TEST:" to find each major test this script performs.
# The configuration here consist of 3 "sites", each with a "master" and
# a "search" server. One of the sites is the "central", the other two
# are called "site1" and "site2".
# The following notations are used in variable names below to identify
# these servers, the first number defines the $URL# and $PORT# variable
# that server uses:
#
# 1: SMC_* Site Master Central
# 2: SM1_* Site Master 1
# 3: SM2_* Site Master 2
# 4: SSC_* Search Site Central
# 5: SS1_* Search Site 1
# 6: SS2_* Search Site 2
# The master servers all have a set of subordinate databases glued below
# the same suffix database. Each of the masters are the master for at
# least one of these subordinate databases, but there are never more
# than one master for any single database. I.e, this is neither a
# traditional single-master configuration, nor what most people think
# of as multi-master, but more what can be called multiple masters.
# The central master replicates to the two other masters, and receives
# updates from them of the backends they are the master for. There is
# no direct connection between the other two master servers. All of the
# masters have the syncprov overlay configured on the glue database.
# The search servers replicates from the master server at their site.
# They all have a single database with the glue suffix, but their
# database configuration doesn't matter much in this test. (This
# database layout was originally created before gluing was introduced
# in OpenLDAP, which is why the search servers doesn't use it).
# The primary objective for gluing the backend databases is not to make
# them look like one huge database but to create a common search suffix
# for the clients. Searching is mostly done on the search servers, only
# updates are done on the masters.
# It varies which backends that are replicated to which server (hence
# the name asymmetric in this test). Access control rules on the
# masters are used to control what their consumers receives. The table
# below gives an overview of which backend (the columns) that are
# replicated to which server (the rows). A "M" defines the master for
# the backend, a "S" is a slave, and "-" means it is not replicated
# there. Oh, the table probably looks wrong without the 4-position
# tab-stops OpenLDAP uses...
# glue ou1 ou2 sm1ou1 sm1ou2 sm2ou1 sm2ou2
# smc M M M S S S -
# sm1 S S - M M - -
# sm2 S S S S - M M
# ssc S S - - S - -
# ss1 S S - S S - -
# ss2 S S S - - S S
# On the central master syncrepl is configured on the subordinate
# databases, as it varies which backends that exists on its providers.
# Had it been used on the glue database then syncrepl would have removed
# the backends replicated from site1 but not present on site2 when it
# synchronizes with site2 (and vice versa).
#
# All the other servers uses syncrepl on the glue database, since
# replicating more than one subordinate database from the same master
# creates (as of the writing of this test script) race conditions that
# causes the replication to fail, as the race tests at the end shows.
# The databases controlled by syncrepl all have $UPDATEDN as their
# RootDN, while the master servers has other RootDN values for the
# backends they are the backend for them self. This violates the current
# guidelines for gluing databases, which states that the same rootdn
# should be used on all of them. Unfortunately, this cannot be done on
# site masters 1 and 2. The backends they manage locally are either not
# present on the central master, or when so they are not replicated back
# to their source, which causes syncrepl to try to remove the content of
# these backends when it synchronizes with the central master. The
# differing rootdn values used on the backends controlled by syncrepl
# and those managed locally prevents it from succeeding in this. As
# noted above, moving syncrepl to the subordinate databases is currently
# not an option since that creates race conditions.
# The binddn values used in the syncrepl configurations are chosen to
# make the configuration and access control rules easiest to set up. It
# occasionally uses a DN that is also used as a RootDN. This is not a
# good practice and should not be taken as an example for real
# configurations!
# This script will print the content of any invalid contextCSN values it
# detects if the environment variable CSN_VERBOSE is non-empty. The
# environment variable RACE_TESTS can be set to the number of race test
# iterations the script should perform.
if
test
"
$BACKEND
"
=
ldif
;
then
echo
"
$BACKEND
backend does not support access controls, test skipped"
exit
0
fi
#echo "Test 058 is currently disabled"
#exit 0
echo
"running defines.sh"
.
$SRCDIR
/scripts/defines.sh
if
test
$SYNCPROV
=
syncprovno
;
then
echo
"Syncrepl provider overlay not available, test skipped"
exit
0
fi
SMC_DIR
=
$TESTDIR
/smc
SM1_DIR
=
$TESTDIR
/sm1
SM2_DIR
=
$TESTDIR
/sm2
SS1_DIR
=
$TESTDIR
/ss1
SS2_DIR
=
$TESTDIR
/ss2
SSC_DIR
=
$TESTDIR
/ssc
MNUM
=
1
mkdir
-p
$TESTDIR
for
dir
in
$SMC_DIR
$SM1_DIR
$SM2_DIR
$SS1_DIR
$SS2_DIR
$SSC_DIR
;
do
mkdir
-p
$dir
$dir
/slapd.d
$dir
/db
done
mkdir
-p
$SMC_DIR
/ou1
$SMC_DIR
/sm1ou1
$SMC_DIR
/sm1ou2
mkdir
-p
$SMC_DIR
/ou2
$SMC_DIR
/sm2ou1
mkdir
-p
$SM1_DIR
/ou1
$SM1_DIR
/sm1ou1
$SM1_DIR
/sm1ou2
mkdir
-p
$SM2_DIR
/ou2
$SM2_DIR
/sm1ou1
$SM2_DIR
/sm2ou1
$SM2_DIR
/sm2ou2
cd
$TESTDIR
KILLPIDS
=
$SLAPPASSWD
-g
-n
>
$CONFIGPWF
ID
=
1
if
test
$WAIT
!=
0
;
then
RETRY
=
"1 60"
else
RETRY
=
"1 10"
fi
echo
"Initializing master configurations..."
for
dir
in
$SMC_DIR
$SM1_DIR
$SM2_DIR
;
do
$SLAPADD
-F
$dir
/slapd.d
-n
0
<<
EOF
dn: cn=config
objectClass: olcGlobal
cn: config
olcServerID:
$ID
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcRootPW:< file://
$CONFIGPWF
EOF
ID
=
`
expr
$ID
+ 1
`
done
echo
"Initializing search configurations..."
for
dir
in
$SS1_DIR
$SS2_DIR
$SSC_DIR
;
do
$SLAPADD
-F
$dir
/slapd.d
-n
0
<<
EOF
dn: cn=config
objectClass: olcGlobal
cn: config
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcRootPW:< file://
$CONFIGPWF
EOF
done
echo
"Starting central master slapd on TCP/IP port
$PORT1
..."
cd
$SMC_DIR
$SLAPD
-F
slapd.d
-h
$URI1
-d
$LVL
$TIMING
>
$LOG1
2>&1 &
SMC_PID
=
$!
if
test
$WAIT
!=
0
;
then
echo
PID
$SMC_PID
read
foo
fi
KILLPIDS
=
"
$KILLPIDS
$SMC_PID
"
cd
$TESTWD
sleep
1
echo
"Using ldapsearch to check that central master slapd is running..."
for
i
in
1 2 3 4 5
;
do
$LDAPSEARCH
-s
base
-b
""
-H
$URI1
\
'objectclass=*'
>
/dev/null 2>&1
RC
=
$?
test
$RC
=
0
&&
break
echo
"Waiting
$i
seconds for slapd to start..."
sleep
$i
done
if
test
$RC
!=
0
;
then
echo
"ldapsearch failed (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
echo
"Starting site1 master slapd on TCP/IP port
$PORT2
..."
cd
$SM1_DIR
$SLAPD
-F
slapd.d
-h
$URI2
-d
$LVL
$TIMING
>
$LOG2
2>&1 &
SM1_PID
=
$!
if
test
$WAIT
!=
0
;
then
echo
PID
$SM1_PID
read
foo
fi
KILLPIDS
=
"
$KILLPIDS
$SM1_PID
"
cd
$TESTWD
sleep
1
echo
"Using ldapsearch to check that site1 master is running..."
for
i
in
1 2 3 4 5
;
do
$LDAPSEARCH
-s
base
-b
""
-H
$URI2
\
'objectclass=*'
>
/dev/null 2>&1
RC
=
$?
test
$RC
=
0
&&
break
echo
"Waiting
$i
seconds for slapd to start..."
sleep
$i
done
if
test
$RC
!=
0
;
then
echo
"ldapsearch failed (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
echo
"Starting site2 master slapd on TCP/IP port
$PORT3
..."
cd
$SM2_DIR
$SLAPD
-F
slapd.d
-h
$URI3
-d
$LVL
$TIMING
>
$LOG3
2>&1 &
SM2_PID
=
$!
if
test
$WAIT
!=
0
;
then
echo
PID
$SM2_PID
read
foo
fi
KILLPIDS
=
"
$KILLPIDS
$SM2_PID
"
cd
$TESTWD
sleep
1
echo
"Using ldapsearch to check that site2 master is running..."
for
i
in
1 2 3 4 5
;
do
$LDAPSEARCH
-s
base
-b
""
-H
$URI3
\
'objectclass=*'
>
/dev/null 2>&1
RC
=
$?
test
$RC
=
0
&&
break
echo
"Waiting
$i
seconds for slapd to start..."
sleep
$i
done
if
test
$RC
!=
0
;
then
echo
"ldapsearch failed (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
echo
"Starting central search slapd on TCP/IP port
$PORT4
..."
cd
$SSC_DIR
$SLAPD
-F
slapd.d
-h
$URI4
-d
$LVL
$TIMING
>
$LOG4
2>&1 &
SSC_PID
=
$!
if
test
$WAIT
!=
0
;
then
echo
PID
$SSC_PID
read
foo
fi
KILLPIDS
=
"
$KILLPIDS
$SSC_PID
"
cd
$TESTWD
sleep
1
echo
"Using ldapsearch to check that central search slapd is running..."
for
i
in
1 2 3 4 5
;
do
$LDAPSEARCH
-s
base
-b
""
-H
$URI4
\
'objectclass=*'
>
/dev/null 2>&1
RC
=
$?
test
$RC
=
0
&&
break
echo
"Waiting
$i
seconds for slapd to start..."
sleep
$i
done
if
test
$RC
!=
0
;
then
echo
"ldapsearch failed (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
echo
"Starting site1 search slapd on TCP/IP port
$PORT5
..."
cd
$SS1_DIR
$SLAPD
-F
slapd.d
-h
$URI5
-d
$LVL
$TIMING
>
$LOG5
2>&1 &
SS1_PID
=
$!
if
test
$WAIT
!=
0
;
then
echo
PID
$SS1_PID
read
foo
fi
KILLPIDS
=
"
$KILLPIDS
$SS1_PID
"
cd
$TESTWD
sleep
1
echo
"Using ldapsearch to check that site1 search slapd is running..."
for
i
in
1 2 3 4 5
;
do
$LDAPSEARCH
-s
base
-b
""
-H
$URI5
\
'objectclass=*'
>
/dev/null 2>&1
RC
=
$?
test
$RC
=
0
&&
break
echo
"Waiting
$i
seconds for slapd to start..."
sleep
$i
done
if
test
$RC
!=
0
;
then
echo
"ldapsearch failed (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
echo
"Starting site2 search slapd on TCP/IP port
$PORT6
..."
cd
$SS2_DIR
$SLAPD
-F
slapd.d
-h
$URI6
-d
$LVL
$TIMING
>
$LOG6
2>&1 &
SS2_PID
=
$!
if
test
$WAIT
!=
0
;
then
echo
PID
$SS2_PID
read
foo
fi
KILLPIDS
=
"
$KILLPIDS
$SS2_PID
"
cd
$TESTWD
sleep
1
echo
"Using ldapsearch to check that site2 search slapd is running..."
for
i
in
1 2 3 4 5
;
do
$LDAPSEARCH
-s
base
-b
""
-H
$URI6
\
'objectclass=*'
>
/dev/null 2>&1
RC
=
$?
test
$RC
=
0
&&
break
echo
"Waiting
$i
seconds for slapd to start..."
sleep
$i
done
if
test
$RC
!=
0
;
then
echo
"ldapsearch failed (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
for
uri
in
$URI1
$URI2
$URI3
$URI4
$URI5
$URI6
;
do
echo
"Adding schema on
$uri
..."
$LDAPADD
-D
cn
=
config
-H
$uri
-y
$CONFIGPWF
<<
EOF
>
$TESTOUT
2>&1
include: file://
$ABS_SCHEMADIR
/core.ldif
include: file://
$ABS_SCHEMADIR
/cosine.ldif
include: file://
$ABS_SCHEMADIR
/inetorgperson.ldif
include: file://
$ABS_SCHEMADIR
/openldap.ldif
include: file://
$ABS_SCHEMADIR
/nis.ldif
EOF
RC
=
$?
if
test
$RC
!=
0
;
then
echo
"ldapadd failed for schema config (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
[
"
$BACKENDTYPE
"
=
mod
]
||
continue
echo
"Adding backend module on
$uri
..."
$LDAPADD
-D
cn
=
config
-H
$uri
-y
$CONFIGPWF
<<
EOF
>>
$TESTOUT
2>&1
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath:
$TESTWD
/../servers/slapd/back-
$BACKEND
olcModuleLoad: back_
$BACKEND
.la
EOF
RC
=
$?
if
test
$RC
!=
0
;
then
echo
"ldapadd failed for backend module (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
done
echo
"Adding database config on central master..."
if
[
"
$SYNCPROV
"
=
syncprovmod
]
;
then
$LDAPADD
-D
cn
=
config
-H
$URI1
-y
$CONFIGPWF
<<
EOF
>>
$TESTOUT
2>&1
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath:
$TESTWD
/../servers/slapd/overlays
olcModuleLoad: syncprov.la
EOF
RC
=
$?
if
test
$RC
!=
0
;
then
echo
"ldapadd failed for moduleLoad (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
fi
nullExclude
=
""
nullOK
=
""
wantNoObj
=
32
test
$BACKEND
=
null
&&
nullExclude
=
"# "
nullOK
=
"OK"
wantNoObj
=
0
$LDAPADD
-D
cn
=
config
-H
$URI1
-y
$CONFIGPWF
<<
EOF
>>
$TESTOUT
2>&1
dn: olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {1}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SMC_DIR
/db
olcSuffix:
$BASEDN
olcRootDN:
$MANAGERDN
olcRootPW:
$PASSWD
dn: olcOverlay={0}glue,olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcOverlayConfig
olcOverlay: {0}glue
dn: olcOverlay={1}syncprov,olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {1}syncprov
olcSpCheckpoint: 3 1
dn: olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {1}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SMC_DIR
/ou1
olcSubordinate: TRUE
olcSuffix: ou=ou1,
$BASEDN
olcRootDN:
$MANAGERDN
dn: olcDatabase={2}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {2}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SMC_DIR
/ou2
olcSubordinate: TRUE
olcSuffix: ou=ou2,
$BASEDN
olcRootDN:
$MANAGERDN
dn: olcDatabase={3}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {3}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SMC_DIR
/sm1ou1
olcSubordinate: TRUE
olcSuffix: ou=sm1ou1,
$BASEDN
olcRootDN:
$UPDATEDN
dn: olcDatabase={4}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {4}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SMC_DIR
/sm1ou2
olcSubordinate: TRUE
olcSuffix: ou=sm1ou2,
$BASEDN
olcRootDN:
$UPDATEDN
dn: olcDatabase={5}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {5}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SMC_DIR
/sm2ou1
olcSubordinate: TRUE
olcSuffix: ou=sm2ou1,
$BASEDN
olcRootDN:
$UPDATEDN
EOF
RC
=
$?
if
test
$RC
!=
0
;
then
echo
"ldapadd failed for central master database config (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
echo
"Adding database config on site1 master..."
if
[
"
$SYNCPROV
"
=
syncprovmod
]
;
then
$LDAPADD
-D
cn
=
config
-H
$URI2
-y
$CONFIGPWF
<<
EOF
>>
$TESTOUT
2>&1
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath:
$TESTWD
/../servers/slapd/overlays
olcModuleLoad: syncprov.la
EOF
RC
=
$?
if
test
$RC
!=
0
;
then
echo
"ldapadd failed for moduleLoad (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
fi
$LDAPADD
-D
cn
=
config
-H
$URI2
-y
$CONFIGPWF
<<
EOF
>>
$TESTOUT
2>&1
dn: olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {1}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SM1_DIR
/db
olcSuffix:
$BASEDN
olcRootDN:
$UPDATEDN
dn: olcOverlay={0}glue,olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcOverlayConfig
olcOverlay: {0}glue
dn: olcOverlay={1}syncprov,olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {1}syncprov
dn: olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {1}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SM1_DIR
/ou1
olcSubordinate: TRUE
olcSuffix: ou=ou1,
$BASEDN
olcRootDN:
$UPDATEDN
dn: olcDatabase={2}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {2}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SM1_DIR
/sm1ou1
olcSubordinate: TRUE
olcSuffix: ou=sm1ou1,
$BASEDN
olcRootDN: ou=sm1ou1,
$BASEDN
olcRootPW:
$PASSWD
dn: olcDatabase={3}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {3}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SM1_DIR
/sm1ou2
olcSubordinate: TRUE
olcSuffix: ou=sm1ou2,
$BASEDN
olcRootDN: ou=sm1ou1,
$BASEDN
EOF
RC
=
$?
if
test
$RC
!=
0
;
then
echo
"ldapadd failed for site1 master database config (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
echo
"Adding database config on site2 master..."
if
[
"
$SYNCPROV
"
=
syncprovmod
]
;
then
$LDAPADD
-D
cn
=
config
-H
$URI3
-y
$CONFIGPWF
<<
EOF
>>
$TESTOUT
2>&1
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath:
$TESTWD
/../servers/slapd/overlays
olcModuleLoad: syncprov.la
EOF
RC
=
$?
if
test
$RC
!=
0
;
then
echo
"ldapadd failed for moduleLoad (
$RC
)!"
test
$KILLSERVERS
!=
no
&&
kill
-HUP
$KILLPIDS
exit
$RC
fi
fi
$LDAPADD
-D
cn
=
config
-H
$URI3
-y
$CONFIGPWF
<<
EOF
>>
$TESTOUT
2>&1
dn: olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {1}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SM2_DIR
/db
olcSuffix:
$BASEDN
olcRootDN:
$UPDATEDN
dn: olcOverlay={0}glue,olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcOverlayConfig
olcOverlay: {0}glue
dn: olcOverlay={1}syncprov,olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {1}syncprov
olcSpCheckpoint: 1 1
dn: olcDatabase={1}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {1}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SM2_DIR
/ou2
olcSubordinate: TRUE
olcSuffix: ou=ou2,
$BASEDN
olcRootDN:
$UPDATEDN
dn: olcDatabase={2}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {2}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SM2_DIR
/sm1ou1
olcSubordinate: TRUE
olcSuffix: ou=sm1ou1,
$BASEDN
olcRootDN:
$UPDATEDN
dn: olcDatabase={3}
$BACKEND
,cn=config
objectClass: olcDatabaseConfig
${
nullExclude
}
objectClass: olc
${
BACKEND
}
Config
olcDatabase: {3}
$BACKEND
${
nullExclude
}
olcDbDirectory:
$SM2_DIR
/sm2ou1