From: Kurt Zeilenga Date: Wed, 9 Jan 2002 19:43:15 +0000 (+0000) Subject: Round 2 of subentry changes X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~223 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=74421a28ec1e9739b972294f28d9c6deee1c67bb;p=openldap Round 2 of subentry changes --- diff --git a/servers/slapd/back-bdb/search.c b/servers/slapd/back-bdb/search.c index d444c7844c..2092951c50 100644 --- a/servers/slapd/back-bdb/search.c +++ b/servers/slapd/back-bdb/search.c @@ -309,6 +309,23 @@ bdb_search( goto loop_continue; } + if ( is_entry_subentry( e ) ) { + if( scope != LDAP_SCOPE_BASE ) { + if(!get_subentries_visibility( op )) { + /* only subentries are visible */ + goto loop_continue; + } + } else if ( get_subentries( op ) && + !get_subentries_visibility( op )) + { + /* only subentries are visible */ + goto loop_continue; + } + } else if ( get_subentries_visibility( op )) { + /* only subentries are visible */ + goto loop_continue; + } + #ifdef BDB_ALIASES if ( deref & LDAP_DEREF_SEARCHING && is_entry_alias( e ) ) { Entry *matched; diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index 315ed85df2..07011b8e28 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -800,6 +800,8 @@ LDAP_SLAPD_F (int) is_entry_objectclass LDAP_P(( 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_subentry(e) \ + is_entry_objectclass((e), slap_schema.si_oc_subentry) /* diff --git a/servers/slapd/schema_prep.c b/servers/slapd/schema_prep.c index ce8891b4ed..0a288c7fc6 100644 --- a/servers/slapd/schema_prep.c +++ b/servers/slapd/schema_prep.c @@ -124,7 +124,7 @@ static struct slap_schema_oc_map { { "alias", offsetof(struct slap_internal_schema, si_oc_alias) }, { "referral", offsetof(struct slap_internal_schema, si_oc_referral) }, { "LDAProotDSE", offsetof(struct slap_internal_schema, si_oc_rootdse) }, - { "LDAPsubentry", offsetof(struct slap_internal_schema, si_oc_subentry) }, + { "subentry", offsetof(struct slap_internal_schema, si_oc_subentry) }, { "subschema", offsetof(struct slap_internal_schema, si_oc_subschema) }, { NULL, 0 } };