- op->o_dn = pConn->c_dn = be->be_rootdn;
- op->o_ndn = pConn->c_ndn = be->be_rootndn;
-
- if ( be->be_modrdn ) {
- int repl_user = be_isupdate( be, &op->o_ndn );
- if ( !be->be_update_ndn.bv_len || repl_user ) {
- rc = (*be->be_modrdn)( be, pConn, op, &pdn, &ndn,
- &pnewrdn, &nnewrdn, deloldrdn, pnewS,
- nnewS );
- if ( rc == 0 ) {
- struct slap_replog_moddn moddn;
- moddn.newrdn = &pnewrdn;
- moddn.deloldrdn = deloldrdn;
- moddn.newsup = &pnewSuperior;
- if ( log_change ) {
- replog( be, op, &pdn, &ndn, &moddn );
- }
- rc = LDAP_SUCCESS;
-
- } else {
- rc = LDAP_OTHER;
+ op->oq_modrdn.rs_newSup = NULL;
+ op->oq_modrdn.rs_nnewSup = NULL;
+ op->oq_modrdn.rs_deleteoldrdn = deloldrdn;
+
+ if ( op->o_bd->be_modrdn ) {
+ int repl_user = be_isupdate( op );
+ if ( !op->o_bd->be_update_ndn.bv_len || repl_user ) {
+ slap_callback cb = { NULL, slap_replog_cb, NULL, NULL };
+ if ( log_change ) op->o_callback = &cb;
+ if ( (*op->o_bd->be_modrdn)( op, &rs ) ) {
+ rs.sr_err = LDAP_OTHER;