diff options
author | cvsadm <cvsadm> | 2005-01-21 00:44:34 +0000 |
---|---|---|
committer | cvsadm <cvsadm> | 2005-01-21 00:44:34 +0000 |
commit | b2093e3016027d6b5cf06b3f91f30769bfc099e2 (patch) | |
tree | cf58939393a9032182c4fbc4441164a9456e82f8 /ldap/servers/plugins/chainingdb/cb_init.c | |
download | ds-ldapserver7x.tar.gz ds-ldapserver7x.tar.xz ds-ldapserver7x.zip |
Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)ldapserver7x
Diffstat (limited to 'ldap/servers/plugins/chainingdb/cb_init.c')
-rw-r--r-- | ldap/servers/plugins/chainingdb/cb_init.c | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/ldap/servers/plugins/chainingdb/cb_init.c b/ldap/servers/plugins/chainingdb/cb_init.c new file mode 100644 index 00000000..70af3d42 --- /dev/null +++ b/ldap/servers/plugins/chainingdb/cb_init.c @@ -0,0 +1,120 @@ +/** BEGIN COPYRIGHT BLOCK + * Copyright 2001 Sun Microsystems, Inc. + * Portions copyright 1999, 2001-2003 Netscape Communications Corporation. + * All rights reserved. + * END COPYRIGHT BLOCK **/ +#include "cb.h" + +Slapi_PluginDesc chainingdbdesc = { CB_PLUGIN_NAME, + PLUGIN_MAGIC_VENDOR_STR, + PRODUCTTEXT, + CB_PLUGIN_DESCRIPTION }; + + +static cb_backend * cb_backend_type=NULL; + +cb_backend * cb_get_backend_type() { + return cb_backend_type; +} + +static void cb_set_backend_type(cb_backend * cb) { + cb_backend_type=cb; +} + +/* Initialization function */ +#ifdef _WIN32 +__declspec(dllexport) +#endif + +int +chaining_back_init( Slapi_PBlock *pb ) +{ + + int rc=0; + cb_backend *cb; + struct slapdplugin *p; + + cb = (cb_backend *) slapi_ch_calloc( 1, sizeof(cb_backend)); + + /* Record the identity of the chaining plugin. used during internal ops.*/ + slapi_pblock_get(pb, SLAPI_PLUGIN_IDENTITY, &(cb->identity)); + + /* keep a pointer back to the plugin */ + slapi_pblock_get(pb, SLAPI_PLUGIN, &p); + cb->plugin = p; + + /* Initialize misc. fields */ + cb->config.rwl_config_lock = PR_NewRWLock(PR_RWLOCK_RANK_NONE, "chaining_db"); + rc = slapi_pblock_set( pb, SLAPI_PLUGIN_PRIVATE, (void *) cb ); + cb->pluginDN=slapi_ch_calloc( 1,strlen(PLUGIN_BASE_DN)+strlen(CB_PLUGIN_NAME)+5); + sprintf(cb->pluginDN,"cn=%s,%s",CB_PLUGIN_NAME,PLUGIN_BASE_DN); + + cb->configDN=slapi_ch_calloc( 1,strlen(cb->pluginDN)+11); + sprintf(cb->configDN,"cn=config,%s",cb->pluginDN); + + /* Set backend callback functions */ + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION, SLAPI_PLUGIN_VERSION_03 ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DESCRIPTION, (void *)&chainingdbdesc ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_SEARCH_FN, + (void *) chainingdb_build_candidate_list ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_NEXT_SEARCH_ENTRY_FN, + (void *) chainingdb_next_search_entry ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_START_FN, + (void *) chainingdb_start ) ; + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_BIND_FN, + (void *) chainingdb_bind ) ; + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_ADD_FN, + (void *) chaining_back_add ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_DELETE_FN, + (void *) chaining_back_delete ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_COMPARE_FN, + (void *) chaining_back_compare ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_MODIFY_FN, + (void *) chaining_back_modify ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_MODRDN_FN, + (void *) chaining_back_modrdn ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_ABANDON_FN, + (void *) chaining_back_abandon ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_SIZE_FN, + (void *) cb_db_size ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_CLOSE_FN, + (void *) cb_back_close ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_CLEANUP_FN, + (void *) cb_back_cleanup ); + +/**** + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_ENTRY_RELEASE_FN, + (void *) chaining_back_entry_release ); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_INIT_INSTANCE_FN, + (void *) chaining_back_init); + rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_TEST_FN, + (void *) cb_back_test ); +****/ + + /* + ** The following callbacks are not implemented + ** by the chaining backend + ** - SLAPI_PLUGIN_DB_FLUSH_FN + ** - SLAPI_PLUGIN_DB_SEQ_FN + ** - SLAPI_PLUGIN_DB_RMDB_FN + ** - SLAPI_PLUGIN_DB_DB2INDEX_FN + ** - SLAPI_PLUGIN_DB_LDIF2DB_FN + ** - SLAPI_PLUGIN_DB_DB2LDIF_FN + ** - SLAPI_PLUGIN_DB_ARCHIVE2DB_FN + ** - SLAPI_PLUGIN_DB_DB2ARCHIVE_FN + ** - SLAPI_PLUGIN_DB_BEGIN_FN + ** - SLAPI_PLUGIN_DB_COMMIT_FN + ** - SLAPI_PLUGIN_DB_ABORT_FN + ** - SLAPI_PLUGIN_DB_NEXT_SEARCH_ENTRY_EXT_FN + */ + + if ( rc != 0 ) { + slapi_log_error( SLAPI_LOG_FATAL, CB_PLUGIN_SUBSYSTEM, "chaining_back_init failed\n"); + return( -1 ); + } + + cb_set_backend_type(cb); + + return (0); +} + |