+ struct berval dn;
+
+ /* check scope */
+ if ( !scopeok && op->ors_scope == LDAP_SCOPE_ONELEVEL ) {
+ if ( !be_issuffix( op->o_bd, &e->e_nname ) ) {
+ dnParent( &e->e_nname, &dn );
+ scopeok = dn_match( &dn, &realbase );
+ } else {
+ scopeok = (realbase.bv_len == 0);
+ }
+
+ } else if ( !scopeok
+ && op->ors_scope == LDAP_SCOPE_SUBTREE )
+ {
+ scopeok = dnIsSuffix( &e->e_nname, &realbase );
+
+#ifdef LDAP_SCOPE_SUBORDINATE
+ } else if ( !scopeok
+ && op->ors_scope == LDAP_SCOPE_SUBORDINATE )
+ {
+ scopeok = !dn_match( &e->e_nname, &realbase )
+ && dnIsSuffix( &e->e_nname, &realbase );
+#endif
+
+ } else {
+ scopeok = 1;
+ }
+
+ if( scopeok ) {
+ BerVarray erefs = get_entry_referrals( op, e );
+ rs->sr_ref = referral_rewrite( erefs,
+ &e->e_name, NULL,
+ op->ors_scope == LDAP_SCOPE_ONELEVEL
+ ? LDAP_SCOPE_BASE
+ : LDAP_SCOPE_SUBTREE );
+
+ ber_bvarray_free( erefs );