static int vernum_db_init( BackendDB *be, ConfigReply *cr) { slap_overinst *on = (slap_overinst *) be->bd_info; vernum_t *vn = NULL; if ( SLAP_ISGLOBALOVERLAY( be ) ) { Log0( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "vernum_db_init: vernum cannot be used as global overlay.\n" ); return 1; } if ( be->be_nsuffix == NULL ) { Log0( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "vernum_db_init: database must have suffix\n" ); return 1; } if ( BER_BVISNULL( &be->be_rootndn ) || BER_BVISEMPTY( &be->be_rootndn ) ) { Log1( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "vernum_db_init: missing rootdn for database DN=\"%s\", YMMV\n", be->be_suffix[ 0 ].bv_val ); } vn = (vernum_t *)ch_calloc( 1, sizeof( vernum_t ) ); on->on_bi.bi_private = (void *)vn; return 0; }
static int authzid_db_init( BackendDB *be, ConfigReply *cr ) { if ( !SLAP_ISGLOBALOVERLAY( be ) ) { /* do not allow slapo-ppolicy to be global by now (ITS#5858) */ if ( cr ) { snprintf( cr->msg, sizeof(cr->msg), "slapo-authzid must be global" ); Debug( LDAP_DEBUG_ANY, "%s\n", cr->msg, 0, 0 ); } return 1; } int rc; rc = register_supported_control( LDAP_CONTROL_AUTHZID_REQUEST, SLAP_CTRL_GLOBAL|SLAP_CTRL_BIND|SLAP_CTRL_HIDE, NULL, parse_authzid_ctrl, &authzid_cid ); if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "authzid_initialize: Failed to register control '%s' (%d)\n", LDAP_CONTROL_AUTHZID_REQUEST, rc, 0 ); return rc; } return LDAP_SUCCESS; }
static int pguid_db_init( BackendDB *be, ConfigReply *cr) { if ( SLAP_ISGLOBALOVERLAY( be ) ) { Log0( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "pguid_db_init: pguid cannot be used as global overlay.\n" ); return 1; } if ( be->be_nsuffix == NULL ) { Log0( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "pguid_db_init: database must have suffix\n" ); return 1; } if ( BER_BVISNULL( &be->be_rootndn ) || BER_BVISEMPTY( &be->be_rootndn ) ) { Log1( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "pguid_db_init: missing rootdn for database DN=\"%s\", YMMV\n", be->be_suffix[ 0 ].bv_val ); } return 0; }
static int dds_db_init( BackendDB *be, ConfigReply *cr) { slap_overinst *on = (slap_overinst *)be->bd_info; dds_info_t *di; BackendInfo *bi = on->on_info->oi_orig; if ( SLAP_ISGLOBALOVERLAY( be ) ) { Log0( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "DDS cannot be used as global overlay.\n" ); return 1; } /* check support for required functions */ /* FIXME: some could be provided by other overlays in between */ if ( bi->bi_op_add == NULL /* object creation */ || bi->bi_op_delete == NULL /* object deletion */ || bi->bi_op_modify == NULL /* object refresh */ || bi->bi_op_search == NULL /* object expiration */ || bi->bi_entry_get_rw == NULL ) /* object type/existence checking */ { Log1( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "DDS backend \"%s\" does not provide " "required functionality.\n", bi->bi_type ); return 1; } di = (dds_info_t *)ch_calloc( 1, sizeof( dds_info_t ) ); on->on_bi.bi_private = di; di->di_max_ttl = DDS_RF2589_DEFAULT_TTL; di->di_max_ttl = DDS_RF2589_DEFAULT_TTL; ldap_pvt_thread_mutex_init( &di->di_mutex ); SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_DYNAMIC; return 0; }
static int usn_db_init( BackendDB *be, ConfigReply *cr ) { slap_overinst *on = (slap_overinst *)be->bd_info; usn_info_t *ui; if ( SLAP_ISGLOBALOVERLAY( be ) ) { Debug( LDAP_DEBUG_ANY, "usn must be instantiated within a database.\n", 0, 0, 0 ); return 1; } ui = ch_calloc(1, sizeof(usn_info_t)); ldap_pvt_thread_mutex_init( &ui->ui_mutex ); on->on_bi.bi_private = ui; return 0; }