static int sssvlv_db_destroy( BackendDB *be, ConfigReply *cr ) { slap_overinst *on = (slap_overinst *)be->bd_info; sssvlv_info *si = (sssvlv_info *)on->on_bi.bi_private; int conn_index; ov_count--; if ( !ov_count && sort_conns) { sort_conns--; for ( conn_index = 0 ; conn_index < dtblsize + 1 ; conn_index++ ) { ch_free(sort_conns[conn_index]); } ch_free(sort_conns); ldap_pvt_thread_mutex_destroy( &sort_conns_mutex ); } #ifdef SLAP_CONFIG_DELETE overlay_unregister_control( be, LDAP_CONTROL_SORTREQUEST ); overlay_unregister_control( be, LDAP_CONTROL_VLVREQUEST ); if ( ov_count == 0 ) { unregister_supported_control( LDAP_CONTROL_SORTREQUEST ); unregister_supported_control( LDAP_CONTROL_VLVREQUEST ); } #endif /* SLAP_CONFIG_DELETE */ if ( si ) { ch_free( si ); on->on_bi.bi_private = NULL; } return LDAP_SUCCESS; }
static int deref_db_destroy( BackendDB *be, ConfigReply *cr) { ov_count--; overlay_unregister_control( be, LDAP_CONTROL_X_DEREF ); if ( ov_count == 0 ) { unregister_supported_control( LDAP_CONTROL_X_DEREF ); } return 0; }
/* * Almost pointless, by now, since this overlay needs to be global, * and global overlays deletion is not supported yet. */ static int authzid_db_destroy( BackendDB *be, ConfigReply *cr ) { #ifdef SLAP_CONFIG_DELETE overlay_unregister_control( be, LDAP_CONTROL_AUTHZID_REQUEST ); #endif /* SLAP_CONFIG_DELETE */ unregister_supported_control( LDAP_CONTROL_AUTHZID_REQUEST ); return 0; }
static int sssvlv_db_init( BackendDB *be, ConfigReply *cr) { slap_overinst *on = (slap_overinst *)be->bd_info; sssvlv_info *si; if ( ov_count == 0 ) { int rc; rc = register_supported_control2( LDAP_CONTROL_SORTREQUEST, SLAP_CTRL_SEARCH, NULL, sss_parseCtrl, 1 /* replace */, &sss_cid ); if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "Failed to register Sort Request control '%s' (%d)\n", LDAP_CONTROL_SORTREQUEST, rc ); return rc; } rc = register_supported_control2( LDAP_CONTROL_VLVREQUEST, SLAP_CTRL_SEARCH, NULL, vlv_parseCtrl, 1 /* replace */, &vlv_cid ); if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "Failed to register VLV Request control '%s' (%d)\n", LDAP_CONTROL_VLVREQUEST, rc ); #ifdef SLAP_CONFIG_DELETE overlay_unregister_control( be, LDAP_CONTROL_SORTREQUEST ); unregister_supported_control( LDAP_CONTROL_SORTREQUEST ); #endif /* SLAP_CONFIG_DELETE */ return rc; } } si = (sssvlv_info *)ch_malloc(sizeof(sssvlv_info)); on->on_bi.bi_private = si; si->svi_max = 0; si->svi_num = 0; si->svi_max_keys = SSSVLV_DEFAULT_MAX_KEYS; si->svi_max_percon = SSSVLV_DEFAULT_MAX_REQUEST_PER_CONN; ov_count++; return LDAP_SUCCESS; }
static int valsort_destroy( BackendDB *be, ConfigReply *cr ) { slap_overinst *on = (slap_overinst *)be->bd_info; valsort_info *vi = on->on_bi.bi_private, *next; #ifdef SLAP_CONFIG_DELETE overlay_unregister_control( be, LDAP_CONTROL_VALSORT ); #endif /* SLAP_CONFIG_DELETE */ for (; vi; vi = next) { next = vi->vi_next; ch_free( vi->vi_dn.bv_val ); ch_free( vi ); } return 0; }