コード例 #1
0
ファイル: sssvlv.c プロジェクト: osstech-jp/ReOpenLDAP
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;
}
コード例 #2
0
ファイル: deref.c プロジェクト: Smilefant/ReOpenLDAP
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;
}
コード例 #3
0
ファイル: authzid.c プロジェクト: Joywar/openldap
/*
 * 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;
}
コード例 #4
0
ファイル: sssvlv.c プロジェクト: osstech-jp/ReOpenLDAP
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;
}
コード例 #5
0
ファイル: valsort.c プロジェクト: wepe912/openldap
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;
}