mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-30 13:30:57 +08:00
More "char *" to struct berval DN changes
This commit is contained in:
parent
5ee89d6167
commit
3336619c80
@ -69,6 +69,18 @@ Package=<4>
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "backmon"="..\servers\slapd\back-monitor\backmon.dsp" - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "build"=.\build.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
@ -527,6 +539,9 @@ Package=<4>
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name backbdb
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name backmon
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
@ -569,6 +584,9 @@ Package=<4>
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name backbdb
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name backmon
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
@ -614,6 +632,9 @@ Package=<4>
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name backbdb
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name backmon
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
@ -656,6 +677,9 @@ Package=<4>
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name backbdb
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name backmon
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
@ -234,7 +234,7 @@ do_add( Connection *conn, Operation *op )
|
||||
* appropriate one, or send a referral to our "referral server"
|
||||
* if we don't hold it.
|
||||
*/
|
||||
be = select_backend( e->e_ndn, manageDSAit, 0 );
|
||||
be = select_backend( &e->e_nname, manageDSAit, 0 );
|
||||
if ( be == NULL ) {
|
||||
struct berval **ref = referral_rewrite( default_referral,
|
||||
NULL, e->e_dn, LDAP_SCOPE_DEFAULT );
|
||||
|
209
servers/slapd/back-monitor/backmon.dsp
Normal file
209
servers/slapd/back-monitor/backmon.dsp
Normal file
@ -0,0 +1,209 @@
|
||||
# Microsoft Developer Studio Project File - Name="backmon" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 5.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=backmon - Win32 Single Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "backmon.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "backmon.mak" CFG="backmon - Win32 Single Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "backmon - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "backmon - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "backmon - Win32 Single Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "backmon - Win32 Single Release" (based on\
|
||||
"Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
|
||||
!IF "$(CFG)" == "backmon - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "..\..\..\Release"
|
||||
# PROP Intermediate_Dir "..\..\..\Release\backmon"
|
||||
# PROP Target_Dir ""
|
||||
RSC=rc.exe
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "backmon - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "..\..\..\Debug"
|
||||
# PROP Intermediate_Dir "..\..\..\Debug\backmon"
|
||||
# PROP Target_Dir ""
|
||||
RSC=rc.exe
|
||||
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "backmon - Win32 Single Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "backmon"
|
||||
# PROP BASE Intermediate_Dir "backmon"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "..\..\..\SDebug"
|
||||
# PROP Intermediate_Dir "..\..\..\SDebug\backmon"
|
||||
# PROP Target_Dir ""
|
||||
RSC=rc.exe
|
||||
# ADD BASE CPP /nologo /MTd /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
|
||||
# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\\" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "backmon - Win32 Single Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "backldb0"
|
||||
# PROP BASE Intermediate_Dir "backldb0"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "..\..\..\SRelease"
|
||||
# PROP Intermediate_Dir "..\..\..\SRelease\backmon"
|
||||
# PROP Target_Dir ""
|
||||
RSC=rc.exe
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /W3 /GX /O2 /I "..\\" /I "..\..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "backmon - Win32 Release"
|
||||
# Name "backmon - Win32 Debug"
|
||||
# Name "backmon - Win32 Single Debug"
|
||||
# Name "backmon - Win32 Single Release"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\abandon.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\back-monitor.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\backend.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\bind.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\cache.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\compare.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\conn.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\database.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\entry.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\external.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\init.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\log.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\modify.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\operation.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\operational.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=".\proto-back-monitor.h"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\rww.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\search.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\sent.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\thread.c
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
@ -339,7 +339,7 @@ monitor_back_db_init(
|
||||
* creates the "cn=Monitor" entry
|
||||
*/
|
||||
snprintf( buf, sizeof( buf ),
|
||||
"dn: %s\n"
|
||||
"dn: " SLAPD_MONITOR_DN "\n"
|
||||
"objectClass: top\n"
|
||||
"objectClass: LDAPsubEntry\n"
|
||||
#ifdef SLAPD_MONITORSUBENTRY
|
||||
@ -347,9 +347,8 @@ monitor_back_db_init(
|
||||
#else /* !SLAPD_MONITORSUBENTRY */
|
||||
"objectClass: extensibleObject\n"
|
||||
#endif /* !SLAPD_MONITORSUBENTRY */
|
||||
"cn: Monitor",
|
||||
SLAPD_MONITOR_DN
|
||||
);
|
||||
"cn: Monitor" );
|
||||
|
||||
e = str2entry( buf );
|
||||
if ( e == NULL) {
|
||||
#ifdef NEW_LOGGING
|
||||
@ -415,22 +414,36 @@ monitor_back_open(
|
||||
{
|
||||
BackendDB *be;
|
||||
struct monitorsubsys *ms;
|
||||
char *ndn;
|
||||
struct berval dn = { sizeof(SLAPD_MONITOR_DN)-1, SLAPD_MONITOR_DN };
|
||||
struct berval *ndn = NULL;
|
||||
int rc;
|
||||
|
||||
/*
|
||||
* adds the monitor backend
|
||||
*/
|
||||
ndn = ch_strdup( SLAPD_MONITOR_DN );
|
||||
dn_normalize( ndn );
|
||||
rc = dnNormalize( NULL, &dn, &ndn );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
|
||||
"monitor DN \"" SLAPD_MONITOR_DN "\" is invalid\n" ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"monitor DN \"" SLAPD_MONITOR_DN "\" is invalid\n",
|
||||
0, 0, 0 );
|
||||
#endif
|
||||
return( -1 );
|
||||
}
|
||||
|
||||
be = select_backend( ndn , 0, 0 );
|
||||
ch_free( ndn );
|
||||
ber_bvfree( ndn );
|
||||
|
||||
if ( be == NULL ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
|
||||
"unable to get monitor backend\n" ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"unable to get monitor backend\n%s%s%s", "", "", "" );
|
||||
"unable to get monitor backend\n", 0, 0, 0 );
|
||||
#endif
|
||||
return( -1 );
|
||||
}
|
||||
|
@ -89,7 +89,6 @@ monitor_subsys_log_init(
|
||||
struct monitorinfo *mi;
|
||||
Entry *e;
|
||||
int i;
|
||||
struct monitorentrypriv *mp;
|
||||
struct berval val, *bv[2] = { &val, NULL };
|
||||
|
||||
ldap_pvt_thread_mutex_init( &monitor_log_mutex );
|
||||
@ -292,8 +291,9 @@ check_constraints( Modification *mod, int *newlevel )
|
||||
int i;
|
||||
|
||||
for ( i = 0; mod->sm_bvalues && mod->sm_bvalues[i] != NULL; i++ ) {
|
||||
int len, l;
|
||||
int l;
|
||||
const char *s;
|
||||
ber_len_t len;
|
||||
|
||||
l = loglevel2int( mod->sm_bvalues[i]->bv_val );
|
||||
if ( !l ) {
|
||||
@ -476,7 +476,7 @@ delete_values( Entry *e, Modification *mod, int *newlevel )
|
||||
static int
|
||||
replace_values( Entry *e, Modification *mod, int *newlevel )
|
||||
{
|
||||
int i, rc;
|
||||
int rc;
|
||||
|
||||
*newlevel = 0;
|
||||
rc = check_constraints( mod, newlevel );
|
||||
|
@ -51,26 +51,22 @@ monitor_subsys_thread_init(
|
||||
{
|
||||
struct monitorinfo *mi;
|
||||
Entry *e;
|
||||
struct monitorentrypriv *mp;
|
||||
struct berval val, *bv[2] = { &val, NULL };
|
||||
static char buf[1024];
|
||||
|
||||
mi = ( struct monitorinfo * )be->be_private;
|
||||
|
||||
if ( monitor_cache_get( mi,
|
||||
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn,
|
||||
&e ) ) {
|
||||
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn, &e ) )
|
||||
{
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
|
||||
"monitor_subsys_thread_init: "
|
||||
"unable to get entry '%s'\n",
|
||||
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn ));
|
||||
"monitor_subsys_thread_init: unable to get entry '%s'\n",
|
||||
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"monitor_subsys_thread_init: "
|
||||
"unable to get entry '%s'\n%s%s",
|
||||
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn,
|
||||
"", "" );
|
||||
"monitor_subsys_thread_init: unable to get entry '%s'\n",
|
||||
monitor_subsys[SLAPD_MONITOR_THREAD].mss_ndn, 0, 0 );
|
||||
#endif
|
||||
return( -1 );
|
||||
}
|
||||
|
@ -521,14 +521,14 @@ be_db_close( void )
|
||||
|
||||
Backend *
|
||||
select_backend(
|
||||
const char * dn,
|
||||
struct berval * dn,
|
||||
int manageDSAit,
|
||||
int noSubs )
|
||||
{
|
||||
int i, j, len, dnlen;
|
||||
int i, j;
|
||||
ber_len_t len, dnlen = dn->bv_len;
|
||||
Backend *be = NULL;
|
||||
|
||||
dnlen = strlen( dn );
|
||||
for ( i = 0; i < nbackends; i++ ) {
|
||||
for ( j = 0; backends[i].be_nsuffix != NULL &&
|
||||
backends[i].be_nsuffix[j] != NULL; j++ )
|
||||
@ -543,15 +543,18 @@ select_backend(
|
||||
/* suffix is longer than DN */
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if ( len && len < dnlen && ( !DN_SEPARATOR( dn[(dnlen-len)-1] ) || DN_ESCAPE( dn[(dnlen-len)-2] ) ) ) {
|
||||
if ( len && len < dnlen &&
|
||||
( !DN_SEPARATOR( dn->bv_val[(dnlen-len)-1] ) ||
|
||||
DN_ESCAPE( dn->bv_val[(dnlen-len)-2] ) ) )
|
||||
{
|
||||
/* make sure we have a separator */
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if ( strcmp( backends[i].be_nsuffix[j]->bv_val, &dn[dnlen-len] ) == 0 ) {
|
||||
if ( strcmp( backends[i].be_nsuffix[j]->bv_val,
|
||||
&dn->bv_val[dnlen-len] ) == 0 )
|
||||
{
|
||||
if( be == NULL ) {
|
||||
be = &backends[i];
|
||||
|
||||
@ -990,19 +993,21 @@ backend_group(
|
||||
)
|
||||
{
|
||||
GroupAssertion *g;
|
||||
int len = strlen(gr_ndn);
|
||||
struct berval gr;
|
||||
int i;
|
||||
|
||||
gr.bv_val = (char *) gr_ndn;
|
||||
gr.bv_len = strlen(gr_ndn);
|
||||
|
||||
ldap_pvt_thread_mutex_lock( &op->o_abandonmutex );
|
||||
i = op->o_abandon;
|
||||
ldap_pvt_thread_mutex_unlock( &op->o_abandonmutex );
|
||||
if (i)
|
||||
return SLAPD_ABANDON;
|
||||
if (i) return SLAPD_ABANDON;
|
||||
|
||||
if( strcmp( target->e_ndn, gr_ndn ) != 0 ) {
|
||||
/* we won't attempt to send it to a different backend */
|
||||
|
||||
be = select_backend(gr_ndn, 0,
|
||||
be = select_backend( &gr, 0,
|
||||
(be->be_glueflags & SLAP_GLUE_INSTANCE));
|
||||
|
||||
if (be == NULL) {
|
||||
@ -1013,7 +1018,7 @@ backend_group(
|
||||
ldap_pvt_thread_mutex_lock( &conn->c_mutex );
|
||||
for (g = conn->c_groups; g; g=g->next) {
|
||||
if (g->be != be || g->oc != group_oc || g->at != group_at ||
|
||||
g->len != len)
|
||||
g->len != gr.bv_len)
|
||||
continue;
|
||||
if (strcmp( g->ndn, gr_ndn ) == 0)
|
||||
break;
|
||||
@ -1028,12 +1033,12 @@ backend_group(
|
||||
group_oc, group_at );
|
||||
|
||||
if (op->o_tag != LDAP_REQ_BIND) {
|
||||
g = ch_malloc(sizeof(GroupAssertion) + len);
|
||||
g = ch_malloc(sizeof(GroupAssertion) + gr.bv_len);
|
||||
g->be = be;
|
||||
g->oc = group_oc;
|
||||
g->at = group_at;
|
||||
g->res = res;
|
||||
g->len = len;
|
||||
g->len = gr.bv_len;
|
||||
strcpy(g->ndn, gr_ndn);
|
||||
ldap_pvt_thread_mutex_lock( &conn->c_mutex );
|
||||
g->next = conn->c_groups;
|
||||
@ -1058,12 +1063,16 @@ backend_attribute(
|
||||
struct berval ***vals
|
||||
)
|
||||
{
|
||||
struct berval edn;
|
||||
edn.bv_val = (char *) entry_ndn;
|
||||
edn.bv_len = strlen( entry_ndn );
|
||||
|
||||
if( target == NULL ||
|
||||
strcmp( target->e_ndn, entry_ndn ) != 0 )
|
||||
{
|
||||
/* we won't attempt to send it to a different backend */
|
||||
|
||||
be = select_backend(entry_ndn, 0,
|
||||
be = select_backend( &edn, 0,
|
||||
(be->be_glueflags & SLAP_GLUE_INSTANCE));
|
||||
|
||||
if (be == NULL) {
|
||||
|
@ -456,7 +456,7 @@ do_bind(
|
||||
* if we don't hold it.
|
||||
*/
|
||||
|
||||
if ( (be = select_backend( ndn->bv_val, 0, 0 )) == NULL ) {
|
||||
if ( (be = select_backend( ndn, 0, 0 )) == NULL ) {
|
||||
if ( default_referral ) {
|
||||
struct berval **ref = referral_rewrite( default_referral,
|
||||
NULL, pdn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
@ -239,7 +239,7 @@ do_compare(
|
||||
* appropriate one, or send a referral to our "referral server"
|
||||
* if we don't hold it.
|
||||
*/
|
||||
if ( (be = select_backend( ndn->bv_val, manageDSAit, 0 )) == NULL ) {
|
||||
if ( (be = select_backend( ndn, manageDSAit, 0 )) == NULL ) {
|
||||
struct berval **ref = referral_rewrite( default_referral,
|
||||
NULL, pdn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
|
@ -46,8 +46,8 @@ char *global_host = NULL;
|
||||
char *global_realm = NULL;
|
||||
char *ldap_srvtab = "";
|
||||
char *default_passwd_hash;
|
||||
char *default_search_base = NULL;
|
||||
char *default_search_nbase = NULL;
|
||||
struct berval default_search_base = { 0, NULL };
|
||||
struct berval default_search_nbase = { 0, NULL };
|
||||
int num_subs = 0;
|
||||
|
||||
ber_len_t sockbuf_max_incoming = SLAP_SB_MAX_INCOMING_DEFAULT;
|
||||
@ -335,8 +335,8 @@ read_config( const char *fname )
|
||||
if ( cargc < 2 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: missing dn in \"defaultSearchBase <dn\" "
|
||||
"line\n", fname, lineno ));
|
||||
"%s: line %d: missing dn in \"defaultSearchBase <dn\" "
|
||||
"line\n", fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"missing dn in \"defaultSearchBase <dn>\" line\n",
|
||||
@ -348,24 +348,23 @@ read_config( const char *fname )
|
||||
} else if ( cargc > 2 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: extra cruft after <dn> in "
|
||||
"\"defaultSearchBase %s\" line (ignored)\n",
|
||||
fname, lineno, cargv[1] ));
|
||||
"%s: line %d: extra cruft after <dn> in "
|
||||
"\"defaultSearchBase %s\" line (ignored)\n",
|
||||
fname, lineno, cargv[1] ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"extra cruft after <dn> in \"defaultSearchBase %s\", "
|
||||
"line (ignored)\n",
|
||||
fname, lineno, cargv[1] );
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
if ( bi != NULL || be != NULL ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: defaultSearchBase line must appear "
|
||||
"prior to any backend or database definitions\n",
|
||||
fname, lineno ));
|
||||
"%s: line %d: defaultSearchBase line must appear "
|
||||
"prior to any backend or database definitions\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"defaultSearchBaase line must appear prior to "
|
||||
@ -376,42 +375,67 @@ read_config( const char *fname )
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ( default_search_nbase != NULL ) {
|
||||
if ( default_search_nbase.bv_len ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: default search base \"%s\" already defined "
|
||||
"(discarding old)\n", fname, lineno, default_search_base ));
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: "
|
||||
"default search base \"%s\" already defined "
|
||||
"(discarding old)\n", fname, lineno,
|
||||
default_search_base->bv_val ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"default search base \"%s\" already defined "
|
||||
"(discarding old)\n",
|
||||
fname, lineno, default_search_base );
|
||||
fname, lineno, default_search_base.bv_val );
|
||||
#endif
|
||||
|
||||
free( default_search_base );
|
||||
free( default_search_nbase );
|
||||
free( default_search_base.bv_val );
|
||||
free( default_search_nbase.bv_val );
|
||||
}
|
||||
|
||||
default_search_base = ch_strdup( cargv[1] );
|
||||
default_search_nbase = ch_strdup( cargv[1] );
|
||||
if ( load_ucdata( NULL ) < 0 ) return 1;
|
||||
|
||||
if ( load_ucdata( NULL ) < 0 ) {
|
||||
return( 1 );
|
||||
}
|
||||
if( dn_normalize( default_search_nbase ) == NULL ) {
|
||||
{
|
||||
struct berval dn, *pdn, *ndn;
|
||||
|
||||
dn.bv_val = cargv[1];
|
||||
dn.bv_len = strlen( dn.bv_val );
|
||||
|
||||
rc = dnPretty( NULL, &dn, &pdn );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: %d: invalid default search base \"%s\"\n",
|
||||
fname, lineno, default_search_base ));
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: defaultSearchBase DN is invalid.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"invalid default search base \"%s\"\n",
|
||||
fname, lineno, default_search_base );
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: defaultSearchBase DN is invalid\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
return 1;
|
||||
rc = dnNormalize( NULL, &dn, &ndn );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: defaultSearchBase DN is invalid.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: defaultSearchBase DN is invalid\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
ber_bvfree( ndn );
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
default_search_base = *pdn;
|
||||
default_search_nbase = *ndn;
|
||||
|
||||
free( pdn );
|
||||
free( ndn );
|
||||
}
|
||||
|
||||
|
||||
/* set maximum threads in thread pool */
|
||||
} else if ( strcasecmp( cargv[0], "threads" ) == 0 ) {
|
||||
int c;
|
||||
@ -829,12 +853,12 @@ read_config( const char *fname )
|
||||
} else if ( strcasecmp( cargv[0], "subordinate" ) == 0 ) {
|
||||
if ( be == NULL ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: subordinate keyword must appear inside a database "
|
||||
"definition (ignored).\n", fname, lineno ));
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: "
|
||||
"subordinate keyword must appear inside a database "
|
||||
"definition (ignored).\n", fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: suffix line must appear inside a database definition (ignored)\n",
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix line "
|
||||
"must appear inside a database definition (ignored)\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
} else {
|
||||
@ -845,143 +869,159 @@ read_config( const char *fname )
|
||||
/* set database suffix */
|
||||
} else if ( strcasecmp( cargv[0], "suffix" ) == 0 ) {
|
||||
Backend *tmp_be;
|
||||
struct berval dn;
|
||||
struct berval *pdn = NULL;
|
||||
struct berval *ndn = NULL;
|
||||
|
||||
if ( cargc < 2 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: missing dn in \"suffix <dn>\" line.\n",
|
||||
fname, lineno ));
|
||||
"%s: line %d: missing dn in \"suffix <dn>\" line.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: missing dn in \"suffix <dn>\" line\n",
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"missing dn in \"suffix <dn>\" line\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
|
||||
return( 1 );
|
||||
|
||||
} else if ( cargc > 2 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: extra cruft after <dn> in \"suffix %s\""
|
||||
" line (ignored).\n", fname, lineno, cargv[1] ));
|
||||
"%s: line %d: extra cruft after <dn> in \"suffix %s\""
|
||||
" line (ignored).\n", fname, lineno, cargv[1] ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: extra cruft after <dn> in \"suffix %s\" line (ignored)\n",
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: extra cruft "
|
||||
"after <dn> in \"suffix %s\" line (ignored)\n",
|
||||
fname, lineno, cargv[1] );
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
if ( be == NULL ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: suffix line must appear inside a database "
|
||||
"definition (ignored).\n", fname, lineno ));
|
||||
"%s: line %d: suffix line must appear inside a database "
|
||||
"definition.\n", fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: suffix line must appear inside a database definition (ignored)\n",
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix line "
|
||||
"must appear inside a database definition\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
return( 1 );
|
||||
|
||||
#if defined(SLAPD_MONITOR_DN)
|
||||
/* "cn=Monitor" is reserved for monitoring slap */
|
||||
} else if ( strcasecmp( cargv[1], SLAPD_MONITOR_DN ) == 0 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: \"%s\" is reserved for monitoring slapd\n",
|
||||
fname, lineno, SLAPD_MONITOR_DN ));
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: \""
|
||||
SLAPD_MONITOR_DN "\" is reserved for monitoring slapd\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: \"%s\" is reserved for monitoring slapd\n",
|
||||
fname, lineno, SLAPD_MONITOR_DN );
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: \""
|
||||
SLAPD_MONITOR_DN "\" is reserved for monitoring slapd\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
return( 1 );
|
||||
#endif /* SLAPD_MONITOR_DN */
|
||||
}
|
||||
|
||||
} else if ( ( tmp_be = select_backend( cargv[1], 0, 0 ) ) == be ) {
|
||||
if ( load_ucdata( NULL ) < 0 ) return 1;
|
||||
|
||||
dn.bv_val = cargv[1];
|
||||
dn.bv_len = strlen( cargv[1] );
|
||||
|
||||
rc = dnPretty( NULL, &dn, &pdn );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: suffix already served by this backend "
|
||||
"(ignored)\n", fname, lineno ));
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: suffix DN is invalid.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: suffix already served by this backend (ignored)\n",
|
||||
"%s: line %d: suffix DN is invalid\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
rc = dnNormalize( NULL, &dn, &ndn );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: suffix DN is invalid.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: suffix DN is invalid\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
ber_bvfree( ndn );
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
tmp_be = select_backend( ndn, 0, 0 );
|
||||
if ( tmp_be == be ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: suffix already served by this backend "
|
||||
"(ignored)\n", fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix "
|
||||
"already served by this backend (ignored)\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
ber_bvfree( pdn );
|
||||
ber_bvfree( ndn );
|
||||
|
||||
} else if ( tmp_be != NULL ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: suffix already served by a preceding "
|
||||
"backend \"%s\" (ignored)\n", fname, lineno,
|
||||
tmp_be->be_suffix[0] ));
|
||||
"%s: line %d: suffix already served by a preceding "
|
||||
"backend \"%s\"\n", fname, lineno,
|
||||
tmp_be->be_suffix[0] ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: suffix already served by a preceeding backend \"%s\" (ignored)\n",
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix "
|
||||
"already served by a preceeding backend \"%s\"\n",
|
||||
fname, lineno, tmp_be->be_suffix[0] );
|
||||
#endif
|
||||
ber_bvfree( pdn );
|
||||
ber_bvfree( ndn );
|
||||
return( 1 );
|
||||
|
||||
} else {
|
||||
char *dn;
|
||||
|
||||
if ( load_ucdata( NULL ) < 0 ) {
|
||||
return( 1 );
|
||||
}
|
||||
dn = ch_strdup( cargv[1] );
|
||||
if( dn_validate( dn ) == NULL ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: suffix DN invalid\"%s\"\n",
|
||||
fname, lineno, cargv[1] ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"suffix DN invalid \"%s\"\n",
|
||||
fname, lineno, cargv[1] );
|
||||
#endif
|
||||
free( dn );
|
||||
return 1;
|
||||
|
||||
} else if( *dn == '\0' && default_search_nbase != NULL ) {
|
||||
} else if( pdn->bv_len == 0 && default_search_nbase.bv_len ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: suffix DN empty and default search "
|
||||
"base provided \"%s\" (assuming okay).\n",
|
||||
fname, lineno, default_search_base ));
|
||||
"%s: line %d: suffix DN empty and default search "
|
||||
"base provided \"%s\" (assuming okay).\n",
|
||||
fname, lineno, default_search_base.bv_val ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"suffix DN empty and default "
|
||||
"search base provided \"%s\" (assuming okay)\n",
|
||||
fname, lineno, default_search_base );
|
||||
fname, lineno, default_search_base.bv_val );
|
||||
#endif
|
||||
|
||||
}
|
||||
charray_add( &be->be_suffix, dn );
|
||||
if ( dn_normalize( dn ) == NULL ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: "
|
||||
"unable to normalize suffix "
|
||||
"\"%s\"\n", fname, lineno, dn ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY, "%s: line %d: "
|
||||
"unable to normalize suffix "
|
||||
"\"%s\"\n", fname, lineno, dn );
|
||||
#endif
|
||||
free( dn );
|
||||
return 1;
|
||||
}
|
||||
ber_bvecadd( &be->be_nsuffix, ber_bvstr( dn ) );
|
||||
}
|
||||
|
||||
charray_add( &be->be_suffix, pdn->bv_val );
|
||||
ber_bvecadd( &be->be_nsuffix, ndn );
|
||||
|
||||
/* set database suffixAlias */
|
||||
} else if ( strcasecmp( cargv[0], "suffixAlias" ) == 0 ) {
|
||||
Backend *tmp_be;
|
||||
struct berval alias, *palias, *nalias;
|
||||
struct berval aliased, *paliased, *naliased;
|
||||
|
||||
if ( cargc < 2 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: missing alias and aliased_dn in "
|
||||
"\"suffixAlias <alias> <aliased_dn>\" line.\n",
|
||||
fname, lineno ));
|
||||
"%s: line %d: missing alias and aliased_dn in "
|
||||
"\"suffixAlias <alias> <aliased_dn>\" line.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: missing alias and aliased_dn in \"suffixAlias <alias> <aliased_dn>\" line\n",
|
||||
"%s: line %d: missing alias and aliased_dn in "
|
||||
"\"suffixAlias <alias> <aliased_dn>\" line.\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
|
||||
@ -989,25 +1029,26 @@ read_config( const char *fname )
|
||||
} else if ( cargc < 3 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: missing aliased_dn in "
|
||||
"\"suffixAlias <alias> <aliased_dn>\" line\n",
|
||||
fname, lineno ));
|
||||
"%s: line %d: missing aliased_dn in "
|
||||
"\"suffixAlias <alias> <aliased_dn>\" line\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: missing aliased_dn in \"suffixAlias <alias> <aliased_dn>\" line\n",
|
||||
fname, lineno, 0 );
|
||||
"%s: line %d: missing aliased_dn in "
|
||||
"\"suffixAlias <alias> <aliased_dn>\" line\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
|
||||
return( 1 );
|
||||
} else if ( cargc > 3 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: extra cruft in suffixAlias line (ignored)\n",
|
||||
fname, lineno ));
|
||||
"%s: line %d: extra cruft in suffixAlias line (ignored)\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: extra cruft in suffixAlias line (ignored)\n",
|
||||
fname, lineno, 0 );
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
|
||||
}
|
||||
@ -1015,62 +1056,124 @@ read_config( const char *fname )
|
||||
if ( be == NULL ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: suffixAlias line must appear inside a "
|
||||
"database definition (ignored).\n", fname, lineno ));
|
||||
"%s: line %d: suffixAlias line must appear inside a "
|
||||
"database definition (ignored).\n", fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: suffixAlias line"
|
||||
" must appear inside a database definition (ignored)\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
}
|
||||
|
||||
} else if ( (tmp_be = select_backend( cargv[1], 0, 0 )) != NULL ) {
|
||||
if ( load_ucdata( NULL ) < 0 ) return 1;
|
||||
|
||||
alias.bv_val = cargv[1];
|
||||
alias.bv_len = strlen( cargv[1] );
|
||||
|
||||
rc = dnPretty( NULL, &alias, &palias );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: alias DN is invalid.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: alias DN is invalid\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
rc = dnNormalize( NULL, &alias, &nalias );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: alias DN is invalid.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: alias DN is invalid\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
ber_bvfree( palias );
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
tmp_be = select_backend( nalias, 0, 0 );
|
||||
ber_bvfree( nalias );
|
||||
if ( tmp_be != be ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: suffixAlias served by a preceeding "
|
||||
"backend \"%s\" (ignored).\n", fname, lineno,
|
||||
tmp_be->be_suffix[0] ));
|
||||
"%s: line %d: suffixAlias served by a preceeding "
|
||||
"backend \"%s\"\n",
|
||||
fname, lineno, tmp_be->be_suffix[0] ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: suffixAlias served by"
|
||||
" a preceeding backend \"%s\" (ignored)\n",
|
||||
" a preceeding backend \"%s\"\n",
|
||||
fname, lineno, tmp_be->be_suffix[0] );
|
||||
#endif
|
||||
ber_bvfree( palias );
|
||||
return -1;
|
||||
}
|
||||
|
||||
aliased.bv_val = cargv[2];
|
||||
aliased.bv_len = strlen( cargv[2] );
|
||||
|
||||
} else if ( (tmp_be = select_backend( cargv[2], 0, 0 )) != NULL ) {
|
||||
rc = dnPretty( NULL, &aliased, &paliased );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: aliased DN is invalid.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: aliased DN is invalid\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
ber_bvfree( palias );
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
rc = dnNormalize( NULL, &aliased, &naliased );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
|
||||
"%s: line %d: aliased DN is invalid.\n",
|
||||
fname, lineno ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: aliased DN is invalid\n",
|
||||
fname, lineno, 0 );
|
||||
#endif
|
||||
ber_bvfree( palias );
|
||||
ber_bvfree( paliased );
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
tmp_be = select_backend( naliased, 0, 0 );
|
||||
ber_bvfree( naliased );
|
||||
if ( tmp_be != be ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
|
||||
"%s: line %d: suffixAlias derefs to a different backend "
|
||||
"a preceeding backend \"%s\" (ignored)\n",
|
||||
fname, lineno, tmp_be->be_suffix[0] ));
|
||||
"%s: line %d: suffixAlias derefs to a different backend "
|
||||
"a preceeding backend \"%s\" (ignored)\n",
|
||||
fname, lineno, tmp_be->be_suffix[0] ));
|
||||
#else
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
"%s: line %d: suffixAlias derefs to differnet backend"
|
||||
" a preceeding backend \"%s\" (ignored)\n",
|
||||
fname, lineno, tmp_be->be_suffix[0] );
|
||||
#endif
|
||||
|
||||
|
||||
} else {
|
||||
char *alias, *aliased_dn;
|
||||
|
||||
if ( load_ucdata( NULL ) < 0 ) {
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
alias = ch_strdup( cargv[1] );
|
||||
(void) dn_normalize( alias );
|
||||
|
||||
aliased_dn = ch_strdup( cargv[2] );
|
||||
(void) dn_normalize( aliased_dn );
|
||||
|
||||
ber_bvecadd( &be->be_suffixAlias,
|
||||
ber_bvstr( alias ) );
|
||||
ber_bvecadd( &be->be_suffixAlias,
|
||||
ber_bvstr( aliased_dn ) );
|
||||
ber_bvfree( palias );
|
||||
ber_bvfree( paliased );
|
||||
return -1;
|
||||
}
|
||||
|
||||
ber_bvecadd( &be->be_suffixAlias, palias );
|
||||
ber_bvecadd( &be->be_suffixAlias, paliased );
|
||||
|
||||
/* set max deref depth */
|
||||
} else if ( strcasecmp( cargv[0], "maxDerefDepth" ) == 0 ) {
|
||||
int i;
|
||||
@ -1144,9 +1247,7 @@ read_config( const char *fname )
|
||||
} else {
|
||||
struct berval dn, *pdn = NULL, *ndn = NULL;
|
||||
|
||||
if ( load_ucdata( NULL ) < 0 ) {
|
||||
return( 1 );
|
||||
}
|
||||
if ( load_ucdata( NULL ) < 0 ) return 1;
|
||||
|
||||
dn.bv_val = cargv[1];
|
||||
dn.bv_len = strlen( cargv[1] );
|
||||
@ -1822,9 +1923,7 @@ read_config( const char *fname )
|
||||
} else {
|
||||
struct berval dn, *ndn = NULL;
|
||||
|
||||
if ( load_ucdata( NULL ) < 0 ) {
|
||||
return( 1 );
|
||||
}
|
||||
if ( load_ucdata( NULL ) < 0 ) return 1;
|
||||
|
||||
dn.bv_val = cargv[1];
|
||||
dn.bv_len = strlen( cargv[1] );
|
||||
@ -2226,9 +2325,8 @@ read_config( const char *fname )
|
||||
free( saveline );
|
||||
}
|
||||
fclose( fp );
|
||||
if ( load_ucdata( NULL ) < 0 ) {
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
if ( load_ucdata( NULL ) < 0 ) return 1;
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,7 @@ do_delete(
|
||||
* appropriate one, or send a referral to our "referral server"
|
||||
* if we don't hold it.
|
||||
*/
|
||||
if ( (be = select_backend( ndn->bv_val, manageDSAit, 0 )) == NULL ) {
|
||||
if ( (be = select_backend( ndn, manageDSAit, 0 )) == NULL ) {
|
||||
struct berval **ref = referral_rewrite( default_referral,
|
||||
NULL, pdn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
|
@ -297,7 +297,7 @@ do_modify(
|
||||
* appropriate one, or send a referral to our "referral server"
|
||||
* if we don't hold it.
|
||||
*/
|
||||
if ( (be = select_backend( ndn->bv_val, manageDSAit, 0 )) == NULL ) {
|
||||
if ( (be = select_backend( ndn, manageDSAit, 0 )) == NULL ) {
|
||||
struct berval **ref = referral_rewrite( default_referral,
|
||||
NULL, pdn->bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
|
@ -323,7 +323,7 @@ do_modrdn(
|
||||
* appropriate one, or send a referral to our "referral server"
|
||||
* if we don't hold it.
|
||||
*/
|
||||
if ( (be = select_backend( ndn->bv_val, manageDSAit, 0 )) == NULL ) {
|
||||
if ( (be = select_backend( ndn, manageDSAit, 0 )) == NULL ) {
|
||||
struct berval **ref = referral_rewrite( default_referral,
|
||||
NULL, dn.bv_val, LDAP_SCOPE_DEFAULT );
|
||||
|
||||
@ -352,7 +352,7 @@ do_modrdn(
|
||||
* the same backend, otherwise we return an error.
|
||||
*/
|
||||
if( newSuperior.bv_len ) {
|
||||
newSuperior_be = select_backend( nnewSuperior->bv_val, 0, 0 );
|
||||
newSuperior_be = select_backend( nnewSuperior, 0, 0 );
|
||||
|
||||
if ( newSuperior_be != be ) {
|
||||
/* newSuperior is in same backend */
|
||||
|
@ -153,7 +153,7 @@ LDAP_SLAPD_F (BackendInfo *) backend_info LDAP_P(( const char *type ));
|
||||
LDAP_SLAPD_F (BackendDB *) backend_db_init LDAP_P(( const char *type ));
|
||||
|
||||
LDAP_SLAPD_F (BackendDB *) select_backend LDAP_P((
|
||||
const char * dn,
|
||||
struct berval * dn,
|
||||
int manageDSAit,
|
||||
int noSubordinates ));
|
||||
|
||||
@ -889,7 +889,7 @@ LDAP_SLAPD_F (int) slap_passwd_parse(
|
||||
* kerberos.c
|
||||
*/
|
||||
#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
|
||||
LDAP_SLAPD_V (char) *ldap_srvtab;
|
||||
LDAP_SLAPD_V (char *) ldap_srvtab;
|
||||
LDAP_SLAPD_V (int) krbv4_ldap_auth();
|
||||
#endif
|
||||
|
||||
@ -925,14 +925,14 @@ LDAP_SLAPD_V (slap_access_t) global_default_access;
|
||||
LDAP_SLAPD_V (int) global_lastmod;
|
||||
LDAP_SLAPD_V (int) global_idletimeout;
|
||||
LDAP_SLAPD_V (int) global_schemacheck;
|
||||
LDAP_SLAPD_V (char) *global_host;
|
||||
LDAP_SLAPD_V (char) *global_realm;
|
||||
LDAP_SLAPD_V (char *) global_host;
|
||||
LDAP_SLAPD_V (char *) global_realm;
|
||||
LDAP_SLAPD_V (int) sasl_external_x509dn_convert;
|
||||
LDAP_SLAPD_V (char) *default_passwd_hash;
|
||||
LDAP_SLAPD_V (char *) default_passwd_hash;
|
||||
LDAP_SLAPD_V (int) lber_debug;
|
||||
LDAP_SLAPD_V (int) ldap_syslog;
|
||||
LDAP_SLAPD_V (char *) default_search_base;
|
||||
LDAP_SLAPD_V (char *) default_search_nbase;
|
||||
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;
|
||||
@ -949,7 +949,7 @@ LDAP_SLAPD_V (long) num_ops_initiated;
|
||||
|
||||
LDAP_SLAPD_V (char *) slapd_pid_file;
|
||||
LDAP_SLAPD_V (char *) slapd_args_file;
|
||||
LDAP_SLAPD_V (char) **g_argv;
|
||||
LDAP_SLAPD_V (char **) g_argv;
|
||||
LDAP_SLAPD_V (time_t) starttime;
|
||||
|
||||
/* use time(3) -- no mutex */
|
||||
|
@ -53,21 +53,24 @@ add_replica_suffix(
|
||||
const char *suffix
|
||||
)
|
||||
{
|
||||
char *nsuffix = ch_strdup( suffix );
|
||||
int rc = 0;
|
||||
struct berval dn, *ndn = NULL;
|
||||
int rc;
|
||||
|
||||
if ( dn_normalize( nsuffix ) != NULL ) {
|
||||
if ( select_backend( nsuffix, 0, 0 ) == be ) {
|
||||
charray_add( &be->be_replica[nr]->ri_nsuffix, nsuffix );
|
||||
} else {
|
||||
rc = 1;
|
||||
}
|
||||
} else {
|
||||
rc = 2;
|
||||
dn.bv_val = (char *) suffix;
|
||||
dn.bv_len = strlen( dn.bv_val );
|
||||
|
||||
rc = dnNormalize( NULL, &dn, &ndn );
|
||||
if( rc != LDAP_SUCCESS ) {
|
||||
return 2;
|
||||
}
|
||||
free( nsuffix );
|
||||
|
||||
return( rc );
|
||||
if ( select_backend( ndn, 0, 0 ) != be ) {
|
||||
ber_bvfree( ndn );
|
||||
return 1;
|
||||
}
|
||||
|
||||
ber_bvecadd( &be->be_replica[nr]->ri_nsuffix, ndn );
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
@ -108,7 +111,7 @@ replog(
|
||||
int j;
|
||||
|
||||
for ( j = 0; be->be_replica[i]->ri_nsuffix[j]; j++ ) {
|
||||
if ( dn_issuffix( ndn, be->be_replica[i]->ri_nsuffix[j] ) ) {
|
||||
if ( dn_issuffix( ndn, be->be_replica[i]->ri_nsuffix[j]->bv_val ) ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -344,7 +344,7 @@ char *slap_sasl2dn( char *saslname )
|
||||
#endif
|
||||
|
||||
|
||||
be = select_backend( searchbase.bv_val, 0, 1 );
|
||||
be = select_backend( &searchbase, 0, 1 );
|
||||
if(( be == NULL ) || ( be->be_search == NULL))
|
||||
goto FINISHED;
|
||||
suffix_alias( be, &searchbase );
|
||||
@ -467,7 +467,7 @@ int slap_sasl_match( char *rule, char *assertDN, char *authc )
|
||||
#endif
|
||||
|
||||
|
||||
be = select_backend( searchbase.bv_val, 0, 1 );
|
||||
be = select_backend( &searchbase, 0, 1 );
|
||||
if(( be == NULL ) || ( be->be_search == NULL)) {
|
||||
rc = LDAP_INAPPROPRIATE_AUTH;
|
||||
goto CONCLUDED;
|
||||
|
@ -282,13 +282,14 @@ do_search(
|
||||
}
|
||||
}
|
||||
|
||||
if( nbase->bv_len == 0 && default_search_nbase != NULL ) {
|
||||
if( !nbase->bv_len && default_search_nbase.bv_len ) {
|
||||
ch_free( base.bv_val );
|
||||
ch_free( nbase->bv_val );
|
||||
base.bv_val = ch_strdup( default_search_base );
|
||||
base.bv_len = strlen( default_search_nbase );
|
||||
nbase->bv_val = ch_strdup( default_search_nbase );
|
||||
nbase->bv_len = strlen( default_search_nbase );
|
||||
|
||||
base.bv_val = ch_strdup( default_search_base.bv_val );
|
||||
base.bv_len = default_search_base.bv_len;
|
||||
nbase->bv_val = ch_strdup( default_search_nbase.bv_val );
|
||||
nbase->bv_len = default_search_nbase.bv_len;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -296,7 +297,7 @@ do_search(
|
||||
* appropriate one, or send a referral to our "referral server"
|
||||
* if we don't hold it.
|
||||
*/
|
||||
if ( (be = select_backend( nbase->bv_val, manageDSAit, 1 )) == NULL ) {
|
||||
if ( (be = select_backend( nbase, manageDSAit, 1 )) == NULL ) {
|
||||
struct berval **ref = referral_rewrite( default_referral,
|
||||
NULL, pbase->bv_val, scope );
|
||||
|
||||
|
@ -862,8 +862,8 @@ LDAP_SLAPD_V (int) slapMode;
|
||||
#define SLAP_TRUNCATE_MODE 0x0100
|
||||
|
||||
struct slap_replica_info {
|
||||
char *ri_host; /* supersedes be_replica */
|
||||
char **ri_nsuffix; /* array of suffixes this replica accepts */
|
||||
char *ri_host; /* supersedes be_replica */
|
||||
struct berval **ri_nsuffix; /* array of suffixes this replica accepts */
|
||||
};
|
||||
|
||||
struct slap_limits_set {
|
||||
@ -1245,7 +1245,7 @@ typedef struct slap_gacl {
|
||||
ObjectClass *oc;
|
||||
AttributeDescription *at;
|
||||
int res;
|
||||
int len;
|
||||
ber_len_t len;
|
||||
char ndn[1];
|
||||
} GroupAssertion;
|
||||
|
||||
|
@ -75,7 +75,7 @@ main( int argc, char **argv )
|
||||
}
|
||||
|
||||
/* check backend */
|
||||
if( select_backend( e->e_ndn, is_entry_referral(e), nosubs ) != be ) {
|
||||
if( select_backend( &e->e_nname, is_entry_referral(e), nosubs ) != be ) {
|
||||
fprintf( stderr, "%s: line %d: "
|
||||
"database (%s) not configured to hold \"%s\"\n",
|
||||
progname, lineno,
|
||||
|
@ -221,7 +221,7 @@ slap_tool_init(
|
||||
exit( EXIT_FAILURE );
|
||||
}
|
||||
|
||||
be = select_backend( nbase->bv_val, 0, 0 );
|
||||
be = select_backend( nbase, 0, 0 );
|
||||
ber_bvfree( nbase );
|
||||
|
||||
if( be == NULL ) {
|
||||
|
Loading…
Reference in New Issue
Block a user