cb_init.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
  3. * Copyright (C) 2005 Red Hat, Inc.
  4. * All rights reserved.
  5. *
  6. * License: GPL (version 3 or any later version).
  7. * See LICENSE for details.
  8. * END COPYRIGHT BLOCK **/
  9. #ifdef HAVE_CONFIG_H
  10. # include <config.h>
  11. #endif
  12. #include "cb.h"
  13. Slapi_PluginDesc chainingdbdesc = { CB_PLUGIN_NAME,
  14. VENDOR,
  15. DS_PACKAGE_VERSION,
  16. CB_PLUGIN_DESCRIPTION };
  17. static cb_backend * cb_backend_type=NULL;
  18. cb_backend * cb_get_backend_type() {
  19. return cb_backend_type;
  20. }
  21. static void cb_set_backend_type(cb_backend * cb) {
  22. cb_backend_type=cb;
  23. }
  24. /* Initialization function */
  25. int
  26. chaining_back_init( Slapi_PBlock *pb )
  27. {
  28. int rc=0;
  29. cb_backend *cb;
  30. struct slapdplugin *p;
  31. cb = (cb_backend *) slapi_ch_calloc( 1, sizeof(cb_backend));
  32. /* Record the identity of the chaining plugin. used during internal ops.*/
  33. slapi_pblock_get(pb, SLAPI_PLUGIN_IDENTITY, &(cb->identity));
  34. /* keep a pointer back to the plugin */
  35. slapi_pblock_get(pb, SLAPI_PLUGIN, &p);
  36. cb->plugin = p;
  37. /* Initialize misc. fields */
  38. cb->config.rwl_config_lock = slapi_new_rwlock();
  39. rc = slapi_pblock_set( pb, SLAPI_PLUGIN_PRIVATE, (void *) cb );
  40. /* These DNs are already normalized */
  41. cb->pluginDN=slapi_ch_smprintf("cn=%s,%s",CB_PLUGIN_NAME,PLUGIN_BASE_DN);
  42. cb->configDN=slapi_ch_smprintf("cn=config,%s",cb->pluginDN);
  43. /* Set backend callback functions */
  44. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_VERSION, SLAPI_PLUGIN_VERSION_03 );
  45. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DESCRIPTION, (void *)&chainingdbdesc );
  46. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_SEARCH_FN,
  47. (void *) chainingdb_build_candidate_list );
  48. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_NEXT_SEARCH_ENTRY_FN,
  49. (void *) chainingdb_next_search_entry );
  50. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_PREV_SEARCH_RESULTS_FN,
  51. (void *) chainingdb_prev_search_results );
  52. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_SEARCH_RESULTS_RELEASE_FN,
  53. (void *) chaining_back_search_results_release );
  54. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_START_FN,
  55. (void *) chainingdb_start ) ;
  56. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_BIND_FN,
  57. (void *) chainingdb_bind ) ;
  58. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_ADD_FN,
  59. (void *) chaining_back_add );
  60. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_DELETE_FN,
  61. (void *) chaining_back_delete );
  62. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_COMPARE_FN,
  63. (void *) chaining_back_compare );
  64. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_MODIFY_FN,
  65. (void *) chaining_back_modify );
  66. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_MODRDN_FN,
  67. (void *) chaining_back_modrdn );
  68. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_ABANDON_FN,
  69. (void *) chaining_back_abandon );
  70. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_SIZE_FN,
  71. (void *) cb_db_size );
  72. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_CLOSE_FN,
  73. (void *) cb_back_close );
  74. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_CLEANUP_FN,
  75. (void *) cb_back_cleanup );
  76. /****
  77. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_ENTRY_RELEASE_FN,
  78. (void *) chaining_back_entry_release );
  79. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_INIT_INSTANCE_FN,
  80. (void *) chaining_back_init);
  81. rc |= slapi_pblock_set( pb, SLAPI_PLUGIN_DB_TEST_FN,
  82. (void *) cb_back_test );
  83. ****/
  84. /*
  85. ** The following callbacks are not implemented
  86. ** by the chaining backend
  87. ** - SLAPI_PLUGIN_DB_FLUSH_FN
  88. ** - SLAPI_PLUGIN_DB_SEQ_FN
  89. ** - SLAPI_PLUGIN_DB_RMDB_FN
  90. ** - SLAPI_PLUGIN_DB_DB2INDEX_FN
  91. ** - SLAPI_PLUGIN_DB_LDIF2DB_FN
  92. ** - SLAPI_PLUGIN_DB_DB2LDIF_FN
  93. ** - SLAPI_PLUGIN_DB_ARCHIVE2DB_FN
  94. ** - SLAPI_PLUGIN_DB_DB2ARCHIVE_FN
  95. ** - SLAPI_PLUGIN_DB_BEGIN_FN
  96. ** - SLAPI_PLUGIN_DB_COMMIT_FN
  97. ** - SLAPI_PLUGIN_DB_ABORT_FN
  98. ** - SLAPI_PLUGIN_DB_NEXT_SEARCH_ENTRY_EXT_FN
  99. */
  100. if ( rc != 0 ) {
  101. slapi_log_error( SLAPI_LOG_FATAL, CB_PLUGIN_SUBSYSTEM, "chaining_back_init failed\n");
  102. return( -1 );
  103. }
  104. cb_set_backend_type(cb);
  105. return (0);
  106. }