示例#1
0
void ldap_int_utils_init( void )
{
	static int done=0;
	if (done)
	  return;
	done=1;

#ifdef LDAP_R_COMPILE
#if !defined( USE_CTIME_R ) && !defined( HAVE_REENTRANT_FUNCTIONS )
	ldap_pvt_thread_mutex_init( &ldap_int_ctime_mutex );
#endif
#if !defined( USE_GMTIME_R ) && !defined( USE_LOCALTIME_R )
	ldap_pvt_thread_mutex_init( &ldap_int_gmtime_mutex );
#endif
	ldap_pvt_thread_mutex_init( &ldap_int_resolv_mutex );

#ifdef HAVE_CYRUS_SASL
	ldap_pvt_thread_mutex_init( &ldap_int_sasl_mutex );
#endif
#ifdef HAVE_GSSAPI
	ldap_pvt_thread_mutex_init( &ldap_int_gssapi_mutex );
#endif
#endif

	/* call other module init functions here... */
}
示例#2
0
int
entry_init(void)
{
	ldap_pvt_thread_mutex_init( &entry2str_mutex );
	ldap_pvt_thread_mutex_init( &entry_mutex );
	return attr_init();
}
示例#3
0
int slapi_over_config( BackendDB *be, ConfigReply *cr )
{
	if ( slapi_over_initialized == 0 ) {
		int rc;

		/* do global initializaiton */
		ldap_pvt_thread_mutex_init( &slapi_hn_mutex );
		ldap_pvt_thread_mutex_init( &slapi_time_mutex );
		ldap_pvt_thread_mutex_init( &slapi_printmessage_mutex );

		if ( slapi_log_file == NULL )
			slapi_log_file = slapi_ch_strdup( LDAP_RUNDIR LDAP_DIRSEP "errors" );

		rc = slapi_int_init_object_extensions();
		if ( rc != 0 )
			return rc;

		rc = slapi_over_init();
		if ( rc != 0 )
			return rc;

		slapi_over_initialized = 1;
	}

	return overlay_config( be, SLAPI_OVERLAY_NAME, -1, NULL, cr );
}
示例#4
0
int
meta_back_db_init(
	Backend		*be,
	ConfigReply	*cr)
{
	metainfo_t	*mi;
	int		i;
	BackendInfo	*bi;

	bi = backend_info( "ldap" );
	if ( !bi || !bi->bi_extra ) {
		Debug( LDAP_DEBUG_ANY,
			"meta_back_db_init: needs back-ldap\n" );
		return 1;
	}

	mi = ch_calloc( 1, sizeof( metainfo_t ) );
	if ( mi == NULL ) {
 		return -1;
 	}

	/* set default flags */
	mi->mi_flags =
		META_BACK_F_DEFER_ROOTDN_BIND
		| META_BACK_F_PROXYAUTHZ_ALWAYS
		| META_BACK_F_PROXYAUTHZ_ANON
		| META_BACK_F_PROXYAUTHZ_NOANON;

	/*
	 * At present the default is no default target;
	 * this may change
	 */
	mi->mi_defaulttarget = META_DEFAULT_TARGET_NONE;
	mi->mi_bind_timeout.tv_sec = 0;
	mi->mi_bind_timeout.tv_usec = META_BIND_TIMEOUT;

	mi->mi_rebind_f = meta_back_default_rebind;
	mi->mi_urllist_f = meta_back_default_urllist;

	ldap_pvt_thread_mutex_init( &mi->mi_conninfo.lai_mutex );
	ldap_pvt_thread_mutex_init( &mi->mi_cache.mutex );

	/* safe default */
	mi->mi_nretries = META_RETRY_DEFAULT;
	mi->mi_version = LDAP_VERSION3;

	for ( i = LDAP_BACK_PCONN_FIRST; i < LDAP_BACK_PCONN_LAST; i++ ) {
		mi->mi_conn_priv[ i ].mic_num = 0;
		LDAP_TAILQ_INIT( &mi->mi_conn_priv[ i ].mic_priv );
	}
	mi->mi_conn_priv_max = LDAP_BACK_CONN_PRIV_DEFAULT;

	mi->mi_ldap_extra = (ldap_extra_t *)bi->bi_extra;

	be->be_private = mi;
	be->be_cf_ocs = be->bd_info->bi_cf_ocs;

	return 0;
}
示例#5
0
文件: tools.c 项目: rouzier/openldap
int bdb_tool_entry_open(
	BackendDB *be, int mode )
{
	struct bdb_info *bdb = (struct bdb_info *) be->be_private;

	/* initialize key and data thangs */
	DBTzero( &key );
	DBTzero( &data );
	key.flags = DB_DBT_USERMEM;
	key.data = &nid;
	key.size = key.ulen = sizeof( nid );
	data.flags = DB_DBT_USERMEM;

	if (cursor == NULL) {
		int rc = bdb->bi_id2entry->bdi_db->cursor(
			bdb->bi_id2entry->bdi_db, bdb->bi_cache.c_txn, &cursor,
			bdb->bi_db_opflags );
		if( rc != 0 ) {
			return -1;
		}
	}

	/* Set up for threaded slapindex */
	if (( slapMode & (SLAP_TOOL_QUICK|SLAP_TOOL_READONLY)) == SLAP_TOOL_QUICK ) {
		if ( !bdb_tool_info ) {
#ifdef USE_TRICKLE
			ldap_pvt_thread_mutex_init( &bdb_tool_trickle_mutex );
			ldap_pvt_thread_cond_init( &bdb_tool_trickle_cond );
			ldap_pvt_thread_cond_init( &bdb_tool_trickle_cond_end );
			ldap_pvt_thread_pool_submit( &connection_pool, bdb_tool_trickle_task, bdb->bi_dbenv );
#endif

			ldap_pvt_thread_mutex_init( &bdb_tool_index_mutex );
			ldap_pvt_thread_cond_init( &bdb_tool_index_cond_main );
			ldap_pvt_thread_cond_init( &bdb_tool_index_cond_work );
			if ( bdb->bi_nattrs ) {
				int i;
				bdb_tool_threads = slap_tool_thread_max - 1;
				if ( bdb_tool_threads > 1 ) {
					bdb_tool_index_threads = ch_malloc( bdb_tool_threads * sizeof( int ));
					bdb_tool_index_rec = ch_malloc( bdb->bi_nattrs * sizeof( IndexRec ));
					bdb_tool_index_tcount = bdb_tool_threads - 1;
					for (i=1; i<bdb_tool_threads; i++) {
						int *ptr = ch_malloc( sizeof( int ));
						*ptr = i;
						ldap_pvt_thread_pool_submit( &connection_pool,
							bdb_tool_index_task, ptr );
					}
				}
			}
			bdb_tool_info = bdb;
		}
	}

	return 0;
}
示例#6
0
static void tlso_thr_init( void )
{
	int i;

	for( i=0; i< CRYPTO_NUM_LOCKS ; i++ ) {
		ldap_pvt_thread_mutex_init( &tlso_mutexes[i] );
	}
	ldap_pvt_thread_mutex_init( &tlso_dh_mutex );
	CRYPTO_set_locking_callback( tlso_locking_cb );
	CRYPTO_set_id_callback( tlso_thread_self );
}
示例#7
0
/*
 * Allocate and initialize an St struct.
 */
int
St_init(
    St **st
)
{
    if ( st == NULL ) {
	return -1;
    }

    (*st) = (St *) malloc( sizeof( St ));
    if ( *st == NULL ) {
	return -1;
    }

    ldap_pvt_thread_mutex_init( &((*st)->st_mutex) );
    (*st)->st_data = NULL;
    (*st)->st_fp = NULL;
    (*st)->st_lfp = NULL;
    (*st)->st_nreplicas = 0;
    (*st)->st_err_logged = 0;
    (*st)->st_update = St_update;
    (*st)->st_add = St_add;
    (*st)->st_write = St_write;
    (*st)->st_read = St_read;
    (*st)->st_lock = St_lock;
    (*st)->st_unlock = St_unlock;
    return 0;
}
示例#8
0
文件: config.c 项目: Joywar/openldap
/*
 * Parses a plugin map
 */
static int
rewrite_parse_builtin_map(
		struct rewrite_info *info,
		const char *fname,
		int lineno,
		int argc,
		char **argv
)
{
	struct rewrite_builtin_map *map;
	
#define MAP_TYPE	1
#define MAP_NAME	2
	
	assert( info != NULL );
	assert( fname != NULL );
	assert( argc > 2 );
	assert( argv != NULL );
	assert( strcasecmp( argv[ 0 ], "rewriteMap" ) == 0 );

	map = calloc( sizeof( struct rewrite_builtin_map ), 1 );
	if ( map == NULL ) {
		return REWRITE_ERR;
	}

	map->lb_name = strdup( argv[ MAP_NAME ] );
	if ( map->lb_name == NULL ) {
		free( map );
		return REWRITE_ERR;
	}
	
	/*
	 * Built-in ldap map
	 */
	if (( map->lb_mapper = rewrite_mapper_find( argv[ MAP_TYPE ] ))) {
		map->lb_type = REWRITE_BUILTIN_MAP;

#ifdef USE_REWRITE_LDAP_PVT_THREADS
		if ( ldap_pvt_thread_mutex_init( & map->lb_mutex ) ) {
			free( map->lb_name );
			free( map );
			return REWRITE_ERR;
		}
#endif /* USE_REWRITE_LDAP_PVT_THREADS */
		
		map->lb_private = map->lb_mapper->rm_config( fname, lineno,
				argc - 3, argv + 3 );
		
	/* 
	 * Error
	 */	
	} else {
		free( map );
		Debug( LDAP_DEBUG_ANY, "[%s:%d] unknown map type\n%s",
				fname, lineno, "" );
		return -1;
	}

	return rewrite_builtin_map_insert( info, map );
}
示例#9
0
static int
ldap_distproc_db_init(
	BackendDB *be,
	ConfigReply *cr )
{
	slap_overinst	*on = (slap_overinst *)be->bd_info;
	ldap_distproc_t	*lc = NULL;

	if ( lback == NULL ) {
		lback = backend_info( "ldap" );

		if ( lback == NULL ) {
			return 1;
		}
	}

	lc = ch_malloc( sizeof( ldap_distproc_t ) );
	if ( lc == NULL ) {
		return 1;
	}
	memset( lc, 0, sizeof( ldap_distproc_t ) );
	ldap_pvt_thread_mutex_init( &lc->lc_lai.lai_mutex );

	on->on_bi.bi_private = (void *)lc;

	return 0;
}
示例#10
0
static int
ndb_db_init( BackendDB *be, ConfigReply *cr )
{
	struct ndb_info	*ni;
	int rc = 0;

	Debug( LDAP_DEBUG_TRACE,
		LDAP_XSTRING(ndb_db_init) ": Initializing ndb database\n",
		0, 0, 0 );

	/* allocate backend-database-specific stuff */
	ni = (struct ndb_info *) ch_calloc( 1, sizeof(struct ndb_info) );

	be->be_private = ni;
	be->be_cf_ocs = be->bd_info->bi_cf_ocs;

	ni->ni_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;

	ldap_pvt_thread_rdwr_init( &ni->ni_ai_rwlock );
	ldap_pvt_thread_rdwr_init( &ni->ni_oc_rwlock );
	ldap_pvt_thread_mutex_init( &ni->ni_conn_mutex );

#ifdef DO_MONITORING
	rc = ndb_monitor_db_init( be );
#endif

	return rc;
}
示例#11
0
static int sssvlv_db_open(
	BackendDB		*be,
	ConfigReply		*cr )
{
	slap_overinst	*on = (slap_overinst *)be->bd_info;
	sssvlv_info *si = on->on_bi.bi_private;
	int rc;
	int conn_index;

	/* If not set, default to 1/2 of available threads */
	if ( !si->svi_max )
		si->svi_max = connection_pool_max / 2;

	if ( dtblsize && !sort_conns ) {
		ldap_pvt_thread_mutex_init( &sort_conns_mutex );
		/* accommodate for c_conn_idx == -1 */
		sort_conns = ch_calloc( dtblsize + 1, sizeof(sort_op **) );
		for ( conn_index = 0 ; conn_index < dtblsize + 1 ; conn_index++ ) {
			sort_conns[conn_index] = ch_calloc( si->svi_max_percon, sizeof(sort_op *) );
		}
		sort_conns++;
	}

	rc = overlay_register_control( be, LDAP_CONTROL_SORTREQUEST );
	if ( rc == LDAP_SUCCESS )
		rc = overlay_register_control( be, LDAP_CONTROL_VLVREQUEST );
	return rc;
}
示例#12
0
int
perl_back_initialize(
    BackendInfo	*bi
)
{
    char *embedding[] = { "", "-e", "0" };
    int argc = 3;

    bi->bi_open = NULL;
    bi->bi_config = 0;
    bi->bi_close = perl_back_close;
    bi->bi_destroy = 0;

    bi->bi_db_init = perl_back_db_init;
    bi->bi_db_config = perl_back_db_config;
    bi->bi_db_open = perl_back_db_open;
    bi->bi_db_close = 0;
    bi->bi_db_destroy = perl_back_db_destroy;

    bi->bi_op_bind = perl_back_bind;
    bi->bi_op_unbind = 0;
    bi->bi_op_search = perl_back_search;
    bi->bi_op_compare = perl_back_compare;
    bi->bi_op_modify = perl_back_modify;
    bi->bi_op_modrdn = perl_back_modrdn;
    bi->bi_op_add = perl_back_add;
    bi->bi_op_delete = perl_back_delete;
    bi->bi_op_abandon = 0;

    bi->bi_extended = 0;

    bi->bi_chk_referrals = 0;

    bi->bi_connection_init = 0;
    bi->bi_connection_destroy = 0;

    /* injecting code from perl_back_open, because using fonction reference  (bi->bi_open) is not functional */
    Debug( LDAP_DEBUG_TRACE, "perl backend open\n", 0, 0, 0 );

    if( PERL_INTERPRETER != NULL ) {
        Debug( LDAP_DEBUG_ANY, "perl backend open: already opened\n",
               0, 0, 0 );
        return 1;
    }

    ldap_pvt_thread_mutex_init( &perl_interpreter_mutex );

#ifdef PERL_SYS_INIT3
    PERL_SYS_INIT3(&argc, &embedding, (char ***)NULL);
#endif
    PERL_INTERPRETER = perl_alloc();
    perl_construct(PERL_INTERPRETER);
#ifdef PERL_EXIT_DESTRUCT_END
    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
#endif
    perl_parse(PERL_INTERPRETER, perl_back_xs_init, argc, embedding, (char **)NULL);
    perl_run(PERL_INTERPRETER);
    return perl_back_init_cf( bi );
}
示例#13
0
int
backsql_db_init(
	BackendDB 	*bd )
{
	backsql_info *si;
 
	Debug( LDAP_DEBUG_TRACE, "==>backsql_db_init()\n", 0, 0, 0 );
	si = (backsql_info *)ch_calloc( 1, sizeof( backsql_info ) );
	memset( si, '\0', sizeof( backsql_info ) );
	ldap_pvt_thread_mutex_init( &si->dbconn_mutex );
	ldap_pvt_thread_mutex_init( &si->schema_mutex );
	backsql_init_db_env( si );

	bd->be_private = si;
	Debug( LDAP_DEBUG_TRACE, "<==backsql_db_init()\n", 0, 0, 0 );
	return 0;
}
示例#14
0
int
meta_back_db_init(
	Backend		*be,
	ConfigReply	*cr)
{
	metainfo_t	*mi;
	int		i;

	mi = ch_calloc( 1, sizeof( metainfo_t ) );
	if ( mi == NULL ) {
 		return -1;
 	}

	/* set default flags */
	mi->mi_flags =
		META_BACK_F_DEFER_ROOTDN_BIND;

	/*
	 * At present the default is no default target;
	 * this may change
	 */
	mi->mi_defaulttarget = META_DEFAULT_TARGET_NONE;
	mi->mi_bind_timeout.tv_sec = 0;
	mi->mi_bind_timeout.tv_usec = META_BIND_TIMEOUT;

	mi->mi_rebind_f = meta_back_default_rebind;
	mi->mi_urllist_f = meta_back_default_urllist;

	ldap_pvt_thread_mutex_init( &mi->mi_conninfo.lai_mutex );
	ldap_pvt_thread_mutex_init( &mi->mi_cache.mutex );

	/* safe default */
	mi->mi_nretries = META_RETRY_DEFAULT;
	mi->mi_version = LDAP_VERSION3;

	for ( i = LDAP_BACK_PCONN_FIRST; i < LDAP_BACK_PCONN_LAST; i++ ) {
		mi->mi_conn_priv[ i ].mic_num = 0;
		LDAP_TAILQ_INIT( &mi->mi_conn_priv[ i ].mic_priv );
	}
	mi->mi_conn_priv_max = LDAP_BACK_CONN_PRIV_DEFAULT;
	
	be->be_private = mi;

	return 0;
}
示例#15
0
int slapi_int_init_object_extensions(void)
{
	memset( &registered_extensions, 0, sizeof( registered_extensions ) );

	if ( ldap_pvt_thread_mutex_init( &registered_extensions.mutex ) != 0 ) {
		return -1;
	}

	return 0;
}
示例#16
0
static int autoPosixIds_db_init( BackendDB *be, ConfigReply *cr ) {

	slap_overinst *on = (slap_overinst *)be->bd_info;
	autoPosixIds_data *ad = ch_calloc(1, sizeof(autoPosixIds_data));

	on->on_bi.bi_private = ad;
	ldap_pvt_thread_mutex_init( &ad->mutex );
	ad->max_uid_number = 0;

	return 0;
}
示例#17
0
/*
 * initializes log subentry
 */
int
monitor_subsys_log_init(
	BackendDB		*be,
	monitor_subsys_t	*ms )
{
	ms->mss_open = monitor_subsys_log_open;
	ms->mss_modify = monitor_subsys_log_modify;

	ldap_pvt_thread_mutex_init( &monitor_log_mutex );

	return( 0 );
}
示例#18
0
void quorum_global_init() {
	int rc;

	assert(quorum_list == QR_POISON);
	rc = ldap_pvt_thread_mutex_init(&quorum_mutex);
	if (rc) {
		Debug( LDAP_DEBUG_ANY, "mutex_init failed for quorum_mutex, rc = %d\n", rc );
		LDAP_BUG();
		exit( EXIT_FAILURE );
	}
	quorum_list = NULL;
}
示例#19
0
static int
mdb_db_init( BackendDB *be, ConfigReply *cr )
{
	struct mdb_info	*mdb;
	int rc;

	Debug( LDAP_DEBUG_TRACE,
		LDAP_XSTRING(mdb_db_init) ": Initializing mdb database\n" );

#if MDBX_MODE_ENABLED
	unsigned flags = mdbx_setup_debug(MDBX_DBG_DNT, mdbx_debug, MDBX_DBG_DNT);
	flags &= ~(MDBX_DBG_TRACE | MDBX_DBG_EXTRA | MDBX_DBG_ASSERT);

	if (reopenldap_mode_check())
		flags |= MDBX_DBG_ASSERT;
#	if LDAP_DEBUG > 1
		flags |= MDBX_DBG_PRINT | MDBX_DBG_TRACE;
#	endif /* LDAP_DEBUG > 1 */
#	if LDAP_DEBUG > 2
		flags |= MDBX_DBG_EXTRA;
#	endif /* LDAP_DEBUG > 2 */
	mdbx_setup_debug(flags, (MDBX_debug_func*) MDBX_DBG_DNT, MDBX_DBG_DNT);
#endif /* MDBX_MODE_ENABLED */

	/* allocate backend-database-specific stuff */
	mdb = (struct mdb_info *) ch_calloc( 1, sizeof(struct mdb_info) );

	/* DBEnv parameters */
	mdb->mi_dbenv_home = ch_strdup( SLAPD_DEFAULT_DB_DIR );
	mdb->mi_dbenv_flags = 0;
	mdb->mi_dbenv_mode = SLAPD_DEFAULT_DB_MODE;

	mdb->mi_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;
	mdb->mi_search_stack = NULL;

	mdb->mi_mapsize = DEFAULT_MAPSIZE;
	mdb->mi_rtxn_size = DEFAULT_RTXN_SIZE;

	be->be_private = mdb;
	be->be_cf_ocs = be->bd_info->bi_cf_ocs;

#ifndef MDB_MULTIPLE_SUFFIXES
	SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_ONE_SUFFIX;
#endif

	slap_backtrace_set_dir( mdb->mi_dbenv_home );

	ldap_pvt_thread_mutex_init( &mdb->mi_ads_mutex );

	rc = mdb_monitor_db_init( be );

	return rc;
}
示例#20
0
文件: init.c 项目: Joywar/openldap
static int
bdb_db_init( BackendDB *be, ConfigReply *cr )
{
	struct bdb_info	*bdb;
	int rc;

	Debug( LDAP_DEBUG_TRACE,
		LDAP_XSTRING(bdb_db_init) ": Initializing " BDB_UCTYPE " database\n",
		0, 0, 0 );

	/* allocate backend-database-specific stuff */
	bdb = (struct bdb_info *) ch_calloc( 1, sizeof(struct bdb_info) );

	/* DBEnv parameters */
	bdb->bi_dbenv_home = ch_strdup( SLAPD_DEFAULT_DB_DIR );
	bdb->bi_dbenv_xflags = DB_TIME_NOTGRANTED;
	bdb->bi_dbenv_mode = SLAPD_DEFAULT_DB_MODE;

	bdb->bi_cache.c_maxsize = DEFAULT_CACHE_SIZE;
	bdb->bi_cache.c_minfree = 1;

	bdb->bi_lock_detect = DB_LOCK_DEFAULT;
	bdb->bi_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;
	bdb->bi_search_stack = NULL;

	ldap_pvt_thread_mutex_init( &bdb->bi_database_mutex );
	ldap_pvt_thread_mutex_init( &bdb->bi_lastid_mutex );
#ifdef BDB_HIER
	ldap_pvt_thread_mutex_init( &bdb->bi_modrdns_mutex );
#endif
	ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_lru_mutex );
	ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_count_mutex );
	ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_eifree_mutex );
	ldap_pvt_thread_mutex_init( &bdb->bi_cache.c_dntree.bei_kids_mutex );
	ldap_pvt_thread_rdwr_init ( &bdb->bi_cache.c_rwlock );
	ldap_pvt_thread_rdwr_init( &bdb->bi_idl_tree_rwlock );
	ldap_pvt_thread_mutex_init( &bdb->bi_idl_tree_lrulock );

	be->be_private = bdb;
	be->be_cf_ocs = be->bd_info->bi_cf_ocs;

#ifndef BDB_MULTIPLE_SUFFIXES
	SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_ONE_SUFFIX;
#endif

	rc = bdb_monitor_db_init( be );

	return rc;
}
示例#21
0
文件: authzid.c 项目: Joywar/openldap
static int
authzid_initialize( void )
{
	ldap_pvt_thread_mutex_init( &authzid_mutex );

	authzid.on_bi.bi_type = "authzid";

	authzid.on_bi.bi_db_init = authzid_db_init;
	authzid.on_bi.bi_db_destroy = authzid_db_destroy;
	authzid.on_bi.bi_op_bind = authzid_op_bind;

	return overlay_register( &authzid );
}
示例#22
0
static int
auditlog_db_init(
	BackendDB *be,
	ConfigReply *cr
)
{
	slap_overinst *on = (slap_overinst *)be->bd_info;
	auditlog_data *ad = ch_calloc(1, sizeof(auditlog_data));

	on->on_bi.bi_private = ad;
	ldap_pvt_thread_mutex_init( &ad->ad_mutex );
	return 0;
}
示例#23
0
/*
 * Initialize connection management infrastructure.
 */
int connections_init(void)
{
	int i;

	assert( connections == NULL );

	if( connections != NULL) {
		Debug( LDAP_DEBUG_ANY, "connections_init: already initialized.\n",
			0, 0, 0 );
		return -1;
	}

	/* should check return of every call */
	ldap_pvt_thread_mutex_init( &connections_mutex );
	ldap_pvt_thread_mutex_init( &conn_nextid_mutex );

	connections = (Connection *) ch_calloc( dtblsize, sizeof(Connection) );

	if( connections == NULL ) {
		Debug( LDAP_DEBUG_ANY, "connections_init: "
			"allocation (%d*%ld) of connection array failed\n",
			dtblsize, (long) sizeof(Connection), 0 );
		return -1;
	}

	assert( connections[0].c_struct_state == SLAP_C_UNINITIALIZED );
	assert( connections[dtblsize-1].c_struct_state == SLAP_C_UNINITIALIZED );

	for (i=0; i<dtblsize; i++) connections[i].c_conn_idx = i;

	/*
	 * per entry initialization of the Connection array initialization
	 * will be done by connection_init()
	 */ 

	return 0;
}
示例#24
0
int
meta_back_db_init(
		Backend	*be
)
{
	struct metainfo	*li;

	li = ch_calloc( 1, sizeof( struct metainfo ) );
	if ( li == NULL ) {
 		return -1;
 	}
	
	/*
	 * At present the default is no default target;
	 * this may change
	 */
	li->defaulttarget = META_DEFAULT_TARGET_NONE;

	ldap_pvt_thread_mutex_init( &li->conn_mutex );
	ldap_pvt_thread_mutex_init( &li->cache.mutex );
	be->be_private = li;

	return 0;
}
示例#25
0
static int example_open(BackendDB *be, ConfigReply *cr) {
  slap_overinst *on = (slap_overinst *)be->bd_info;
  example_data *ex = on->on_bi.bi_private;
  ObjectClass *oc_kerberos;
  
  ldap_pvt_thread_mutex_init(&ex->examplemutex);
  //  if (krb5_init_context(&ex->context)) return -1;

  oc_kerberos = oc_find("krbPrincipal");
  if (!oc_kerberos) return -1;

  if (!ex->keytabpath) ex->keytabpath = DEFAULT_KEYTAB_PATH;

  return 0;
}
示例#26
0
文件: init.c 项目: dago/openldap
int
backsql_db_init(
	BackendDB 	*bd,
	ConfigReply	*cr )
{
	backsql_info	*bi;
	int		rc = 0;
 
	Debug( LDAP_DEBUG_TRACE, "==>backsql_db_init()\n", 0, 0, 0 );

	bi = (backsql_info *)ch_calloc( 1, sizeof( backsql_info ) );
	ldap_pvt_thread_mutex_init( &bi->sql_dbconn_mutex );
	ldap_pvt_thread_mutex_init( &bi->sql_schema_mutex );

	if ( backsql_init_db_env( bi ) != SQL_SUCCESS ) {
		rc = -1;
	}

	bd->be_private = bi;

	Debug( LDAP_DEBUG_TRACE, "<==backsql_db_init()\n", 0, 0, 0 );

	return rc;
}
示例#27
0
文件: seqmod.c 项目: 1ack/Impala
static int
seqmod_db_open(
	BackendDB *be,
	ConfigReply *cr
)
{
	slap_overinst	*on = (slap_overinst *)be->bd_info;
	seqmod_info	*sm;

	sm = ch_calloc(1, sizeof(seqmod_info));
	on->on_bi.bi_private = sm;

	ldap_pvt_thread_mutex_init( &sm->sm_mutex );

	return 0;
}
示例#28
0
文件: vc.c 项目: Joywar/openldap
static int
vc_initialize( void )
{
	int rc;

	rc = load_extop2( (struct berval *)&vc_exop_oid_bv,
		SLAP_EXOP_HIDE, vc_exop, 0 );
	if ( rc != LDAP_SUCCESS ) {
		Debug( LDAP_DEBUG_ANY,
			"vc_initialize: unable to register VerifyCredentials exop: %d.\n",
			rc, 0, 0 );
	}

	ldap_pvt_thread_mutex_init( &vc_mutex );

	return rc;
}
示例#29
0
文件: entry.c 项目: cptaffe/openldap
monitor_entry_t *
monitor_back_entrypriv_create( void )
{
	monitor_entry_t	*mp;

	mp = ( monitor_entry_t * )ch_calloc( sizeof( monitor_entry_t ), 1 );

	mp->mp_next = NULL;
	mp->mp_children = NULL;
	mp->mp_info = NULL;
	mp->mp_flags = MONITOR_F_NONE;
	mp->mp_cb = NULL;

	ldap_pvt_thread_mutex_init( &mp->mp_mutex );

	return mp;
}
/*
 * call from within bdb_db_init()
 */
int
bdb_monitor_db_init( BackendDB *be )
{
	struct bdb_info		*bdb = (struct bdb_info *) be->be_private;

	if ( bdb_monitor_initialize() == LDAP_SUCCESS ) {
		/* monitoring in back-bdb is on by default */
		SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_MONITORING;
	}

#ifdef BDB_MONITOR_IDX
	bdb->bi_idx = NULL;
	ldap_pvt_thread_mutex_init( &bdb->bi_idx_mutex );
#endif /* BDB_MONITOR_IDX */

	return 0;
}