int sock_back_init_cf( BackendInfo *bi ) { bi->bi_cf_ocs = bsocs; return config_register_schema( bscfg, bsocs ); }
static int sock_over_setup() { int rc; sockover.on_bi.bi_type = "sock"; sockover.on_bi.bi_db_init = sock_over_db_init; sockover.on_bi.bi_db_destroy = sock_over_db_destroy; sockover.on_bi.bi_op_bind = sock_over_op; sockover.on_bi.bi_op_unbind = sock_over_op; sockover.on_bi.bi_op_search = sock_over_op; sockover.on_bi.bi_op_compare = sock_over_op; sockover.on_bi.bi_op_modify = sock_over_op; sockover.on_bi.bi_op_modrdn = sock_over_op; sockover.on_bi.bi_op_add = sock_over_op; sockover.on_bi.bi_op_delete = sock_over_op; sockover.on_response = sock_over_response; sockover.on_bi.bi_cf_ocs = osocs; rc = config_register_schema( bscfg, osocs ); if ( rc ) return rc; return overlay_register( &sockover ); }
int relay_back_initialize( BackendInfo *bi ) { bi->bi_init = 0; bi->bi_open = 0; bi->bi_config = 0; bi->bi_close = 0; bi->bi_destroy = 0; bi->bi_db_init = relay_back_db_init; bi->bi_db_config = config_generic_wrapper; bi->bi_db_open = relay_back_db_open; #if 0 bi->bi_db_close = relay_back_db_close; #endif bi->bi_db_destroy = relay_back_db_destroy; bi->bi_op_bind = relay_back_op_bind; bi->bi_op_search = relay_back_op_search; bi->bi_op_compare = relay_back_op_compare; bi->bi_op_modify = relay_back_op_modify; bi->bi_op_modrdn = relay_back_op_modrdn; bi->bi_op_add = relay_back_op_add; bi->bi_op_delete = relay_back_op_delete; bi->bi_extended = relay_back_op_extended; bi->bi_entry_release_rw = relay_back_entry_release_rw; bi->bi_entry_get_rw = relay_back_entry_get_rw; bi->bi_operational = relay_back_operational; bi->bi_has_subordinates = relay_back_has_subordinates; bi->bi_cf_ocs = relayocs; return config_register_schema( relaycfg, relayocs ); }
int lastbind_initialize() { int i, code; /* register operational schema for this overlay (authTimestamp attribute) */ for (i=0; lastBind_OpSchema[i].def; i++) { code = register_at( lastBind_OpSchema[i].def, lastBind_OpSchema[i].ad, 0 ); if ( code ) { Debug( LDAP_DEBUG_ANY, "lastbind_initialize: register_at failed\n" ); return code; } } ad_authTimestamp->ad_type->sat_flags |= SLAP_AT_MANAGEABLE; lastbind.on_bi.bi_type = "lastbind"; lastbind.on_bi.bi_db_init = lastbind_db_init; lastbind.on_bi.bi_db_close = lastbind_db_close; lastbind.on_bi.bi_op_bind = lastbind_bind; /* register configuration directives */ lastbind.on_bi.bi_cf_ocs = lastbindocs; code = config_register_schema( lastbindcfg, lastbindocs ); if ( code ) return code; return overlay_register( &lastbind ); }
int translucent_initialize() { int rc; Debug(LDAP_DEBUG_TRACE, "==> translucent_initialize\n", 0, 0, 0); translucent.on_bi.bi_type = "translucent"; translucent.on_bi.bi_db_init = translucent_db_init; translucent.on_bi.bi_db_config = translucent_db_config; translucent.on_bi.bi_db_open = translucent_db_open; translucent.on_bi.bi_db_close = translucent_db_close; translucent.on_bi.bi_db_destroy = translucent_db_destroy; translucent.on_bi.bi_op_bind = translucent_bind; translucent.on_bi.bi_op_add = translucent_add; translucent.on_bi.bi_op_modify = translucent_modify; translucent.on_bi.bi_op_modrdn = translucent_modrdn; translucent.on_bi.bi_op_delete = translucent_delete; translucent.on_bi.bi_op_search = translucent_search; translucent.on_bi.bi_op_compare = translucent_compare; translucent.on_bi.bi_connection_destroy = translucent_connection_destroy; translucent.on_bi.bi_extended = translucent_exop; translucent.on_bi.bi_cf_ocs = translucentocs; rc = config_register_schema ( translucentcfg, translucentocs ); if ( rc ) return rc; return(overlay_register(&translucent)); }
static #endif /* SLAPD_OVER_DYNLIST == SLAPD_MOD_DYNAMIC */ int dynlist_initialize(void) { int rc = 0; dynlist.on_bi.bi_type = "dynlist"; #ifdef TAKEOVER_DYNGROUP /* makes dynlist incompatible with dyngroup */ dynlist.on_bi.bi_obsolete_names = obsolete_names; #endif dynlist.on_bi.bi_db_config = config_generic_wrapper; dynlist.on_bi.bi_db_open = dynlist_db_open; dynlist.on_bi.bi_db_destroy = dynlist_db_destroy; dynlist.on_response = dynlist_response; dynlist.on_bi.bi_cf_ocs = dlocs; rc = config_register_schema( dlcfg, dlocs ); if ( rc ) { return rc; } return overlay_register( &dynlist ); }
int valsort_initialize( void ) { int rc; valsort.on_bi.bi_type = "valsort"; valsort.on_bi.bi_db_destroy = valsort_destroy; valsort.on_bi.bi_db_open = valsort_db_open; valsort.on_bi.bi_op_add = valsort_add; valsort.on_bi.bi_op_modify = valsort_modify; valsort.on_response = valsort_response; valsort.on_bi.bi_cf_ocs = valsort_cfocs; rc = register_supported_control( LDAP_CONTROL_VALSORT, SLAP_CTRL_SEARCH | SLAP_CTRL_HIDE, NULL, valsort_parseCtrl, &valsort_cid ); if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "Failed to register control %d\n", rc, 0, 0 ); return rc; } syn_numericString = syn_find( "1.3.6.1.4.1.1466.115.121.1.36" ); rc = config_register_schema( valsort_cfats, valsort_cfocs ); if ( rc ) return rc; return overlay_register(&valsort); }
static int autogroup_initialize(void) { int rc = 0; autogroup.on_bi.bi_type = "autogroup"; autogroup.on_bi.bi_db_open = autogroup_db_open; autogroup.on_bi.bi_db_close = autogroup_db_close; autogroup.on_bi.bi_db_destroy = autogroup_db_destroy; autogroup.on_bi.bi_op_add = autogroup_add_entry; autogroup.on_bi.bi_op_delete = autogroup_delete_entry; autogroup.on_bi.bi_op_modify = autogroup_modify_entry; autogroup.on_response = autogroup_response; autogroup.on_bi.bi_cf_ocs = agocs; rc = config_register_schema( agcfg, agocs ); if ( rc ) { return rc; } return overlay_register( &autogroup ); }
int wt_back_init_cf( BackendInfo *bi ) { int rc; bi->bi_cf_ocs = wtocs; rc = config_register_schema( wtcfg, wtocs ); if ( rc ) return rc; return 0; }
int bdb_back_init_cf( BackendInfo *bi ) { int rc; bi->bi_cf_ocs = bdbocs; rc = config_register_schema( bdbcfg, bdbocs ); if ( rc ) return rc; return 0; }
int backsql_init_cf( BackendInfo *bi ) { int rc; bi->bi_cf_ocs = sqlocs; rc = config_register_schema( sqlcfg, sqlocs ); if ( rc ) return rc; return 0; }
int sock_back_init_cf( BackendInfo *bi ) { int rc; bi->bi_cf_ocs = bsocs; rc = config_register_schema( bscfg, bsocs ); if ( !rc ) rc = sock_over_setup(); return rc; }
int dyngroup_initialize() { int code; dyngroup.on_bi.bi_type = "dyngroup"; dyngroup.on_bi.bi_db_close = dyngroup_close; dyngroup.on_response = dyngroup_response; dyngroup.on_bi.bi_cf_ocs = dgroupocs; code = config_register_schema( dgroupcfg, dgroupocs ); if ( code ) return code; return overlay_register( &dyngroup ); }
int auditlog_initialize() { int rc; auditlog.on_bi.bi_type = "auditlog"; auditlog.on_bi.bi_db_init = auditlog_db_init; auditlog.on_bi.bi_db_destroy = auditlog_db_destroy; auditlog.on_response = auditlog_response; auditlog.on_bi.bi_cf_ocs = auditlogocs; rc = config_register_schema( auditlogcfg, auditlogocs ); if ( rc ) return rc; return overlay_register(&auditlog); }
int collect_initialize() { int code; collect.on_bi.bi_type = "collect"; collect.on_bi.bi_db_destroy = collect_destroy; collect.on_bi.bi_op_modify = collect_modify; collect.on_response = collect_response; collect.on_bi.bi_cf_ocs = collectocs; code = config_register_schema( collectcfg, collectocs ); if ( code ) return code; return overlay_register( &collect ); }
static #endif int cloak_initialize( void ) { int rc; cloak_ovl.on_bi.bi_type = "cloak"; cloak_ovl.on_bi.bi_op_search = cloak_search; cloak_ovl.on_bi.bi_cf_ocs = cloakocs; rc = config_register_schema ( cloakcfg, cloakocs ); if ( rc ) return rc; return overlay_register( &cloak_ovl ); }
int example_initialize() { int rc; example.on_bi.bi_type = "example"; example.on_bi.bi_db_init = example_init; example.on_bi.bi_db_open = example_open; example.on_bi.bi_db_destroy = example_destroy; example.on_bi.bi_op_delete = example_delete; example.on_bi.bi_op_add = example_add; example.on_response = example_response; rc = config_register_schema(examplecfg, exampleocs); if (rc) return rc; return overlay_register(&example); }
int adremap_initialize() { int i, code; adremap.on_bi.bi_type = "adremap"; adremap.on_bi.bi_db_init = adremap_db_init; adremap.on_bi.bi_db_destroy = adremap_db_destroy; adremap.on_bi.bi_op_search = adremap_search; /* register configuration directives */ adremap.on_bi.bi_cf_ocs = adremapocs; code = config_register_schema( adremapcfg, adremapocs ); if ( code ) return code; return overlay_register( &adremap ); }
int nssov_initialize( void ) { int rc; nssov.on_bi.bi_type = "nssov"; nssov.on_bi.bi_db_init = nssov_db_init; nssov.on_bi.bi_db_destroy = nssov_db_destroy; nssov.on_bi.bi_db_open = nssov_db_open; nssov.on_bi.bi_db_close = nssov_db_close; nssov.on_bi.bi_cf_ocs = nssocs; rc = config_register_schema( nsscfg, nssocs ); if ( rc ) return rc; return overlay_register(&nssov); }
int autoca_initialize() { int i, code; autoca.on_bi.bi_type = "autoca"; autoca.on_bi.bi_db_init = autoca_db_init; autoca.on_bi.bi_db_destroy = autoca_db_destroy; autoca.on_bi.bi_db_open = autoca_db_open; autoca.on_bi.bi_op_search = autoca_op_search; autoca.on_bi.bi_cf_ocs = autoca_ocs; code = config_register_schema( autoca_cfg, autoca_ocs ); if ( code ) return code; for ( i=0; aca_attrs[i]; i++ ) { code = register_at( aca_attrs[i], NULL, 0 ); if ( code ) return code; } return overlay_register( &autoca ); }
static #endif int constraint_initialize( void ) { int rc; constraint_ovl.on_bi.bi_type = "constraint"; constraint_ovl.on_bi.bi_db_close = constraint_close; constraint_ovl.on_bi.bi_op_add = constraint_add; constraint_ovl.on_bi.bi_op_modify = constraint_update; constraint_ovl.on_bi.bi_op_modrdn = constraint_update; constraint_ovl.on_bi.bi_private = NULL; constraint_ovl.on_bi.bi_cf_ocs = constraintocs; rc = config_register_schema( constraintcfg, constraintocs ); if (rc) return rc; return overlay_register( &constraint_ovl ); }
int sssvlv_over_initialize() { int rc; sssvlv.on_bi.bi_type = "sssvlv"; sssvlv.on_bi.bi_db_init = sssvlv_db_init; sssvlv.on_bi.bi_db_destroy = sssvlv_db_destroy; sssvlv.on_bi.bi_db_open = sssvlv_db_open; sssvlv.on_bi.bi_connection_destroy = sssvlv_connection_destroy; sssvlv.on_bi.bi_op_search = sssvlv_op_search; sssvlv.on_bi.bi_cf_ocs = sssvlv_ocs; rc = config_register_schema( sssvlv_cfg, sssvlv_ocs ); if ( rc ) return rc; rc = overlay_register( &sssvlv ); if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "Failed to register server side sort overlay\n" ); } return rc; }
int distproc_initialize( void ) { int rc; /* Make sure we don't exceed the bits reserved for userland */ config_check_userland( DP_LAST ); rc = load_extop( (struct berval *)&slap_EXOP_CHAINEDREQUEST, SLAP_EXOP_HIDE, ldap_exop_chained_request ); if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "slapd-distproc: " "unable to register chainedRequest exop: %d.\n", rc, 0, 0 ); return rc; } #ifdef LDAP_DEVEL rc = supported_feature_load( &slap_FEATURE_CANCHAINOPS ); if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "slapd-distproc: " "unable to register canChainOperations supported feature: %d.\n", rc, 0, 0 ); return rc; } #endif rc = register_supported_control( LDAP_CONTROL_X_RETURNCONTREF, SLAP_CTRL_GLOBAL|SLAP_CTRL_ACCESS|SLAP_CTRL_HIDE, NULL, ldap_distproc_parse_returnContRef_ctrl, &sc_returnContRef ); if ( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, "slapd-distproc: " "unable to register returnContinuationReference control: %d.\n", rc, 0, 0 ); return rc; } distproc.on_bi.bi_type = "distproc"; distproc.on_bi.bi_db_init = ldap_distproc_db_init; distproc.on_bi.bi_db_config = ldap_distproc_db_config; distproc.on_bi.bi_db_open = ldap_distproc_db_open; distproc.on_bi.bi_db_close = ldap_distproc_db_close; distproc.on_bi.bi_db_destroy = ldap_distproc_db_destroy; /* ... otherwise the underlying backend's function would be called, * likely passing an invalid entry; on the contrary, the requested * operational attributes should have been returned while chasing * the referrals. This all in all is a bit messy, because part * of the operational attributes are generated by the backend; * part by the frontend; back-ldap should receive all the available * ones from the remote server, but then, on its own, it strips those * it assumes will be (re)generated by the frontend (e.g. * subschemaSubentry, entryDN, ...) */ distproc.on_bi.bi_operational = ldap_distproc_operational; distproc.on_bi.bi_connection_destroy = ldap_distproc_connection_destroy; distproc.on_response = ldap_distproc_response; distproc.on_bi.bi_cf_ocs = distproc_ocs; rc = config_register_schema( distproc_cfg, distproc_ocs ); if ( rc ) { return rc; } return overlay_register( &distproc ); }
static #endif /* SLAPD_OVER_RETCODE == SLAPD_MOD_DYNAMIC */ int retcode_initialize( void ) { int i, code; static struct { char *desc; AttributeDescription **ad; } retcode_at[] = { { "( 1.3.6.1.4.1.4203.666.11.4.1.1 " "NAME ( 'errCode' ) " "DESC 'LDAP error code' " "EQUALITY integerMatch " "ORDERING integerOrderingMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 " "SINGLE-VALUE )", &ad_errCode }, { "( 1.3.6.1.4.1.4203.666.11.4.1.2 " "NAME ( 'errOp' ) " "DESC 'Operations the errObject applies to' " "EQUALITY caseIgnoreMatch " "SUBSTR caseIgnoreSubstringsMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", &ad_errOp}, { "( 1.3.6.1.4.1.4203.666.11.4.1.3 " "NAME ( 'errText' ) " "DESC 'LDAP error textual description' " "EQUALITY caseIgnoreMatch " "SUBSTR caseIgnoreSubstringsMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 " "SINGLE-VALUE )", &ad_errText }, { "( 1.3.6.1.4.1.4203.666.11.4.1.4 " "NAME ( 'errSleepTime' ) " "DESC 'Time to wait before returning the error' " "EQUALITY integerMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 " "SINGLE-VALUE )", &ad_errSleepTime }, { "( 1.3.6.1.4.1.4203.666.11.4.1.5 " "NAME ( 'errMatchedDN' ) " "DESC 'Value to be returned as matched DN' " "EQUALITY distinguishedNameMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 " "SINGLE-VALUE )", &ad_errMatchedDN }, { "( 1.3.6.1.4.1.4203.666.11.4.1.6 " "NAME ( 'errUnsolicitedOID' ) " "DESC 'OID to be returned within unsolicited response' " "EQUALITY objectIdentifierMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 " "SINGLE-VALUE )", &ad_errUnsolicitedOID }, { "( 1.3.6.1.4.1.4203.666.11.4.1.7 " "NAME ( 'errUnsolicitedData' ) " "DESC 'Data to be returned within unsolicited response' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 " "SINGLE-VALUE )", &ad_errUnsolicitedData }, { "( 1.3.6.1.4.1.4203.666.11.4.1.8 " "NAME ( 'errDisconnect' ) " "DESC 'Disconnect without notice' " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 " "SINGLE-VALUE )", &ad_errDisconnect }, { NULL } }; static struct { char *desc; ObjectClass **oc; } retcode_oc[] = { { "( 1.3.6.1.4.1.4203.666.11.4.3.0 " "NAME ( 'errAbsObject' ) " "SUP top ABSTRACT " "MUST ( errCode ) " "MAY ( " "cn " "$ description " "$ errOp " "$ errText " "$ errSleepTime " "$ errMatchedDN " "$ errUnsolicitedOID " "$ errUnsolicitedData " "$ errDisconnect " ") )", &oc_errAbsObject }, { "( 1.3.6.1.4.1.4203.666.11.4.3.1 " "NAME ( 'errObject' ) " "SUP errAbsObject STRUCTURAL " ")", &oc_errObject }, { "( 1.3.6.1.4.1.4203.666.11.4.3.2 " "NAME ( 'errAuxObject' ) " "SUP errAbsObject AUXILIARY " ")", &oc_errAuxObject }, { NULL } }; for ( i = 0; retcode_at[ i ].desc != NULL; i++ ) { code = register_at( retcode_at[ i ].desc, retcode_at[ i ].ad, 0 ); if ( code ) { Debug( LDAP_DEBUG_ANY, "retcode: register_at failed\n" ); return code; } (*retcode_at[ i ].ad)->ad_type->sat_flags |= SLAP_AT_HIDE; } for ( i = 0; retcode_oc[ i ].desc != NULL; i++ ) { code = register_oc( retcode_oc[ i ].desc, retcode_oc[ i ].oc, 0 ); if ( code ) { Debug( LDAP_DEBUG_ANY, "retcode: register_oc failed\n" ); return code; } (*retcode_oc[ i ].oc)->soc_flags |= SLAP_OC_HIDE; } retcode.on_bi.bi_type = "retcode"; retcode.on_bi.bi_db_init = retcode_db_init; retcode.on_bi.bi_db_open = retcode_db_open; retcode.on_bi.bi_db_destroy = retcode_db_destroy; retcode.on_bi.bi_op_add = retcode_op_func; retcode.on_bi.bi_op_bind = retcode_op_func; retcode.on_bi.bi_op_compare = retcode_op_func; retcode.on_bi.bi_op_delete = retcode_op_func; retcode.on_bi.bi_op_modify = retcode_op_func; retcode.on_bi.bi_op_modrdn = retcode_op_func; retcode.on_bi.bi_op_search = retcode_op_func; retcode.on_bi.bi_extended = retcode_op_func; retcode.on_response = retcode_response; retcode.on_bi.bi_cf_ocs = rcocs; code = config_register_schema( rccfg, rcocs ); if ( code ) { return code; } return overlay_register( &retcode ); }
static #endif /* SLAPD_OVER_DDS == SLAPD_MOD_DYNAMIC */ int dds_initialize() { int rc = 0; int i, code; /* Make sure we don't exceed the bits reserved for userland */ config_check_userland( DDS_LAST ); if ( !do_not_load_schema ) { static struct { char *desc; slap_mask_t flags; AttributeDescription **ad; } s_at[] = { { "( 1.3.6.1.4.1.4203.666.1.57 " "NAME ( 'entryExpireTimestamp' ) " "DESC 'RFC2589 OpenLDAP extension: expire time of a dynamic object, " "computed as now + entryTtl' " "EQUALITY generalizedTimeMatch " "ORDERING generalizedTimeOrderingMatch " "SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 " "SINGLE-VALUE " "NO-USER-MODIFICATION " "USAGE dSAOperation )", SLAP_AT_HIDE, &ad_entryExpireTimestamp }, { NULL } }; for ( i = 0; s_at[ i ].desc != NULL; i++ ) { code = register_at( s_at[ i ].desc, s_at[ i ].ad, 0 ); if ( code ) { Debug( LDAP_DEBUG_ANY, "dds_initialize: register_at failed\n" ); return code; } (*s_at[ i ].ad)->ad_type->sat_flags |= SLAP_AT_HIDE; } } if ( !do_not_load_exop ) { rc = load_extop2( (struct berval *)&slap_EXOP_REFRESH, SLAP_EXOP_WRITES|SLAP_EXOP_HIDE, slap_exop_refresh, !do_not_replace_exop ); if ( rc != LDAP_SUCCESS ) { Log1( LDAP_DEBUG_ANY, LDAP_LEVEL_ERR, "DDS unable to register refresh exop: %d.\n", rc ); return rc; } } dds.on_bi.bi_type = "dds"; dds.on_bi.bi_db_init = dds_db_init; dds.on_bi.bi_db_open = dds_db_open; dds.on_bi.bi_db_close = dds_db_close; dds.on_bi.bi_db_destroy = dds_db_destroy; dds.on_bi.bi_op_add = dds_op_add; dds.on_bi.bi_op_delete = dds_op_delete; dds.on_bi.bi_op_modify = dds_op_modify; dds.on_bi.bi_op_modrdn = dds_op_rename; dds.on_bi.bi_extended = dds_op_extended; dds.on_bi.bi_cf_ocs = dds_ocs; rc = config_register_schema( dds_cfg, dds_ocs ); if ( rc ) { return rc; } return overlay_register( &dds ); }
int null_back_initialize( BackendInfo *bi ) { static char *controls[] = { LDAP_CONTROL_ASSERT, LDAP_CONTROL_MANAGEDSAIT, LDAP_CONTROL_NOOP, LDAP_CONTROL_PAGEDRESULTS, LDAP_CONTROL_SUBENTRIES, LDAP_CONTROL_PRE_READ, LDAP_CONTROL_POST_READ, LDAP_CONTROL_X_PERMISSIVE_MODIFY, NULL }; Debug( LDAP_DEBUG_TRACE, "null_back_initialize: initialize null backend\n", 0, 0, 0 ); bi->bi_flags |= SLAP_BFLAG_INCREMENT | SLAP_BFLAG_SUBENTRIES | SLAP_BFLAG_ALIASES | SLAP_BFLAG_REFERRALS; bi->bi_controls = controls; bi->bi_open = 0; bi->bi_close = 0; bi->bi_config = 0; bi->bi_destroy = 0; bi->bi_db_init = null_back_db_init; bi->bi_db_config = config_generic_wrapper; bi->bi_db_open = 0; bi->bi_db_close = 0; bi->bi_db_destroy = null_back_db_destroy; bi->bi_op_bind = null_back_bind; bi->bi_op_unbind = 0; bi->bi_op_search = null_back_success; bi->bi_op_compare = null_back_false; bi->bi_op_modify = null_back_success; bi->bi_op_modrdn = null_back_success; bi->bi_op_add = null_back_success; bi->bi_op_delete = null_back_success; bi->bi_op_abandon = 0; bi->bi_extended = 0; bi->bi_chk_referrals = 0; bi->bi_connection_init = 0; bi->bi_connection_destroy = 0; bi->bi_entry_get_rw = null_back_entry_get; bi->bi_tool_entry_open = null_tool_entry_open; bi->bi_tool_entry_close = null_tool_entry_close; bi->bi_tool_entry_first = backend_tool_entry_first; bi->bi_tool_entry_first_x = null_tool_entry_first_x; bi->bi_tool_entry_next = null_tool_entry_next; bi->bi_tool_entry_get = null_tool_entry_get; bi->bi_tool_entry_put = null_tool_entry_put; bi->bi_cf_ocs = nullocs; return config_register_schema( nullcfg, nullocs ); }
int shell_back_init_cf( BackendInfo *bi ) { bi->bi_cf_ocs = shellocs; return config_register_schema( shellcfg, shellocs ); }
int ndb_back_init_cf( BackendInfo *bi ) { bi->bi_cf_ocs = ndbocs; return config_register_schema( ndbcfg, ndbocs ); }
int passwd_back_init_cf( BackendInfo *bi ) { bi->bi_cf_ocs = passwdocs; return config_register_schema( passwdcfg, passwdocs ); }