Lines Matching refs:op
38 Operation *op, /* info about the op to which we're responding */
45 op->o_log_prefix, 0, 0 );
72 if ( ber_scanf( op->o_ber, "{miiiib" /*}*/,
73 &base, &op->ors_scope, &op->ors_deref, &op->ors_slimit,
74 &op->ors_tlimit, &op->ors_attrsonly ) == LBER_ERROR )
76 send_ldap_discon( op, rs, LDAP_PROTOCOL_ERROR, "decoding error" );
81 if ( op->ors_tlimit < 0 || op->ors_tlimit > SLAP_MAX_LIMIT ) {
82 send_ldap_error( op, rs, LDAP_PROTOCOL_ERROR, "invalid time limit" );
86 if ( op->ors_slimit < 0 || op->ors_slimit > SLAP_MAX_LIMIT ) {
87 send_ldap_error( op, rs, LDAP_PROTOCOL_ERROR, "invalid size limit" );
91 switch( op->ors_scope ) {
98 send_ldap_error( op, rs, LDAP_PROTOCOL_ERROR, "invalid scope" );
102 switch( op->ors_deref ) {
109 send_ldap_error( op, rs, LDAP_PROTOCOL_ERROR, "invalid deref" );
113 rs->sr_err = dnPrettyNormal( NULL, &base, &op->o_req_dn, &op->o_req_ndn, op->o_tmpmemctx );
116 op->o_log_prefix, base.bv_val, 0 );
117 send_ldap_error( op, rs, LDAP_INVALID_DN_SYNTAX, "invalid DN" );
122 base.bv_val, op->ors_scope, op->ors_deref );
124 op->ors_slimit, op->ors_tlimit, op->ors_attrsonly);
127 rs->sr_err = get_filter( op, op->o_ber, &op->ors_filter, &rs->sr_text );
131 send_ldap_disconnect( op, rs );
134 send_ldap_result( op, rs );
138 filter2bv_x( op, op->ors_filter, &op->ors_filterstr );
141 !BER_BVISEMPTY( &op->ors_filterstr ) ? op->ors_filterstr.bv_val : "empty", 0, 0 );
146 if ( ber_scanf( op->o_ber, "{M}}", &op->ors_attrs, &siz, off ) == LBER_ERROR ) {
147 send_ldap_discon( op, rs, LDAP_PROTOCOL_ERROR, "decoding attrs error" );
153 op->ors_attrs[i].an_desc = NULL;
154 op->ors_attrs[i].an_oc = NULL;
155 op->ors_attrs[i].an_flags = 0;
156 if ( slap_bv2ad( &op->ors_attrs[i].an_name,
157 &op->ors_attrs[i].an_desc, &dummy ) != LDAP_SUCCESS )
159 if ( slap_bv2undef_ad( &op->ors_attrs[i].an_name,
160 &op->ors_attrs[i].an_desc, &dummy,
163 struct berval *bv = &op->ors_attrs[i].an_name;
187 BER_BVSTR( &op->ors_attrs[i].an_name, LDAP_NO_ATTRS );
195 if( get_ctrls( op, rs, 1 ) != LDAP_SUCCESS ) {
197 op->o_log_prefix, 0, 0 );
205 Debug( LDAP_DEBUG_ARGS, " %s", op->ors_attrs[i].an_name.bv_val, 0, 0 );
215 sprintf(abuf, "scope=%d deref=%d", op->ors_scope, op->ors_deref);
218 op->o_log_prefix, op->o_req_dn.bv_val, abuf,
219 op->ors_filterstr.bv_val, 0 );
222 alen = op->ors_attrs[i].an_name.bv_len;
228 op->o_log_prefix, abuf, 0, 0, 0 );
236 ptr = lutil_strncopy(ptr, op->ors_attrs[i].an_name.bv_val, alen);
242 op->o_log_prefix, abuf, 0, 0, 0 );
246 op->o_bd = frontendDB;
247 rs->sr_err = frontendDB->be_search( op, rs );
250 if ( !BER_BVISNULL( &op->o_req_dn ) ) {
251 slap_sl_free( op->o_req_dn.bv_val, op->o_tmpmemctx );
253 if ( !BER_BVISNULL( &op->o_req_ndn ) ) {
254 slap_sl_free( op->o_req_ndn.bv_val, op->o_tmpmemctx );
256 if ( !BER_BVISNULL( &op->ors_filterstr ) ) {
257 op->o_tmpfree( op->ors_filterstr.bv_val, op->o_tmpmemctx );
259 if ( op->ors_filter != NULL) {
260 filter_free_x( op, op->ors_filter, 1 );
262 if ( op->ors_attrs != NULL ) {
263 op->o_tmpfree( op->ors_attrs, op->o_tmpmemctx );
270 fe_op_search( Operation *op, SlapReply *rs )
272 BackendDB *bd = op->o_bd;
274 if ( op->ors_scope == LDAP_SCOPE_BASE ) {
277 if ( BER_BVISEMPTY( &op->o_req_ndn ) ) {
280 if (op->o_protocol == LDAP_VERSION2 && op->o_conn->c_is_udp) {
285 if( backend_check_restrictions( op, rs, NULL ) != LDAP_SUCCESS ) {
286 send_ldap_result( op, rs );
290 rs->sr_err = root_dse_info( op->o_conn, &entry, &rs->sr_text );
292 } else if ( bvmatch( &op->o_req_ndn, &frontendDB->be_schemandn ) ) {
294 if( backend_check_restrictions( op, rs, NULL ) != LDAP_SUCCESS ) {
295 send_ldap_result( op, rs );
303 send_ldap_result( op, rs );
307 if ( get_assert( op ) &&
308 ( test_filter( op, entry, get_assertion( op )) != LDAP_COMPARE_TRUE )) {
313 rs->sr_err = test_filter( op, entry, op->ors_filter );
320 op->ors_slimit = SLAP_NO_LIMIT;
321 op->ors_tlimit = SLAP_NO_LIMIT;
324 rs->sr_attrs = op->ors_attrs;
327 send_search_entry( op, rs );
334 send_ldap_result( op, rs );
339 if( BER_BVISEMPTY( &op->o_req_ndn ) && !BER_BVISEMPTY( &default_search_nbase ) ) {
340 slap_sl_free( op->o_req_dn.bv_val, op->o_tmpmemctx );
341 slap_sl_free( op->o_req_ndn.bv_val, op->o_tmpmemctx );
343 ber_dupbv_x( &op->o_req_dn, &default_search_base, op->o_tmpmemctx );
344 ber_dupbv_x( &op->o_req_ndn, &default_search_nbase, op->o_tmpmemctx );
353 op->o_bd = select_backend( &op->o_req_ndn, 1 );
354 if ( op->o_bd == NULL ) {
356 NULL, &op->o_req_dn, op->ors_scope );
360 op->o_bd = bd;
361 send_ldap_result( op, rs );
370 if( backend_check_restrictions( op, rs, NULL ) != LDAP_SUCCESS ) {
371 send_ldap_result( op, rs );
376 if( backend_check_referrals( op, rs ) != LDAP_SUCCESS ) {
380 if ( SLAP_SHADOW(op->o_bd) && get_dontUseCopy(op) ) {
382 BerVarray defref = op->o_bd->be_update_refs
383 ? op->o_bd->be_update_refs : default_referral;
387 NULL, &op->o_req_dn, op->ors_scope );
390 send_ldap_result( op, rs );
395 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
399 } else if ( op->o_bd->be_search ) {
400 if ( limits_check( op, rs ) == 0 ) {
402 (op->o_bd->be_search)( op, rs );
407 send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
412 op->o_bd = bd;