Lines Matching refs:op

52 rwm_send_entry( Operation *op, SlapReply *rs );
55 rwm_op_rollback( Operation *op, SlapReply *rs, rwm_op_state *ros )
58 op->o_req_dn = ros->ro_dn;
61 op->o_req_ndn = ros->ro_ndn;
84 if ( op->orc_ava->aa_value.bv_val != ros->orc_ava->aa_value.bv_val )
85 op->o_tmpfree( op->orc_ava->aa_value.bv_val, op->o_tmpmemctx );
86 op->orc_ava = ros->orc_ava;
89 slap_mods_free( op->orm_modlist, 1 );
90 op->orm_modlist = ros->orm_modlist;
93 if ( op->orr_newSup != ros->orr_newSup ) {
94 ch_free( op->orr_newSup->bv_val );
95 ch_free( op->orr_nnewSup->bv_val );
96 op->o_tmpfree( op->orr_newSup, op->o_tmpmemctx );
97 op->o_tmpfree( op->orr_nnewSup, op->o_tmpmemctx );
98 op->orr_newSup = ros->orr_newSup;
99 op->orr_nnewSup = ros->orr_nnewSup;
101 if ( op->orr_newrdn.bv_val != ros->orr_newrdn.bv_val ) {
102 ch_free( op->orr_newrdn.bv_val );
103 ch_free( op->orr_nnewrdn.bv_val );
104 op->orr_newrdn = ros->orr_newrdn;
105 op->orr_nnewrdn = ros->orr_nnewrdn;
109 op->o_tmpfree( ros->mapped_attrs, op->o_tmpmemctx );
110 filter_free_x( op, op->ors_filter, 1 );
111 op->o_tmpfree( op->ors_filterstr.bv_val, op->o_tmpmemctx );
112 op->ors_attrs = ros->ors_attrs;
113 op->ors_filter = ros->ors_filter;
114 op->ors_filterstr = ros->ors_filterstr;
117 if ( op->ore_reqdata != ros->ore_reqdata ) {
118 ber_bvfree( op->ore_reqdata );
119 op->ore_reqdata = ros->ore_reqdata;
125 ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );
128 op->o_conn->c_ndn.bv_val,
129 op->o_req_ndn.bv_val );
130 ber_bvreplace( &op->o_conn->c_ndn,
131 &op->o_req_ndn );
132 ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );
141 rwm_op_cleanup( Operation *op, SlapReply *rs )
143 slap_callback *cb = op->o_callback;
147 op->o_abandon || rs->sr_err == SLAPD_ABANDON )
149 rwm_op_rollback( op, rs, ros );
151 op->o_callback = op->o_callback->sc_next;
152 op->o_tmpfree( cb, op->o_tmpmemctx );
159 rwm_callback_get( Operation *op, SlapReply *rs )
163 roc = op->o_tmpalloc( sizeof( struct rwm_op_cb ), op->o_tmpmemctx );
166 roc->cb.sc_next = op->o_callback;
168 roc->ros.r_tag = op->o_tag;
169 roc->ros.ro_dn = op->o_req_dn;
170 roc->ros.ro_ndn = op->o_req_ndn;
171 roc->ros.o_request = op->o_request;
180 rwm_op_dn_massage( Operation *op, SlapReply *rs, void *cookie,
183 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
196 dc.conn = op->o_conn;
201 * and the caller sets op->o_req_dn = op->o_req_ndn,
202 * only rewrite the op->o_req_ndn and use it as
203 * op->o_req_dn as well */
204 ndn = op->o_req_ndn;
205 if ( op->o_req_dn.bv_val != op->o_req_ndn.bv_val ) {
206 dn = op->o_req_dn;
207 rc = rwm_dn_massage_pretty_normalize( &dc, &op->o_req_dn, &dn, &ndn );
209 rc = rwm_dn_massage_normalize( &dc, &op->o_req_ndn, &ndn );
216 if ( ( op->o_req_dn.bv_val != op->o_req_ndn.bv_val && dn.bv_val == op->o_req_dn.bv_val )
217 || ndn.bv_val == op->o_req_ndn.bv_val )
222 if ( op->o_req_dn.bv_val != op->o_req_ndn.bv_val ) {
223 op->o_req_dn = dn;
227 op->o_req_dn = ndn;
229 op->o_req_ndn = ndn;
237 rwm_op_add( Operation *op, SlapReply *rs )
239 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
246 char *olddn = op->o_req_dn.bv_val;
249 rwm_op_cb *roc = rwm_callback_get( op, rs );
251 rc = rwm_op_dn_massage( op, rs, "addDN", &roc->ros );
253 op->o_bd->bd_info = (BackendInfo *)on->on_info;
254 send_ldap_error( op, rs, rc, "addDN massage error" );
258 if ( olddn != op->o_req_dn.bv_val ) {
259 ber_bvreplace( &op->ora_e->e_name, &op->o_req_dn );
260 ber_bvreplace( &op->ora_e->e_nname, &op->o_req_ndn );
264 isupdate = be_shadow_update( op );
265 for ( i = 0, ap = &op->oq_add.rs_e->e_attrs; *ap; ) {
301 } else if ( !isupdate && !get_relax( op ) && (*ap)->a_desc->ad_type->sat_no_user_mod )
323 rc = rwm_dnattr_rewrite( op, rs, "addAttrDN",
331 rc = rwm_referral_rewrite( op, rs, "referralAttrDN",
357 op->o_callback = &roc->cb;
387 rwm_op_bind( Operation *op, SlapReply *rs )
389 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
392 rwm_op_cb *roc = rwm_callback_get( op, rs );
394 rc = rwm_op_dn_massage( op, rs, "bindDN", &roc->ros );
396 op->o_bd->bd_info = (BackendInfo *)on->on_info;
397 send_ldap_error( op, rs, rc, "bindDN massage error" );
401 overlay_callback_after_backover( op, &roc->cb, 1 );
407 rwm_op_unbind( Operation *op, SlapReply *rs )
409 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
413 rewrite_session_delete( rwmap->rwm_rw, op->o_conn );
419 rwm_op_compare( Operation *op, SlapReply *rs )
421 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
428 rwm_op_cb *roc = rwm_callback_get( op, rs );
430 rc = rwm_op_dn_massage( op, rs, "compareDN", &roc->ros );
432 op->o_bd->bd_info = (BackendInfo *)on->on_info;
433 send_ldap_error( op, rs, rc, "compareDN massage error" );
438 if ( op->orc_ava->aa_desc == slap_schema.si_ad_objectClass
439 || op->orc_ava->aa_desc == slap_schema.si_ad_structuralObjectClass )
441 rwm_map( &rwmap->rwm_oc, &op->orc_ava->aa_value,
445 op->o_bd->bd_info = (BackendInfo *)on->on_info;
446 send_ldap_error( op, rs, LDAP_OTHER, "compare objectClass map error" );
449 } else if ( mapped_vals[0].bv_val != op->orc_ava->aa_value.bv_val ) {
450 ber_dupbv_x( &op->orc_ava->aa_value, &mapped_vals[0],
451 op->o_tmpmemctx );
456 AttributeDescription *ad = op->orc_ava->aa_desc;
458 ( void )rwm_mapping( &rwmap->rwm_at, &op->orc_ava->aa_desc->ad_cname,
462 op->o_bd->bd_info = (BackendInfo *)on->on_info;
463 send_ldap_error( op, rs, LDAP_OTHER, "compare attributeType map error" );
472 if ( op->orc_ava->aa_desc->ad_type->sat_syntax == slap_schema.si_syn_distinguishedName
480 mapped_vals[0] = op->orc_ava->aa_value;
482 rc = rwm_dnattr_rewrite( op, rs, "compareAttrDN", NULL, mapped_valsp );
485 op->o_bd->bd_info = (BackendInfo *)on->on_info;
486 send_ldap_error( op, rs, rc, "compareAttrDN massage error" );
490 if ( mapped_vals[ 0 ].bv_val != op->orc_ava->aa_value.bv_val ) {
494 ber_dupbv_x( &op->orc_ava->aa_value, &mapped_vals[0],
495 op->o_tmpmemctx );
499 op->orc_ava->aa_desc = ad;
502 op->o_callback = &roc->cb;
508 rwm_op_delete( Operation *op, SlapReply *rs )
510 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
513 rwm_op_cb *roc = rwm_callback_get( op, rs );
515 rc = rwm_op_dn_massage( op, rs, "deleteDN", &roc->ros );
517 op->o_bd->bd_info = (BackendInfo *)on->on_info;
518 send_ldap_error( op, rs, rc, "deleteDN massage error" );
522 op->o_callback = &roc->cb;
528 rwm_op_modify( Operation *op, SlapReply *rs )
530 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
538 rwm_op_cb *roc = rwm_callback_get( op, rs );
540 rc = rwm_op_dn_massage( op, rs, "modifyDN", &roc->ros );
542 op->o_bd->bd_info = (BackendInfo *)on->on_info;
543 send_ldap_error( op, rs, rc, "modifyDN massage error" );
547 isupdate = be_shadow_update( op );
548 for ( mlp = &op->orm_modlist; *mlp; ) {
559 } else if ( !isupdate && !get_relax( op ) && ml->sml_desc->ad_type->sat_no_user_mod )
645 rc = rwm_dnattr_rewrite( op, rs, "modifyAttrDN",
650 rc = rwm_referral_rewrite( op, rs,
682 op->o_callback = &roc->cb;
688 rwm_op_modrdn( Operation *op, SlapReply *rs )
690 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
697 rwm_op_cb *roc = rwm_callback_get( op, rs );
699 if ( op->orr_newSup ) {
707 dc.conn = op->o_conn;
710 newSup = *op->orr_newSup;
711 nnewSup = *op->orr_nnewSup;
712 rc = rwm_dn_massage_pretty_normalize( &dc, op->orr_newSup, &newSup, &nnewSup );
714 op->o_bd->bd_info = (BackendInfo *)on->on_info;
715 send_ldap_error( op, rs, rc, "newSuperiorDN massage error" );
719 if ( op->orr_newSup->bv_val != newSup.bv_val ) {
720 op->orr_newSup = op->o_tmpalloc( sizeof( struct berval ),
721 op->o_tmpmemctx );
722 op->orr_nnewSup = op->o_tmpalloc( sizeof( struct berval ),
723 op->o_tmpmemctx );
724 *op->orr_newSup = newSup;
725 *op->orr_nnewSup = nnewSup;
737 dc.conn = op->o_conn;
740 newrdn = op->orr_newrdn;
741 nnewrdn = op->orr_nnewrdn;
742 rc = rwm_dn_massage_pretty_normalize( &dc, &op->orr_newrdn, &newrdn, &nnewrdn );
744 op->o_bd->bd_info = (BackendInfo *)on->on_info;
745 send_ldap_error( op, rs, rc, "newRDN massage error" );
749 if ( op->orr_newrdn.bv_val != newrdn.bv_val ) {
750 op->orr_newrdn = newrdn;
751 op->orr_nnewrdn = nnewrdn;
758 rc = rwm_op_dn_massage( op, rs, "renameDN", &roc->ros );
760 op->o_bd->bd_info = (BackendInfo *)on->on_info;
761 send_ldap_error( op, rs, rc, "renameDN massage error" );
765 op->o_callback = &roc->cb;
771 if ( op->orr_newSup != roc->ros.orr_newSup ) {
772 ch_free( op->orr_newSup->bv_val );
773 ch_free( op->orr_nnewSup->bv_val );
774 op->o_tmpfree( op->orr_newSup, op->o_tmpmemctx );
775 op->o_tmpfree( op->orr_nnewSup, op->o_tmpmemctx );
776 op->orr_newSup = roc->ros.orr_newSup;
777 op->orr_nnewSup = roc->ros.orr_nnewSup;
780 if ( op->orr_newrdn.bv_val != roc->ros.orr_newrdn.bv_val ) {
781 ch_free( op->orr_newrdn.bv_val );
782 ch_free( op->orr_nnewrdn.bv_val );
783 op->orr_newrdn = roc->ros.orr_newrdn;
784 op->orr_nnewrdn = roc->ros.orr_nnewrdn;
793 rwm_swap_attrs( Operation *op, SlapReply *rs )
795 slap_callback *cb = op->o_callback;
800 /* other overlays might have touched op->ors_attrs,
803 op->ors_attrs = ros->mapped_attrs;
818 rwm_entry_release_rw( Operation *op, Entry *e, int rw )
820 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
837 rwm_entry_get_rw( Operation *op, struct berval *ndn,
840 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
860 op2 = *op;
878 db = *op->o_bd;
898 op->o_tmpfree( ros.r_ndn.bv_val, op->o_tmpmemctx );
905 rwm_op_search( Operation *op, SlapReply *rs )
907 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
921 rwm_op_cb *roc = rwm_callback_get( op, rs );
923 rc = rewrite_session_var_set( rwmap->rwm_rw, op->o_conn,
924 "searchFilter", op->ors_filterstr.bv_val );
926 rc = rwm_op_dn_massage( op, rs, "searchDN", &roc->ros );
936 dc.conn = op->o_conn;
940 rc = rwm_filter_map_rewrite( op, &dc, op->ors_filter, &fstr );
946 f = str2filter_x( op, fstr.bv_val );
953 op->ors_filter = f;
954 op->ors_filterstr = fstr;
956 rc = rwm_map_attrnames( op, &rwmap->rwm_at, &rwmap->rwm_oc,
957 op->ors_attrs, &an, RWM_MAP );
963 op->ors_attrs = an;
965 * the case that other overlays change op->ors_attrs */
969 op->o_callback = &roc->cb;
979 filter_free_x( op, f, 1 );
983 op->o_tmpfree( fstr.bv_val, op->o_tmpmemctx );
986 rwm_op_rollback( op, rs, &roc->ros );
987 op->oq_search = roc->ros.oq_search;
988 op->o_tmpfree( roc, op->o_tmpmemctx );
990 op->o_bd->bd_info = (BackendInfo *)on->on_info;
991 send_ldap_error( op, rs, rc, text );
998 rwm_exop_passwd( Operation *op, SlapReply *rs )
1000 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
1009 if ( !BER_BVISNULL( &op->o_req_ndn ) ) {
1013 if ( !SLAP_ISGLOBALOVERLAY( op->o_bd ) ) {
1018 rs->sr_err = slap_passwd_parse( op->ore_reqdata, &id,
1027 rs->sr_err = dnPrettyNormal( NULL, &id, &op->o_req_dn,
1028 &op->o_req_ndn, op->o_tmpmemctx );
1036 ber_dupbv_x( &op->o_req_dn, &op->o_dn, op->o_tmpmemctx );
1037 ber_dupbv_x( &op->o_req_ndn, &op->o_ndn, op->o_tmpmemctx );
1040 roc = rwm_callback_get( op, rs );
1042 rc = rwm_op_dn_massage( op, rs, "extendedDN", &roc->ros );
1044 op->o_bd->bd_info = (BackendInfo *)on->on_info;
1045 send_ldap_error( op, rs, rc, "extendedDN massage error" );
1058 &op->o_req_dn );
1067 ber_flatten( ber, &op->ore_reqdata );
1070 op->o_callback = &roc->cb;
1084 rwm_extended( Operation *op, SlapReply *rs )
1086 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
1093 if ( bvmatch( &exop_table[i].oid, &op->oq_extended.rs_reqoid ) )
1095 rc = exop_table[i].extended( op, rs );
1105 send_ldap_result( op, rs );
1112 roc = rwm_callback_get( op, rs );
1114 rc = rwm_op_dn_massage( op, rs, "extendedDN", &roc->ros );
1116 op->o_bd->bd_info = (BackendInfo *)on->on_info;
1117 send_ldap_error( op, rs, rc, "extendedDN massage error" );
1122 op->o_callback = &roc->cb;
1128 rwm_matched( Operation *op, SlapReply *rs )
1130 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
1143 dc.conn = op->o_conn;
1169 rwm_attrs( Operation *op, SlapReply *rs, Attribute** a_first, int stripEntryDN )
1171 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
1185 dc.conn = op->o_conn;
1200 isupdate = be_shadow_update( op );
1208 op->ors_attrs != NULL &&
1210 !ad_inlist( (*ap)->a_desc, op->ors_attrs ) )
1281 && !get_relax( op )
1437 rwm_send_entry( Operation *op, SlapReply *rs )
1439 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
1456 dc.conn = op->o_conn;
1507 (void)rwm_attrs( op, rs, &e->e_attrs, 1 );
1517 op->o_bd->bd_info = (BackendInfo *)on->on_info;
1518 be_entry_release_r( op, rs->sr_entry );
1519 op->o_bd->bd_info = (BackendInfo *)on;
1552 rwm_operational( Operation *op, SlapReply *rs )
1558 rwm_attrs( op, rs, &rs->sr_operational_attrs, 1 );
1565 /* don't use this; it cannot be reverted, and leaves op->o_req_dn
1569 rwm_chk_referrals( Operation *op, SlapReply *rs )
1571 slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
1574 rc = rwm_op_dn_massage( op, rs, "referralCheckDN" );
1576 op->o_bd->bd_info = (BackendInfo *)on->on_info;
1577 send_ldap_error( op, rs, rc, "referralCheckDN massage error" );
1702 rwm_response( Operation *op, SlapReply *rs )
1704 slap_overinst *on = (slap_overinst *)op->o_bd->bd_info;
1710 if ( op->o_tag == LDAP_REQ_SEARCH && rs->sr_type == REP_SEARCH ) {
1711 return rwm_send_entry( op, rs );
1714 switch( op->o_tag ) {
1730 dc.conn = op->o_conn;
1739 rc = rwm_matched( op, rs );
2060 if ( c->op == SLAP_CONFIG_EMIT ) {
2115 } else if ( c->op == LDAP_MOD_DELETE ) {