X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-ldbm%2Finit.c;h=aff7a076b154c1af21453bafaff5bdd540c41b62;hb=295f3ba0aa4cdce147612da6400f93e8f4b0a79f;hp=1a01c01559dd284f9304a2982b5030e490f5a259;hpb=5a470f89594d1d8ca986801376f3b88671fdde20;p=openldap diff --git a/servers/slapd/back-ldbm/init.c b/servers/slapd/back-ldbm/init.c index 1a01c01559..aff7a076b1 100644 --- a/servers/slapd/back-ldbm/init.c +++ b/servers/slapd/back-ldbm/init.c @@ -1,4 +1,9 @@ /* init.c - initialize ldbm backend */ +/* $OpenLDAP$ */ +/* + * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ #include "portable.h" @@ -11,15 +16,16 @@ #include "back-ldbm.h" #ifdef SLAPD_LDBM_DYNAMIC -#include -G_MODULE_EXPORT void init_module(int argc, char *argv[]) { - BackendInfo bi; +int back_ldbm_LTX_init_module(int argc, char *argv[]) { + BackendInfo bi; - bi.bi_type = "ldbm"; - bi.bi_init = ldbm_back_initialize; + memset( &bi, '\0', sizeof(bi) ); + bi.bi_type = "ldbm"; + bi.bi_init = ldbm_back_initialize; - backend_add(&bi); + backend_add(&bi); + return 0; } #endif /* SLAPD_LDBM_DYNAMIC */ @@ -29,6 +35,13 @@ ldbm_back_initialize( BackendInfo *bi ) { + static char *controls[] = { + LDAP_CONTROL_MANAGEDSAIT, + NULL + }; + + bi->bi_controls = controls; + bi->bi_open = ldbm_back_open; bi->bi_config = 0; bi->bi_close = ldbm_back_close; @@ -50,10 +63,30 @@ ldbm_back_initialize( bi->bi_op_delete = ldbm_back_delete; bi->bi_op_abandon = ldbm_back_abandon; + bi->bi_extended = ldbm_back_extended; + bi->bi_entry_release_rw = ldbm_back_entry_release_rw; -#ifdef SLAPD_ACLGROUPS bi->bi_acl_group = ldbm_back_group; -#endif + bi->bi_acl_attribute = ldbm_back_attribute; + bi->bi_chk_referrals = ldbm_back_referrals; + + /* + * hooks for slap tools + */ + bi->bi_tool_entry_open = ldbm_tool_entry_open; + bi->bi_tool_entry_close = ldbm_tool_entry_close; + bi->bi_tool_entry_first = ldbm_tool_entry_first; + bi->bi_tool_entry_next = ldbm_tool_entry_next; + bi->bi_tool_entry_get = ldbm_tool_entry_get; + bi->bi_tool_entry_put = ldbm_tool_entry_put; + bi->bi_tool_index_attr = ldbm_tool_index_attr; + bi->bi_tool_sync = ldbm_tool_sync; + +#ifdef HAVE_CYRUS_SASL + bi->bi_sasl_authorize = 0; + bi->bi_sasl_getsecret = 0; + bi->bi_sasl_putsecret = 0; +#endif /* HAVE_CYRUS_SASL */ bi->bi_connection_init = 0; bi->bi_connection_destroy = 0; @@ -99,7 +132,6 @@ ldbm_back_db_init( ) { struct ldbminfo *li; - char *argv[ 4 ]; /* allocate backend-database-specific stuff */ li = (struct ldbminfo *) ch_calloc( 1, sizeof(struct ldbminfo) ); @@ -107,18 +139,17 @@ ldbm_back_db_init( /* arrange to read nextid later (on first request for it) */ li->li_nextid = NOID; -#if SLAPD_NEXTID_CHUNK > 1 - li->li_nextid_wrote = NOID; -#endif - /* default cache size */ li->li_cache.c_maxsize = DEFAULT_CACHE_SIZE; /* default database cache size */ li->li_dbcachesize = DEFAULT_DBCACHE_SIZE; - /* default cache mode is sync on write */ - li->li_dbcachewsync = 1; + /* default db mode is with locking */ + li->li_dblocking = 1; + + /* default db mode is with write synchronization */ + li->li_dbwritesync = 1; /* default file creation mode */ li->li_mode = DEFAULT_MODE; @@ -126,30 +157,6 @@ ldbm_back_db_init( /* default database directory */ li->li_directory = ch_strdup( DEFAULT_DB_DIRECTORY ); - /* always index dn, id2children, objectclass (used in some searches) */ - if ( !at_find( "dn" ) ) { - argv[ 0 ] = "dn"; - argv[ 1 ] = "dn"; - argv[ 2 ] = NULL; - attr_syntax_config( "ldbm dn initialization", 0, 2, argv ); - } - argv[ 0 ] = "dn"; - argv[ 1 ] = "sub"; - argv[ 2 ] = "eq"; - argv[ 3 ] = NULL; - attr_index_config( li, "ldbm dn initialization", 0, 3, argv, 1 ); - argv[ 0 ] = "id2children"; - argv[ 1 ] = "eq"; - argv[ 2 ] = NULL; - attr_index_config( li, "ldbm id2children initialization", 0, 2, argv, - 1 ); - argv[ 0 ] = "objectclass"; - argv[ 1 ] = ch_strdup( "pres,eq" ); - argv[ 2 ] = NULL; - attr_index_config( li, "ldbm objectclass initialization", 0, 2, argv, - 1 ); - free( argv[ 1 ] ); - /* initialize various mutex locks & condition variables */ ldap_pvt_thread_mutex_init( &li->li_root_mutex ); ldap_pvt_thread_mutex_init( &li->li_add_mutex ); @@ -177,9 +184,7 @@ ldbm_back_db_destroy( ) { /* should free/destroy every in be_private */ -#ifdef SLAP_CLEANUP struct ldbminfo *li = (struct ldbminfo *) be->be_private; - free( li->li_nextid_file ); free( li->li_directory ); attr_index_destroy( li->li_attrs ); @@ -189,8 +194,9 @@ ldbm_back_db_destroy( ldap_pvt_thread_mutex_destroy( &li->li_nextid_mutex ); ldap_pvt_thread_mutex_destroy( &li->li_dbcache_mutex ); ldap_pvt_thread_cond_destroy( &li->li_dbcache_cv ); -#endif /* SLAP_CLEANUP */ + free( be->be_private ); be->be_private = NULL; + return 0; }