📄 slapi_pblock.c
字号:
case SLAPI_OPERATION_ID: PBLOCK_ASSERT_OP( pb, 0 ); *((long *)value) = pb->pb_op->o_opid; break; case SLAPI_OPERATION_TYPE: PBLOCK_ASSERT_OP( pb, 0 ); *((ber_tag_t *)value) = pb->pb_op->o_tag; break; case SLAPI_X_OPERATION_DELETE_GLUE_PARENT: PBLOCK_ASSERT_OP( pb, 0 ); *((ber_tag_t *)value) = pb->pb_op->o_delete_glue_parent; break; case SLAPI_X_OPERATION_NO_SCHEMA_CHECK: PBLOCK_ASSERT_OP( pb, 0 ); *((int *)value) = get_no_schema_check( pb->pb_op ); break; case SLAPI_X_ADD_STRUCTURAL_CLASS: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_ADD ) { struct berval tmpval = BER_BVNULL; rc = mods_structural_class( pb->pb_op->ora_modlist, &tmpval, &pb->pb_rs->sr_text, pb->pb_textbuf, sizeof( pb->pb_textbuf )); *((char **)value) = tmpval.bv_val; } else { rc = PBLOCK_ERROR; } break; case SLAPI_REQCONTROLS: PBLOCK_ASSERT_OP( pb, 0 ); *((LDAPControl ***)value) = pb->pb_op->o_ctrls; break; case SLAPI_REQUESTOR_DN: PBLOCK_ASSERT_OP( pb, 0 ); *((char **)value) = pb->pb_op->o_dn.bv_val; break; case SLAPI_MANAGEDSAIT: PBLOCK_ASSERT_OP( pb, 0 ); *((int *)value) = get_manageDSAit( pb->pb_op ); break; case SLAPI_X_MANAGEDIT: PBLOCK_ASSERT_OP( pb, 0 ); *((int *)value) = get_manageDIT( pb->pb_op ); break; case SLAPI_BACKEND: PBLOCK_ASSERT_OP( pb, 0 ); *((BackendDB **)value) = select_backend( &pb->pb_op->o_req_ndn, 0, 0 ); break; case SLAPI_BE_TYPE: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_bd != NULL ) *((char **)value) = pb->pb_op->o_bd->bd_info->bi_type; else *value = NULL; break; case SLAPI_CONNECTION: *value = pb->pb_conn; break; case SLAPI_X_CONN_SSF: PBLOCK_ASSERT_OP( pb, 0 ); *((slap_ssf_t *)value) = pb->pb_conn->c_ssf; break; case SLAPI_X_CONN_SASL_CONTEXT: PBLOCK_ASSERT_CONN( pb ); if ( pb->pb_conn->c_sasl_authctx != NULL ) *value = pb->pb_conn->c_sasl_authctx; else *value = pb->pb_conn->c_sasl_sockctx; break; case SLAPI_TARGET_DN: PBLOCK_ASSERT_OP( pb, 0 ); *((char **)value) = pb->pb_op->o_req_dn.bv_val; break; case SLAPI_REQUESTOR_ISROOT: *((int *)value) = pblock_be_call( pb, be_isroot ); break; case SLAPI_IS_REPLICATED_OPERATION: *((int *)value) = pblock_be_call( pb, be_slurp_update ); break; case SLAPI_CONN_AUTHTYPE: case SLAPI_CONN_AUTHMETHOD: /* XXX should return SASL mech */ PBLOCK_ASSERT_CONN( pb ); *((char **)value) = pblock_get_authtype( &pb->pb_conn->c_authz,#ifdef HAVE_TLS pb->pb_conn->c_is_tls#else 0#endif ); break; case SLAPI_X_CONN_IS_UDP: PBLOCK_ASSERT_CONN( pb );#ifdef LDAP_CONNECTIONLESS *((int *)value) = pb->pb_conn->c_is_udp;#else *((int *)value) = 0;#endif break; case SLAPI_CONN_ID: PBLOCK_ASSERT_CONN( pb ); *((long *)value) = pb->pb_conn->c_connid; break; case SLAPI_CONN_DN: PBLOCK_ASSERT_CONN( pb ); *((char **)value) = pb->pb_conn->c_dn.bv_val; break; case SLAPI_CONN_CLIENTIP: PBLOCK_ASSERT_CONN( pb ); if ( strncmp( pb->pb_conn->c_peer_name.bv_val, "IP=", 3 ) == 0 ) *((char **)value) = &pb->pb_conn->c_peer_name.bv_val[3]; else *value = NULL; break; case SLAPI_X_CONN_CLIENTPATH: PBLOCK_ASSERT_CONN( pb ); if ( strncmp( pb->pb_conn->c_peer_name.bv_val, "PATH=", 3 ) == 0 ) *((char **)value) = &pb->pb_conn->c_peer_name.bv_val[5]; else *value = NULL; break; case SLAPI_CONN_SERVERIP: PBLOCK_ASSERT_CONN( pb ); if ( strncmp( pb->pb_conn->c_peer_name.bv_val, "IP=", 3 ) == 0 ) *((char **)value) = &pb->pb_conn->c_sock_name.bv_val[3]; else *value = NULL; break; case SLAPI_X_CONN_SERVERPATH: PBLOCK_ASSERT_CONN( pb ); if ( strncmp( pb->pb_conn->c_peer_name.bv_val, "PATH=", 3 ) == 0 ) *((char **)value) = &pb->pb_conn->c_sock_name.bv_val[5]; else *value = NULL; break; case SLAPI_RESULT_CODE: case SLAPI_PLUGIN_INTOP_RESULT: PBLOCK_ASSERT_OP( pb, 0 ); *((int *)value) = pb->pb_rs->sr_err; break; case SLAPI_RESULT_TEXT: PBLOCK_ASSERT_OP( pb, 0 ); *((const char **)value) = pb->pb_rs->sr_text; break; case SLAPI_RESULT_MATCHED: PBLOCK_ASSERT_OP( pb, 0 ); *((const char **)value) = pb->pb_rs->sr_matched; break; case SLAPI_ADD_ENTRY: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_ADD ) *((Slapi_Entry **)value) = pb->pb_op->ora_e; else *value = NULL; break; case SLAPI_MODIFY_MODS: { LDAPMod **mods = NULL; pblock_get_default( pb, param, (void **)&mods ); if ( mods == NULL && pb->pb_intop == 0 ) { if ( pb->pb_op->o_tag != LDAP_REQ_MODIFY ) { rc = PBLOCK_ERROR; break; } mods = slapi_int_modifications2ldapmods( pb->pb_op->orm_modlist ); pblock_set_default( pb, param, (void *)mods ); } *((LDAPMod ***)value) = mods; break; } case SLAPI_MODRDN_NEWRDN: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_MODRDN ) *((char **)value) = pb->pb_op->orr_newrdn.bv_val; else *value = NULL; break; case SLAPI_MODRDN_NEWSUPERIOR: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_MODRDN && pb->pb_op->orr_newSup != NULL ) *((char **)value) = pb->pb_op->orr_newSup->bv_val; else *value = NULL; break; case SLAPI_MODRDN_DELOLDRDN: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_MODRDN ) *((int *)value) = pb->pb_op->orr_deleteoldrdn; else *((int *)value) = 0; break; case SLAPI_SEARCH_SCOPE: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_SEARCH ) *((int *)value) = pb->pb_op->ors_scope; else *((int *)value) = 0; break; case SLAPI_SEARCH_DEREF: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_SEARCH ) *((int *)value) = pb->pb_op->ors_deref; else *((int *)value) = 0; break; case SLAPI_SEARCH_SIZELIMIT: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_SEARCH ) *((int *)value) = pb->pb_op->ors_slimit; else *((int *)value) = 0; break; case SLAPI_SEARCH_TIMELIMIT: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_SEARCH ) *((int *)value) = pb->pb_op->ors_tlimit; else *((int *)value) = 0; break; case SLAPI_SEARCH_FILTER: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_SEARCH ) *((Slapi_Filter **)value) = pb->pb_op->ors_filter; else *((Slapi_Filter **)value) = NULL; break; case SLAPI_SEARCH_STRFILTER: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_SEARCH ) *((char **)value) = pb->pb_op->ors_filterstr.bv_val; else *((char **)value) = NULL; break; case SLAPI_SEARCH_ATTRS: { char **attrs = NULL; PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag != LDAP_REQ_SEARCH ) { rc = PBLOCK_ERROR; break; } pblock_get_default( pb, param, (void **)&attrs ); if ( attrs == NULL && pb->pb_intop == 0 ) { attrs = anlist2charray_x( pb->pb_op->ors_attrs, 0, pb->pb_op->o_tmpmemctx ); pblock_set_default( pb, param, (void *)attrs ); } *((char ***)value) = attrs; break; } case SLAPI_SEARCH_ATTRSONLY: PBLOCK_ASSERT_OP( pb, 0 ); if ( pb->pb_op->o_tag == LDAP_REQ_SEARCH ) *((int *)value) = pb->pb_op->ors_attrsonly; else *((int *)value) = 0; break; case SLAPI_SEARCH_RESULT_ENTRY: PBLOCK_ASSERT_OP( pb, 0 ); *((Slapi_Entry **)value) = pb->pb_rs->sr_entry; break; case SLAPI_BIND_RET_SASLCREDS: PBLOCK_ASSERT_OP( pb, 0 ); *((struct berval **)value) = pb->pb_rs->sr_sasldata; break; case SLAPI_EXT_OP_REQ_OID: *((const char **)value) = pb->pb_op->ore_reqoid.bv_val; break; case SLAPI_EXT_OP_REQ_VALUE: *((struct berval **)value) = pb->pb_op->ore_reqdata; break; case SLAPI_EXT_OP_RET_OID: PBLOCK_ASSERT_OP( pb, 0 ); *((const char **)value) = pb->pb_rs->sr_rspoid; break; case SLAPI_EXT_OP_RET_VALUE: PBLOCK_ASSERT_OP( pb, 0 ); *((struct berval **)value) = pb->pb_rs->sr_rspdata; break; case SLAPI_BIND_METHOD: if ( pb->pb_op->o_tag == LDAP_REQ_BIND ) *((int *)value) = pb->pb_op->orb_method; else *((int *)value) = 0; break; case SLAPI_BIND_CREDENTIALS: if ( pb->pb_op->o_tag == LDAP_REQ_BIND ) *((struct berval **)value) = &pb->pb_op->orb_cred; else *value = NULL; break; case SLAPI_COMPARE_TYPE: if ( pb->pb_op->o_tag == LDAP_REQ_COMPARE ) *((char **)value) = pb->pb_op->orc_ava->aa_desc->ad_cname.bv_val; else *value = NULL; break; case SLAPI_COMPARE_VALUE: if ( pb->pb_op->o_tag == LDAP_REQ_COMPARE ) *((struct berval **)value) = &pb->pb_op->orc_ava->aa_value; else *value = NULL; break; case SLAPI_ABANDON_MSGID: if ( pb->pb_op->o_tag == LDAP_REQ_ABANDON ) *((int *)value) = pb->pb_op->orn_msgid; else *((int *)value) = 0; break; default: rc = pblock_get_default( pb, param, value ); break; } pblock_unlock( pb ); return rc;}static intpblock_add_control( Slapi_PBlock *pb, LDAPControl *control ){ LDAPControl **controls = NULL; size_t i; pblock_get_default( pb, SLAPI_RESCONTROLS, (void **)&controls ); if ( controls != NULL ) { for ( i = 0; controls[i] != NULL; i++ ) ; } else { i = 0; } controls = (LDAPControl **)slapi_ch_realloc( (char *)controls, ( i + 2 ) * sizeof(LDAPControl *)); controls[i++] = slapi_dup_control( control ); controls[i] = NULL; return pblock_set_default( pb, SLAPI_RESCONTROLS, (void *)controls );}static intpblock_set_dn( void *value, struct berval *dn, struct berval *ndn, void *memctx ){ struct berval bv; if ( !BER_BVISNULL( dn )) { slap_sl_free( dn->bv_val, memctx ); BER_BVZERO( dn ); } if ( !BER_BVISNULL( ndn )) { slap_sl_free( ndn->bv_val, memctx ); BER_BVZERO( ndn ); } bv.bv_val = (char *)value; bv.bv_len = ( value != NULL ) ? strlen( bv.bv_val ) : 0; return dnPrettyNormal( NULL, &bv, dn, ndn, memctx );}static int pblock_set( Slapi_PBlock *pb, int param, void *value ) { int rc = PBLOCK_SUCCESS; pblock_lock( pb ); switch ( param ) { case SLAPI_OPERATION: pb->pb_op = (Operation *)value; break; case SLAPI_OPINITIATED_TIME: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_time = *((long *)value); break; case SLAPI_OPERATION_ID: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_opid = *((long *)value); break; case SLAPI_OPERATION_TYPE: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_tag = *((ber_tag_t *)value); break; case SLAPI_X_OPERATION_DELETE_GLUE_PARENT: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_delete_glue_parent = *((int *)value); break; case SLAPI_X_OPERATION_NO_SCHEMA_CHECK: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_no_schema_check = *((int *)value); break; case SLAPI_REQCONTROLS: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_ctrls = (LDAPControl **)value; break; case SLAPI_RESCONTROLS: { LDAPControl **ctrls = NULL; pblock_get_default( pb, param, (void **)&ctrls ); if ( ctrls != NULL ) { /* free old ones first */ ldap_controls_free( ctrls ); } rc = pblock_set_default( pb, param, value ); break; } case SLAPI_ADD_RESCONTROL: PBLOCK_ASSERT_OP( pb, 0 ); rc = pblock_add_control( pb, (LDAPControl *)value ); break; case SLAPI_REQUESTOR_DN: PBLOCK_ASSERT_OP( pb, 0 ); rc = pblock_set_dn( value, &pb->pb_op->o_dn, &pb->pb_op->o_ndn, pb->pb_op->o_tmpmemctx ); break; case SLAPI_MANAGEDSAIT: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_managedsait = *((int *)value); break; case SLAPI_X_MANAGEDIT: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_managedit = *((int *)value); break; case SLAPI_BACKEND: PBLOCK_ASSERT_OP( pb, 0 ); pb->pb_op->o_bd = (BackendDB *)value; break; case SLAPI_CONNECTION: pb->pb_conn = (Connection *)value; break; case SLAPI_X_CONN_SSF: PBLOCK_ASSERT_CONN( pb ); PBLOCK_LOCK_CONN( pb ); pb->pb_conn->c_ssf = (slap_ssf_t)(long)value; PBLOCK_UNLOCK_CONN( pb ); break; case SLAPI_X_CONN_SASL_CONTEXT: PBLOCK_ASSERT_CONN( pb ); PBLOCK_LOCK_CONN( pb ); pb->pb_conn->c_sasl_authctx = value; PBLOCK_UNLOCK_CONN( pb ); break; case SLAPI_TARGET_DN: PBLOCK_ASSERT_OP( pb, 0 ); rc = pblock_set_dn( value, &pb->pb_op->o_req_dn, &pb->pb_op->o_req_ndn, pb->pb_op->o_tmpmemctx ); break; case SLAPI_CONN_ID: PBLOCK_ASSERT_CONN( pb ); PBLOCK_LOCK_CONN( pb ); pb->pb_conn->c_connid = *((long *)value); PBLOCK_UNLOCK_CONN( pb ); break; case SLAPI_CONN_DN: PBLOCK_ASSERT_CONN( pb ); PBLOCK_LOCK_CONN( pb ); rc = pblock_set_dn( value, &pb->pb_conn->c_dn, &pb->pb_conn->c_ndn, NULL ); PBLOCK_UNLOCK_CONN( pb ); break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -