X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foperational.c;h=b64bc22cd2d72f48b9b9292514f6949bb2fabf54;hb=20965abe9c5bb80d79e5ad791cd2b59ec60259b5;hp=d66d54b0937592dfd761bacad698d456b6ee6a0e;hpb=cd9a9c628dd08435dff10b25eb9c6de5f7f4a604;p=openldap diff --git a/servers/slapd/operational.c b/servers/slapd/operational.c index d66d54b093..b64bc22cd2 100644 --- a/servers/slapd/operational.c +++ b/servers/slapd/operational.c @@ -27,7 +27,7 @@ slap_operational_subschemaSubentry( Backend *be ) Attribute *a; /* The backend wants to take care of it */ - if ( be && be->be_schemadn.bv_val ) return NULL; + if ( be && be!= frontendDB && be->be_schemadn.bv_val ) return NULL; a = ch_malloc( sizeof( Attribute ) ); a->a_desc = slap_schema.si_ad_subschemaSubentry; @@ -48,18 +48,37 @@ slap_operational_subschemaSubentry( Backend *be ) return a; } +Attribute * +slap_operational_entryDN( Entry *e ) +{ + Attribute *a; + + a = ch_malloc( sizeof( Attribute ) ); + a->a_desc = slap_schema.si_ad_entryDN; + + a->a_vals = ch_malloc( 2 * sizeof( struct berval ) ); + ber_dupbv( a->a_vals, &e->e_name ); + a->a_vals[1].bv_len = 0; + a->a_vals[1].bv_val = NULL; + + a->a_nvals = ch_malloc( 2 * sizeof( struct berval ) ); + ber_dupbv( a->a_nvals, &e->e_nname ); + a->a_nvals[1].bv_len = 0; + a->a_nvals[1].bv_val = NULL; + + a->a_next = NULL; + a->a_flags = 0; + + return a; +} + Attribute * slap_operational_hasSubordinate( int hs ) { Attribute *a; struct berval val; - if ( hs ) { - val = slap_true_bv; - - } else { - val = slap_false_bv; - } + val = hs ? slap_true_bv : slap_false_bv; a = ch_malloc( sizeof( Attribute ) ); a->a_desc = slap_schema.si_ad_hasSubordinates;