More struct berval DNs

This commit is contained in:
Kurt Zeilenga 2001-12-25 19:48:26 +00:00
parent 7431cb9eee
commit 2dd27b0786
32 changed files with 152 additions and 117 deletions

View file

@ -117,7 +117,7 @@ access_allowed(
assert( be != NULL );
/* grant database root access */
if ( be != NULL && be_isroot( be, op->o_ndn.bv_val ) ) {
if ( be != NULL && be_isroot( be, &op->o_ndn ) ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "acl", LDAP_LEVEL_INFO,
"access_allowed: conn %d root access granted\n",
@ -764,7 +764,7 @@ acl_mask(
buf[sizeof(buf) - 1] = 0;
}
if (backend_group(be, conn, op, e, buf, op->o_ndn.bv_val,
if (backend_group(be, conn, op, e, buf, &op->o_ndn,
b->a_group_oc, b->a_group_at) != 0)
{
continue;
@ -1013,7 +1013,7 @@ acl_check_modlist(
assert( be != NULL );
/* short circuit root database access */
if ( be_isroot( be, op->o_ndn.bv_val ) ) {
if ( be_isroot( be, &op->o_ndn ) ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
"acl_check_modlist: conn %d access granted to root user\n",
@ -1213,9 +1213,8 @@ aci_set_gather (void *cookie, char *name, char *attr)
const char *text;
AttributeDescription *desc = NULL;
if (slap_str2ad(attr, &desc, &text) == LDAP_SUCCESS) {
backend_attribute(cp->be, NULL /*cp->conn*/,
NULL /*cp->op*/, cp->e,
ndn, desc, &bvals);
backend_attribute(cp->be, NULL, NULL,
cp->e, ndn, desc, &bvals);
if (bvals != NULL) {
for (i = 0; bvals[i] != NULL; i++) { }
vals = ch_calloc(i + 1, sizeof(char *));
@ -1283,7 +1282,7 @@ aci_match_set (
&& slap_str2ad(setat, &desc, &text) == LDAP_SUCCESS )
{
backend_attribute(be, NULL, NULL, e,
subjdn, desc, &bvals);
subjdn, desc, &bvals);
if ( bvals != NULL ) {
if ( bvals[0] != NULL )
set = ch_strdup(bvals[0]->bv_val);
@ -1517,7 +1516,7 @@ aci_group_member (
if (grp_oc != NULL && grp_ad != NULL && grpdn != NULL) {
string_expand(grpdn, 1024, subjdn, e->e_ndn, matches);
if ( dn_normalize(grpdn) != NULL ) {
rc = (backend_group(be, conn, op, e, grpdn, op->o_ndn.bv_val, grp_oc, grp_ad) == 0);
rc = (backend_group(be, conn, op, e, grpdn, &op->o_ndn, grp_oc, grp_ad) == 0);
}
}

View file

@ -255,7 +255,7 @@ do_add( Connection *conn, Operation *op )
}
/* check for referrals */
rc = backend_check_referrals( be, conn, op, e->e_dn, e->e_ndn );
rc = backend_check_referrals( be, conn, op, &e->e_name, &e->e_nname );
if ( rc != LDAP_SUCCESS ) {
goto done;
}

View file

@ -192,7 +192,7 @@ retry: rc = txn_abort( ltid );
* must be adding entry to at suffix
* or with parent ""
*/
if ( !be_isroot( be, op->o_ndn.bv_val )) {
if ( !be_isroot( be, &op->o_ndn )) {
if ( be_issuffix( be, "" ) || be_isupdate( be, &op->o_ndn ) ) {
p = (Entry *)&slap_entry_root;

View file

@ -161,7 +161,7 @@ retry: /* transaction retry */
} else {
/* no parent, must be root to delete */
if( ! be_isroot( be, op->o_ndn.bv_val ) ) {
if( ! be_isroot( be, &op->o_ndn ) ) {
if ( be_issuffix( be, "" ) || be_isupdate( be, &op->o_ndn ) ) {
p = (Entry *)&slap_entry_root;

View file

@ -578,7 +578,7 @@ int bdb_build_tree(
* Note that this code always uses be_suffix[0], so defining
* multiple suffixes for a single backend won't work!
*/
bdb->bi_sufflen = strlen(be->be_suffix[0]);
bdb->bi_sufflen = be->be_suffix[0]->bv_len;
rdns = ldap_explode_dn(be->be_nsuffix[0]->bv_val, 0);
for (i=0; rdns[i]; i++);
@ -639,7 +639,7 @@ int bdb_fix_dn(
ptr--;
nptr--;
strcpy(ptr, be->be_suffix[0]);
strcpy(ptr, be->be_suffix[0]->bv_val);
strcpy(nptr, be->be_nsuffix[0]->bv_val);
return 0;

View file

@ -142,7 +142,7 @@ bdb_db_open( BackendDB *be )
Debug( LDAP_DEBUG_ARGS,
"bdb_db_open: %s\n",
be->be_suffix[0], 0, 0 );
be->be_suffix[0]->bv_val, 0, 0 );
/* we should check existance of dbenv_home and db_directory */
@ -164,7 +164,7 @@ bdb_db_open( BackendDB *be )
bdb->bi_txn_cp = 0;
}
bdb->bi_dbenv->set_errpfx( bdb->bi_dbenv, be->be_suffix[0] );
bdb->bi_dbenv->set_errpfx( bdb->bi_dbenv, be->be_suffix[0]->bv_val );
bdb->bi_dbenv->set_errcall( bdb->bi_dbenv, bdb_errcall );
#ifdef BDB_SUBDIRS

View file

@ -212,7 +212,7 @@ retry: /* transaction retry */
} else {
/* no parent, modrdn entry directly under root */
isroot = be_isroot( be, op->o_ndn.bv_val );
isroot = be_isroot( be, &op->o_ndn );
if ( ! isroot ) {
if ( be_issuffix( be, "" ) || be_isupdate( be, &op->o_ndn ) ) {
@ -328,7 +328,7 @@ retry: /* transaction retry */
} else {
if ( isroot == -1 ) {
isroot = be_isroot( be, op->o_ndn.bv_val );
isroot = be_isroot( be, &op->o_ndn );
}
np_dn = ch_strdup( "" );

View file

@ -157,7 +157,7 @@ bdb_search(
}
/* if not root, get appropriate limits */
if ( be_isroot( be, op->o_ndn.bv_val ) ) {
if ( be_isroot( be, &op->o_ndn ) ) {
isroot = 1;
} else {
( void ) get_limits( be, op->o_ndn.bv_val, &limit );

View file

@ -85,7 +85,7 @@ ldap_back_search(
}
/* if not root, get appropriate limits */
if ( be_isroot( be, op->o_ndn.bv_val ) ) {
if ( be_isroot( be, &op->o_ndn ) ) {
isroot = 1;
} else {
( void ) get_limits( be, op->o_ndn.bv_val, &limit );

View file

@ -205,7 +205,7 @@ ldbm_back_add(
}
/* no parent, must be adding entry to root */
if ( !be_isroot( be, op->o_ndn.bv_val ) ) {
if ( !be_isroot( be, &op->o_ndn ) ) {
if ( be_issuffix( be, "" ) || be_isupdate( be, &op->o_ndn ) ) {
p = (Entry *)&slap_entry_root;

View file

@ -153,7 +153,7 @@ ldbm_back_delete(
} else {
/* no parent, must be root to delete */
if( ! be_isroot( be, op->o_ndn.bv_val ) ) {
if( ! be_isroot( be, &op->o_ndn ) ) {
if ( be_issuffix( be, "" ) || be_isupdate( be, &op->o_ndn ) ) {
p = (Entry *)&slap_entry_root;

View file

@ -206,8 +206,8 @@ ldbm_back_modrdn(
} else {
/* no parent, must be root to modify rdn */
isroot = be_isroot( be, op->o_ndn.bv_val );
if ( ! be_isroot ) {
isroot = be_isroot( be, &op->o_ndn );
if ( ! isroot ) {
if ( be_issuffix( be, "" ) || be_isupdate( be, &op->o_ndn ) ) {
p = (Entry *)&slap_entry_root;
@ -382,10 +382,10 @@ ldbm_back_modrdn(
/* no parent, must be root to modify newSuperior */
if ( isroot == -1 ) {
isroot = be_isroot( be, op->o_ndn.bv_val );
isroot = be_isroot( be, &op->o_ndn );
}
if ( ! be_isroot ) {
if ( ! isroot ) {
if ( be_issuffix( be, "" ) || be_isupdate( be, &op->o_ndn ) ) {
np = (Entry *)&slap_entry_root;

View file

@ -206,7 +206,7 @@ searchit:
}
/* if not root, get appropriate limits */
if ( be_isroot( be, op->o_ndn.bv_val ) ) {
if ( be_isroot( be, &op->o_ndn ) ) {
isroot = 1;
} else {
( void ) get_limits( be, op->o_ndn.bv_val, &limit );

View file

@ -149,7 +149,7 @@ meta_back_search(
nbaselen = strlen( nbase );
/* if not root, get appropriate limits */
if ( be_isroot( be, op->o_ndn.bv_val ) ) {
if ( be_isroot( be, &op->o_ndn ) ) {
isroot = 1;
} else {
( void ) get_limits( be, op->o_ndn.bv_val, &limit );

View file

@ -121,8 +121,7 @@ monitor_subsys_database_init(
attr_merge( e, monitor_ad_desc, bv );
for ( j = 0; be->be_suffix[j]; j++ ) {
val.bv_val = be->be_suffix[j];
val.bv_len = strlen( val.bv_val );
val = *be->be_suffix[j];
attr_merge( e, ad_nc, bv );
attr_merge( e_database, ad_nc, bv );

View file

@ -218,8 +218,9 @@ monitor_back_db_init(
struct monitorinfo *mi;
Entry *e, *e_tmp;
struct monitorentrypriv *mp;
int i;
char buf[1024], *ndn, *end_of_line;
int i, rc;
char buf[1024], *end_of_line;
struct berval dn, *ndn;
const char *text;
struct berval val, *bv[2] = { &val, NULL };
@ -241,10 +242,24 @@ monitor_back_db_init(
}
monitor_defined++;
ndn = ch_strdup( SLAPD_MONITOR_DN );
charray_add( &be->be_suffix, ndn );
dn_normalize( ndn );
ber_bvecadd( &be->be_nsuffix, ber_bvstr( ndn ) );
ndn = NULL;
dn.bv_val = SLAPD_MONITOR_DN;
dn.bv_len = sizeof( SLAPD_MONITOR_DN ) - 1;
rc = dnNormalize( NULL, &dn, &ndn );
if( rc != LDAP_SUCCESS ) {
#ifdef NEW_LOGGING
LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
"monitor DN \"" SLAPD_MONITOR_DN "\" backend is allowed\n" ));
#else
Debug( LDAP_DEBUG_ANY,
"monitor DN \"" SLAPD_MONITOR_DN "\" backend is allowed\n",
0, 0, 0 );
#endif
return -1;
}
ber_bvecadd( &be->be_nsuffix, ndn );
mi = ( struct monitorinfo * )ch_calloc( sizeof( struct monitorinfo ), 1 );
ldap_pvt_thread_mutex_init( &mi->mi_cache_mutex );

View file

@ -191,7 +191,7 @@ passwd_back_search(
int i;
for( i=0; be->be_nsuffix[i] != NULL; i++ ) {
if( dn_issuffix( nbase, be->be_nsuffix[i]->bv_val ) ) {
matched = be->be_suffix[i];
matched = be->be_suffix[i]->bv_val;
break;
}
}
@ -293,10 +293,13 @@ pw2entry( Backend *be, struct passwd *pw, char *rdn )
attr_merge( e, ad_objectClass, vals );
/* rdn attribute type should be a configuratable item */
sprintf( buf, "uid=%s,%s", pw->pw_name, be->be_suffix[0] );
e->e_dn = ch_strdup( buf );
e->e_ndn = ch_strdup( buf );
(void) dn_normalize( e->e_ndn );
sprintf( buf, "uid=%s,%s", pw->pw_name, be->be_suffix[0]->bv_val );
e->e_name.bv_val = ch_strdup( buf );
e->e_name.bv_len = strlen( e->e_name.bv_val );
e->e_nname.bv_val = ch_strdup( buf );
(void) dn_normalize( e->e_nname );
e->e_nname.bv_len = strlen( e->e_name.bv_val );
val.bv_val = pw->pw_name;
val.bv_len = strlen( pw->pw_name );

View file

@ -111,6 +111,6 @@ print_suffixes(
int i;
for ( i = 0; be->be_suffix[i] != NULL; i++ ) {
fprintf( fp, "suffix: %s\n", be->be_suffix[i] );
fprintf( fp, "suffix: %s\n", be->be_suffix[i].bv_val );
}
}

View file

@ -547,7 +547,7 @@ int backsql_search(BackendDB *be,Connection *conn,Operation *op,
/* TimesTen : Pass it along to the lower level routines */
srch_info.isTimesTen = bi->isTimesTen;
if (tlimit == 0 && be_isroot(be,op->o_ndn.bv_val))
if (tlimit == 0 && be_isroot(be,&op->o_ndn))
{
tlimit = -1; /* allow root to set no limit */
}
@ -558,7 +558,7 @@ int backsql_search(BackendDB *be,Connection *conn,Operation *op,
stoptime = op->o_time + tlimit;
}
if (slimit == 0 && be_isroot(be,op->o_ndn.bv_val))
if (slimit == 0 && be_isroot(be,&op->o_ndn))
{
slimit = -1; /* allow root to set no limit */
}

View file

@ -241,11 +241,11 @@ int backend_startup(Backend *be)
#ifdef NEW_LOGGING
LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
"backend_startup: starting \"%s\"\n",
be->be_suffix[0] ));
be->be_suffix[0]->bv_val ));
#else
Debug( LDAP_DEBUG_TRACE,
"backend_startup: starting \"%s\"\n",
be->be_suffix[0], 0, 0 );
be->be_suffix[0]->bv_val, 0, 0 );
#endif
if ( be->bd_info->bi_open ) {
@ -417,7 +417,7 @@ int backend_destroy(void)
backendDB[i].bd_info->bi_db_destroy(
&backendDB[i] );
}
charray_free( backendDB[i].be_suffix );
ber_bvecfree( backendDB[i].be_suffix );
ber_bvecfree( backendDB[i].be_nsuffix );
free( backendDB[i].be_rootdn.bv_val );
free( backendDB[i].be_rootndn.bv_val );
@ -594,11 +594,9 @@ be_issuffix(
}
int
be_isroot( Backend *be, const char *ndn )
be_isroot( Backend *be, struct berval *ndn )
{
int rc;
if ( ndn == NULL || *ndn == '\0' ) {
if ( !ndn->bv_len ) {
return( 0 );
}
@ -606,9 +604,7 @@ be_isroot( Backend *be, const char *ndn )
return( 0 );
}
rc = strcmp( be->be_rootndn.bv_val, ndn ) ? 0 : 1;
return(rc);
return strcmp( be->be_rootndn.bv_val, ndn->bv_val ) ? 0 : 1;
}
int
@ -638,12 +634,16 @@ be_root_dn( Backend *be )
int
be_isroot_pw( Backend *be,
Connection *conn,
const char *ndn,
const char *dn,
struct berval *cred )
{
int result;
if ( ! be_isroot( be, ndn ) ) {
struct berval ndn;
ndn.bv_val = (char *) dn;
ndn.bv_len = dn ? strlen( dn ) : 0;
if ( ! be_isroot( be, &ndn ) ) {
return 0;
}
@ -960,8 +960,8 @@ int backend_check_referrals(
Backend *be,
Connection *conn,
Operation *op,
const char *dn,
const char *ndn )
struct berval *dn,
struct berval *ndn )
{
int rc = LDAP_SUCCESS;
@ -969,7 +969,7 @@ int backend_check_referrals(
const char *text;
rc = be->be_chk_referrals( be,
conn, op, dn, ndn, &text );
conn, op, dn->bv_val, ndn->bv_val, &text );
if( rc != LDAP_SUCCESS && rc != LDAP_REFERRAL ) {
send_ldap_result( conn, op, rc,
@ -987,7 +987,7 @@ backend_group(
Operation *op,
Entry *target,
const char *gr_ndn,
const char *op_ndn,
struct berval *op_ndn,
ObjectClass *group_oc,
AttributeDescription *group_at
)
@ -1029,7 +1029,7 @@ backend_group(
if( be->be_group ) {
int res = be->be_group( be, conn, op,
target, gr_ndn, op_ndn,
target, gr_ndn, op_ndn->bv_val,
group_oc, group_at );
if (op->o_tag != LDAP_REQ_BIND) {
@ -1109,8 +1109,7 @@ Attribute *backend_operational(
* add them to the attribute list
*/
if ( ( opattrs || attrs ) && be && be->be_operational != NULL ) {
( void )be->be_operational( be, conn, op, e,
attrs, opattrs, ap );
( void )be->be_operational( be, conn, op, e, attrs, opattrs, ap );
}
return a;

View file

@ -328,7 +328,7 @@ glue_back_search (
if (scope == LDAP_SCOPE_ONELEVEL &&
!strcmp (gi->n[i].pdn, ndn)) {
rc = be->be_search (be, conn, op,
be->be_suffix[0],
be->be_suffix[0]->bv_val,
be->be_nsuffix[0]->bv_val,
LDAP_SCOPE_BASE, deref,
s2limit, t2limit, filter, filterstr,
@ -336,7 +336,7 @@ glue_back_search (
} else if (scope == LDAP_SCOPE_SUBTREE &&
dnIsSuffix(be->be_nsuffix[0], &bv)) {
rc = be->be_search (be, conn, op,
be->be_suffix[0],
be->be_suffix[0]->bv_val,
be->be_nsuffix[0]->bv_val,
scope, deref,
s2limit, t2limit, filter, filterstr,

View file

@ -260,7 +260,7 @@ do_compare(
}
/* check for referrals */
rc = backend_check_referrals( be, conn, op, pdn->bv_val, ndn->bv_val );
rc = backend_check_referrals( be, conn, op, pdn, ndn );
if ( rc != LDAP_SUCCESS ) {
goto cleanup;
}

View file

@ -979,11 +979,11 @@ read_config( const char *fname )
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffix already served by a preceding "
"backend \"%s\"\n", fname, lineno,
tmp_be->be_suffix[0] ));
tmp_be->be_suffix[0]->bv_val ));
#else
Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix "
"already served by a preceeding backend \"%s\"\n",
fname, lineno, tmp_be->be_suffix[0] );
fname, lineno, tmp_be->be_suffix[0]->bv_val );
#endif
ber_bvfree( pdn );
ber_bvfree( ndn );
@ -1003,7 +1003,7 @@ read_config( const char *fname )
#endif
}
charray_add( &be->be_suffix, pdn->bv_val );
ber_bvecadd( &be->be_suffix, pdn );
ber_bvecadd( &be->be_nsuffix, ndn );
/* set database suffixAlias */
@ -1107,12 +1107,12 @@ read_config( const char *fname )
LDAP_LOG(( "config", LDAP_LEVEL_INFO,
"%s: line %d: suffixAlias served by a preceeding "
"backend \"%s\"\n",
fname, lineno, tmp_be->be_suffix[0] ));
fname, lineno, tmp_be->be_suffix[0]->bv_val ));
#else
Debug( LDAP_DEBUG_ANY,
"%s: line %d: suffixAlias served by"
" a preceeding backend \"%s\"\n",
fname, lineno, tmp_be->be_suffix[0] );
fname, lineno, tmp_be->be_suffix[0]->bv_val );
#endif
ber_bvfree( palias );
return -1;
@ -1158,13 +1158,13 @@ read_config( const char *fname )
#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] ));
"a preceeding backend \"%s\"\n",
fname, lineno, tmp_be->be_suffix[0]->bv_val ));
#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] );
" a preceeding backend \"%s\"\n",
fname, lineno, tmp_be->be_suffix[0]->bv_val );
#endif
ber_bvfree( palias );
ber_bvfree( paliased );

View file

@ -81,7 +81,7 @@ config_info(
strcpy( buf, backends[i].be_type );
for ( j = 0; backends[i].be_suffix[j] != NULL; j++ ) {
strcat( buf, " : " );
strcat( buf, backends[i].be_suffix[j] );
strcat( buf, backends[i].be_suffix[j]->bv_val );
}
val.bv_val = buf;
val.bv_len = strlen( buf );

View file

@ -163,7 +163,7 @@ do_delete(
}
/* check for referrals */
rc = backend_check_referrals( be, conn, op, pdn->bv_val, ndn->bv_val );
rc = backend_check_referrals( be, conn, op, pdn, ndn );
if ( rc != LDAP_SUCCESS ) {
goto cleanup;
}

View file

@ -317,7 +317,7 @@ do_modify(
}
/* check for referrals */
rc = backend_check_referrals( be, conn, op, pdn->bv_val, ndn->bv_val );
rc = backend_check_referrals( be, conn, op, pdn, ndn );
if ( rc != LDAP_SUCCESS ) {
goto cleanup;
}

View file

@ -343,7 +343,7 @@ do_modrdn(
}
/* check for referrals */
rc = backend_check_referrals( be, conn, op, pdn->bv_val, ndn->bv_val );
rc = backend_check_referrals( be, conn, op, pdn, ndn );
if ( rc != LDAP_SUCCESS ) {
goto cleanup;
}

View file

@ -88,13 +88,20 @@ LDAP_SLAPD_F (void) acl_free LDAP_P(( AccessControl *a ));
* at.c
*/
LDAP_SLAPD_F (void) at_config LDAP_P(( const char *fname, int lineno, int argc, char **argv ));
LDAP_SLAPD_F (AttributeType *) at_find LDAP_P(( const char *name ));
LDAP_SLAPD_F (int) at_find_in_list LDAP_P(( AttributeType *sat, AttributeType **list ));
LDAP_SLAPD_F (int) at_append_to_list LDAP_P(( AttributeType *sat, AttributeType ***listp ));
LDAP_SLAPD_F (int) at_delete_from_list LDAP_P(( int pos, AttributeType ***listp ));
LDAP_SLAPD_F (void) at_config LDAP_P((
const char *fname, int lineno,
int argc, char **argv ));
LDAP_SLAPD_F (AttributeType *) at_find LDAP_P((
const char *name ));
LDAP_SLAPD_F (int) at_find_in_list LDAP_P((
AttributeType *sat, AttributeType **list ));
LDAP_SLAPD_F (int) at_append_to_list LDAP_P((
AttributeType *sat, AttributeType ***listp ));
LDAP_SLAPD_F (int) at_delete_from_list LDAP_P((
int pos, AttributeType ***listp ));
LDAP_SLAPD_F (int) at_schema_info LDAP_P(( Entry *e ));
LDAP_SLAPD_F (int) at_add LDAP_P(( LDAPAttributeType *at, const char **err ));
LDAP_SLAPD_F (int) at_add LDAP_P((
LDAPAttributeType *at, const char **err ));
LDAP_SLAPD_F (int) is_at_subtype LDAP_P((
AttributeType *sub,
@ -117,9 +124,12 @@ LDAP_SLAPD_F (Attribute *) attr_dup LDAP_P(( Attribute *a ));
LDAP_SLAPD_F (int) attr_merge LDAP_P(( Entry *e,
AttributeDescription *desc,
struct berval **vals ));
LDAP_SLAPD_F (Attribute *) attrs_find LDAP_P(( Attribute *a, AttributeDescription *desc ));
LDAP_SLAPD_F (Attribute *) attr_find LDAP_P(( Attribute *a, AttributeDescription *desc ));
LDAP_SLAPD_F (int) attr_delete LDAP_P(( Attribute **attrs, AttributeDescription *desc ));
LDAP_SLAPD_F (Attribute *) attrs_find LDAP_P((
Attribute *a, AttributeDescription *desc ));
LDAP_SLAPD_F (Attribute *) attr_find LDAP_P((
Attribute *a, AttributeDescription *desc ));
LDAP_SLAPD_F (int) attr_delete LDAP_P((
Attribute **attrs, AttributeDescription *desc ));
LDAP_SLAPD_F (void) attrs_free LDAP_P(( Attribute *a ));
LDAP_SLAPD_F (Attribute *) attrs_dup LDAP_P(( Attribute *a ));
@ -157,8 +167,10 @@ LDAP_SLAPD_F (BackendDB *) select_backend LDAP_P((
int manageDSAit,
int noSubordinates ));
LDAP_SLAPD_F (int) be_issuffix LDAP_P(( Backend *be, const char *suffix ));
LDAP_SLAPD_F (int) be_isroot LDAP_P(( Backend *be, const char *ndn ));
LDAP_SLAPD_F (int) be_issuffix LDAP_P(( Backend *be,
const char *suffix ));
LDAP_SLAPD_F (int) be_isroot LDAP_P(( Backend *be,
struct berval *ndn ));
LDAP_SLAPD_F (int) be_isroot_pw LDAP_P(( Backend *be,
Connection *conn, const char *ndn, struct berval *cred ));
LDAP_SLAPD_F (int) be_isupdate LDAP_P(( Backend *be, struct berval *ndn ));
@ -181,8 +193,8 @@ LDAP_SLAPD_F( int ) backend_check_referrals LDAP_P((
BackendDB *be,
Connection *conn,
Operation *op,
const char *dn,
const char *ndn ));
struct berval *dn,
struct berval *ndn ));
LDAP_SLAPD_F (int) backend_connection_init LDAP_P((Connection *conn));
LDAP_SLAPD_F (int) backend_connection_destroy LDAP_P((Connection *conn));
@ -192,7 +204,7 @@ LDAP_SLAPD_F (int) backend_group LDAP_P((BackendDB *be,
Operation *op,
Entry *target,
const char *gr_ndn,
const char *op_ndn,
struct berval *op_ndn,
ObjectClass *group_oc,
AttributeDescription *group_at
));
@ -304,15 +316,17 @@ LDAP_SLAPD_F (long) connection_init LDAP_P((
LDAP_SLAPD_F (void) connection_closing LDAP_P(( Connection *c ));
LDAP_SLAPD_F (int) connection_state_closing LDAP_P(( Connection *c ));
LDAP_SLAPD_F (const char *) connection_state2str LDAP_P(( int state )) LDAP_GCCATTR((const));
LDAP_SLAPD_F (const char *) connection_state2str LDAP_P(( int state ))
LDAP_GCCATTR((const));
LDAP_SLAPD_F (int) connection_write LDAP_P((ber_socket_t s));
LDAP_SLAPD_F (int) connection_read LDAP_P((ber_socket_t s));
LDAP_SLAPD_F (unsigned long) connections_nextid(void);
LDAP_SLAPD_F (Connection *) connection_first LDAP_P((ber_socket_t *));
LDAP_SLAPD_F (Connection *) connection_next LDAP_P((Connection *, ber_socket_t *));
LDAP_SLAPD_F (Connection *) connection_first LDAP_P(( ber_socket_t * ));
LDAP_SLAPD_F (Connection *) connection_next LDAP_P((
Connection *, ber_socket_t *));
LDAP_SLAPD_F (void) connection_done LDAP_P((Connection *));
LDAP_SLAPD_F (void) connection2anonymous LDAP_P((Connection *));
@ -406,7 +420,8 @@ typedef int (*SLAP_EXTOP_MAIN_FN) LDAP_P((
typedef int (*SLAP_EXTOP_GETOID_FN) LDAP_P((
int index, char *oid, int blen ));
LDAP_SLAPD_F (int) load_extension LDAP_P((const void *module, const char *file_name));
LDAP_SLAPD_F (int) load_extension LDAP_P((
const void *module, const char *file_name));
LDAP_SLAPD_F (char *) get_supported_extension LDAP_P((int index));
LDAP_SLAPD_F (int) load_extop LDAP_P((
@ -449,7 +464,7 @@ LDAP_SLAPD_F (int) add_limits LDAP_P((
Backend *be, int type, const char *pattern,
struct slap_limits_set *limit ));
LDAP_SLAPD_F (int) parse_limits LDAP_P((
Backend *be, const char *fname, int lineno, int argc, char **argv ));
Backend *be, const char *fname, int lineno, int argc, char **argv ));
LDAP_SLAPD_F (int) parse_limit LDAP_P(( const char *arg,
struct slap_limits_set *limit ));
@ -690,8 +705,10 @@ LDAP_SLAPD_F (int) is_object_subclass LDAP_P((
ObjectClass *sup ));
LDAP_SLAPD_F (Syntax *) syn_find LDAP_P((const char *synname));
LDAP_SLAPD_F (Syntax *) syn_find_desc LDAP_P((const char *syndesc, int *slen));
LDAP_SLAPD_F (Syntax *) syn_find LDAP_P((
const char *synname ));
LDAP_SLAPD_F (Syntax *) syn_find_desc LDAP_P((
const char *syndesc, int *slen ));
#ifdef SLAPD_BINARY_CONVERSION
LDAP_SLAPD_F (int) syn_add LDAP_P((
LDAPSyntax *syn,
@ -701,7 +718,7 @@ LDAP_SLAPD_F (int) syn_add LDAP_P((
slap_syntax_transform_func *pretty,
slap_syntax_transform_func *ber2str,
slap_syntax_transform_func *str2ber,
const char **err));
const char **err ));
#else
LDAP_SLAPD_F (int) syn_add LDAP_P((
LDAPSyntax *syn,
@ -709,11 +726,11 @@ LDAP_SLAPD_F (int) syn_add LDAP_P((
slap_syntax_validate_func *validate,
slap_syntax_transform_func *normalize,
slap_syntax_transform_func *pretty,
const char **err));
const char **err ));
#endif
LDAP_SLAPD_F (MatchingRule *) mr_find LDAP_P((const char *mrname));
LDAP_SLAPD_F (int) mr_add LDAP_P((LDAPMatchingRule *mr,
LDAP_SLAPD_F (int) mr_add LDAP_P(( LDAPMatchingRule *mr,
unsigned usage,
slap_mr_convert_func *convert,
slap_mr_normalize_func *normalize,
@ -721,7 +738,7 @@ LDAP_SLAPD_F (int) mr_add LDAP_P((LDAPMatchingRule *mr,
slap_mr_indexer_func *indexer,
slap_mr_filter_func *filter,
MatchingRule * associated,
const char **err));
const char **err ));
LDAP_SLAPD_F (int) register_syntax LDAP_P((
const char *desc,
@ -744,8 +761,10 @@ LDAP_SLAPD_F (int) schema_info LDAP_P(( Entry **entry, const char **text ));
LDAP_SLAPD_F (int) is_entry_objectclass LDAP_P((
Entry *, ObjectClass *oc ));
#define is_entry_alias(e) is_entry_objectclass((e), slap_schema.si_oc_alias)
#define is_entry_referral(e) is_entry_objectclass((e), slap_schema.si_oc_referral)
#define is_entry_alias(e) \
is_entry_objectclass((e), slap_schema.si_oc_alias)
#define is_entry_referral(e) \
is_entry_objectclass((e), slap_schema.si_oc_referral)
/*

View file

@ -87,8 +87,7 @@ root_dse_info(
if ( backends[i].be_glueflags & SLAP_GLUE_SUBORDINATE )
continue;
for ( j = 0; backends[i].be_suffix[j] != NULL; j++ ) {
val.bv_val = backends[i].be_suffix[j];
val.bv_len = strlen( val.bv_val );
val = *backends[i].be_suffix[j];
attr_merge( e, ad_namingContexts, vals );
}
}

View file

@ -317,7 +317,7 @@ do_search(
}
/* check for referrals */
rc = backend_check_referrals( be, conn, op, pbase->bv_val, nbase->bv_val );
rc = backend_check_referrals( be, conn, op, pbase, nbase );
if ( rc != LDAP_SUCCESS ) {
goto return_results;
}

View file

@ -850,7 +850,7 @@ typedef struct slap_backend_db BackendDB; /* per backend database */
LDAP_SLAPD_V (int) nBackendInfo;
LDAP_SLAPD_V (int) nBackendDB;
LDAP_SLAPD_V (BackendInfo *) backendInfo;
LDAP_SLAPD_V (BackendInfo *) backendInfo;
LDAP_SLAPD_V (BackendDB *) backendDB;
LDAP_SLAPD_V (int) slapMode;
@ -889,9 +889,13 @@ struct slap_limits {
#define SLAP_LIMITS_ANONYMOUS 0x0006
#define SLAP_LIMITS_USERS 0x0007
regex_t lm_dn_regex; /* regex data for REGEX */
struct berval *lm_dn_pat; /* ndn for EXACT, BASE, ONE, SUBTREE,
* CHILDREN; pattern for REGEX; NULL
* for ANONYMOUS, USERS */
/*
* normalized DN for EXACT, BASE, ONE, SUBTREE, CHILDREN;
* pattern for REGEX; NULL for ANONYMOUS, USERS
*/
struct berval *lm_dn_pat;
struct slap_limits_set lm_limits;
};
@ -981,7 +985,7 @@ struct slap_backend_db {
slap_ssf_set_t be_ssf_set;
/* these should be renamed from be_ to bd_ */
char **be_suffix; /* the DN suffixes of data in this backend */
struct berval **be_suffix; /* the DN suffixes of data in this backend */
struct berval **be_nsuffix; /* the normalized DN suffixes in this backend */
struct berval **be_suffixAlias; /* pairs of DN suffix aliases and deref values */
struct berval be_rootdn; /* the magic "root" name (DN) for this db */
@ -998,6 +1002,7 @@ struct slap_backend_db {
char *be_replogfile; /* replication log file (in master) */
struct berval be_update_ndn; /* allowed to make changes (in replicas) */
struct berval **be_update_refs; /* where to refer modifying clients to */
char *be_realm;
int be_lastmod; /* keep track of lastmodified{by,time} */
#define SLAP_GLUE_INSTANCE 0x01 /* a glue backend */
@ -1005,9 +1010,6 @@ struct slap_backend_db {
#define SLAP_GLUE_LINKED 0x04 /* child is connected to parent */
int be_glueflags; /* */
char *be_realm;
void *be_private; /* anything the backend database needs */
};

View file

@ -79,7 +79,7 @@ main( int argc, char **argv )
fprintf( stderr, "%s: line %d: "
"database (%s) not configured to hold \"%s\"\n",
progname, lineno,
be ? be->be_suffix[0] : "<none>",
be ? be->be_suffix[0]->bv_val : "<none>",
e->e_dn );
fprintf( stderr, "%s: line %d: "
"database (%s) not configured to hold \"%s\"\n",