BerVarray memberof;
memberof_is_t what;
} memberof_cbinfo_t;
-
+
+static void
+memberof_set_backend( Operation *op_target, Operation *op, slap_overinst *on )
+{
+ BackendInfo *bi = op->o_bd->bd_info;
+
+ if ( bi->bi_type == memberof.on_bi.bi_type )
+ op_target->o_bd->bd_info = (BackendInfo *)on->on_info;
+}
+
static int
memberof_isGroupOrMember_cb( Operation *op, SlapReply *rs )
{
op2.ors_filterstr = mo->mo_groupFilterstr;
op2.ors_filter = &mo->mo_groupFilter;
- op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+ memberof_set_backend( &op2, op, on );
(void)op->o_bd->be_search( &op2, &rs2 );
op2.o_bd->bd_info = bi;
op2.ors_filterstr = mo->mo_memberFilterstr;
op2.ors_filter = &mo->mo_memberFilter;
- op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+ memberof_set_backend( &op2, op, on );
(void)op->o_bd->be_search( &op2, &rs2 );
op2.o_bd->bd_info = bi;
oex.oe_key = (void *)&memberof;
LDAP_SLIST_INSERT_HEAD(&op2.o_extra, &oex, oe_next);
- op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+ memberof_set_backend( &op2, op, on );
(void)op->o_bd->be_modify( &op2, &rs2 );
op2.o_bd->bd_info = bi;
LDAP_SLIST_REMOVE(&op2.o_extra, &oex, OpExtra, oe_next);
oex.oe_key = (void *)&memberof;
LDAP_SLIST_INSERT_HEAD(&op2.o_extra, &oex, oe_next);
- op2.o_bd->bd_info = (BackendInfo *)on->on_info;
+ memberof_set_backend( &op2, op, on );
(void)op->o_bd->be_modify( &op2, &rs2 );
op2.o_bd->bd_info = bi;
LDAP_SLIST_REMOVE(&op2.o_extra, &oex, OpExtra, oe_next);