mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-04 06:01:23 -05:00
fix overlays with private instances of databases (ITS#5736)
This commit is contained in:
parent
4e276f882c
commit
1421d522ad
6 changed files with 27 additions and 37 deletions
|
|
@ -63,6 +63,7 @@ typedef enum {
|
|||
LDAP_CH_RES,
|
||||
LDAP_CH_ERR
|
||||
} ldap_chain_status_t;
|
||||
|
||||
static BackendInfo *lback;
|
||||
|
||||
typedef struct ldap_chain_t {
|
||||
|
|
@ -1096,7 +1097,7 @@ static ConfigOCs chainocs[] = {
|
|||
"NAME 'olcChainDatabase' "
|
||||
"DESC 'Chain remote server configuration' "
|
||||
"AUXILIARY )",
|
||||
Cft_Misc, chaincfg, chain_ldadd },
|
||||
Cft_Misc, olcDatabaseDummy, chain_ldadd },
|
||||
{ NULL, 0, NULL }
|
||||
};
|
||||
|
||||
|
|
@ -1187,6 +1188,8 @@ chain_ldadd( CfEntryInfo *p, Entry *e, ConfigArgs *ca )
|
|||
}
|
||||
}
|
||||
|
||||
ca->ca_private = on;
|
||||
|
||||
done:;
|
||||
if ( rc != LDAP_SUCCESS ) {
|
||||
(void)ldap_chain_db_destroy_one( ca->be, NULL );
|
||||
|
|
@ -1510,17 +1513,11 @@ ldap_chain_db_init(
|
|||
ldap_chain_t *lc = NULL;
|
||||
|
||||
if ( lback == NULL ) {
|
||||
static BackendInfo lback2;
|
||||
|
||||
lback = backend_info( "ldap" );
|
||||
|
||||
if ( lback == NULL ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
lback2 = *lback;
|
||||
lback2.bi_type = ldapchain.on_bi.bi_type;
|
||||
lback = &lback2;
|
||||
}
|
||||
|
||||
lc = ch_malloc( sizeof( ldap_chain_t ) );
|
||||
|
|
@ -2062,7 +2059,8 @@ ldap_chain_parse_ctrl(
|
|||
int
|
||||
chain_initialize( void )
|
||||
{
|
||||
int rc;
|
||||
int rc;
|
||||
const char *text;
|
||||
|
||||
/* Make sure we don't exceed the bits reserved for userland */
|
||||
config_check_userland( CH_LAST );
|
||||
|
|
|
|||
|
|
@ -160,12 +160,12 @@ monitor_subsys_database_init_one(
|
|||
"monitor_subsys_database_init: "
|
||||
"missing suffix for %s\n",
|
||||
rdnval, 0, 0 );
|
||||
return -1;
|
||||
} else {
|
||||
attr_merge( e, slap_schema.si_ad_namingContexts,
|
||||
be->be_suffix, be->be_nsuffix );
|
||||
attr_merge( e_database, slap_schema.si_ad_namingContexts,
|
||||
be->be_suffix, be->be_nsuffix );
|
||||
}
|
||||
attr_merge( e, slap_schema.si_ad_namingContexts,
|
||||
be->be_suffix, be->be_nsuffix );
|
||||
attr_merge( e_database, slap_schema.si_ad_namingContexts,
|
||||
be->be_suffix, be->be_nsuffix );
|
||||
}
|
||||
|
||||
(void)init_readOnly( mi, e, be->be_restrictops );
|
||||
|
|
|
|||
|
|
@ -696,6 +696,15 @@ static ConfigTable config_back_cf_table[] = {
|
|||
NULL, NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
/* Need to no-op this keyword for dynamic config */
|
||||
ConfigTable olcDatabaseDummy[] = {
|
||||
{ "", "", 0, 0, 0, ARG_IGNORED,
|
||||
NULL, "( OLcfgGlAt:13 NAME 'olcDatabase' "
|
||||
"DESC 'The backend type for a database instance' "
|
||||
"SUP olcBackend SINGLE-VALUE X-ORDERED 'SIBLINGS' )", NULL, NULL },
|
||||
{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
|
||||
};
|
||||
|
||||
/* Routines to check if a child can be added to this type */
|
||||
static ConfigLDAPadd cfAddSchema, cfAddInclude, cfAddDatabase,
|
||||
cfAddBackend, cfAddModule, cfAddOverlay;
|
||||
|
|
@ -6475,6 +6484,9 @@ config_back_initialize( BackendInfo *bi )
|
|||
i = config_register_schema( ct, cf_ocs );
|
||||
if ( i ) return i;
|
||||
|
||||
i = slap_str2ad( "olcDatabase", &olcDatabaseDummy[0].ad, &text );
|
||||
if ( i ) return i;
|
||||
|
||||
/* setup olcRootPW to be base64-encoded when written in LDIF form;
|
||||
* basically, we don't care if it fails */
|
||||
i = slap_str2ad( "olcRootPW", &ad, &text );
|
||||
|
|
|
|||
|
|
@ -201,6 +201,8 @@ int config_shadow( ConfigArgs *c, int flag );
|
|||
extern slap_verbmasks *slap_ldap_response_code;
|
||||
extern int slap_ldap_response_code_register( struct berval *bv, int err );
|
||||
|
||||
extern ConfigTable olcDatabaseDummy[];
|
||||
|
||||
LDAP_END_DECL
|
||||
|
||||
#endif /* CONFIG_H */
|
||||
|
|
|
|||
|
|
@ -2655,15 +2655,6 @@ static ConfigTable pccfg[] = {
|
|||
{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
|
||||
};
|
||||
|
||||
/* Need to no-op this keyword for dynamic config */
|
||||
static ConfigTable pcdummy[] = {
|
||||
{ "", "", 0, 0, 0, ARG_IGNORED,
|
||||
NULL, "( OLcfgGlAt:13 NAME 'olcDatabase' "
|
||||
"DESC 'The backend type for a database instance' "
|
||||
"SUP olcBackend SINGLE-VALUE X-ORDERED 'SIBLINGS' )", NULL, NULL },
|
||||
{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
|
||||
};
|
||||
|
||||
static ConfigOCs pcocs[] = {
|
||||
{ "( OLcfgOvOc:2.1 "
|
||||
"NAME 'olcPcacheConfig' "
|
||||
|
|
@ -2675,7 +2666,7 @@ static ConfigOCs pcocs[] = {
|
|||
{ "( OLcfgOvOc:2.2 "
|
||||
"NAME 'olcPcacheDatabase' "
|
||||
"DESC 'Cache database configuration' "
|
||||
"AUXILIARY )", Cft_Misc, pcdummy, pc_ldadd },
|
||||
"AUXILIARY )", Cft_Misc, olcDatabaseDummy, pc_ldadd },
|
||||
{ NULL, 0, NULL }
|
||||
};
|
||||
|
||||
|
|
@ -3995,11 +3986,6 @@ pcache_initialize()
|
|||
code = config_register_schema( pccfg, pcocs );
|
||||
if ( code ) return code;
|
||||
|
||||
{
|
||||
const char *text;
|
||||
code = slap_str2ad( "olcDatabase", &pcdummy[0].ad, &text );
|
||||
if ( code ) return code;
|
||||
}
|
||||
return overlay_register( &pcache );
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -95,14 +95,6 @@ static ConfigTable translucentcfg[] = {
|
|||
{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
|
||||
};
|
||||
|
||||
static ConfigTable transdummy[] = {
|
||||
{ "", "", 0, 0, 0, ARG_IGNORED,
|
||||
NULL, "( OLcfgGlAt:13 NAME 'olcDatabase' "
|
||||
"DESC 'The backend type for a database instance' "
|
||||
"SUP olcBackend SINGLE-VALUE X-ORDERED 'SIBLINGS' )", NULL, NULL },
|
||||
{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
|
||||
};
|
||||
|
||||
static ConfigOCs translucentocs[] = {
|
||||
{ "( OLcfgOvOc:14.1 "
|
||||
"NAME 'olcTranslucentConfig' "
|
||||
|
|
@ -115,7 +107,7 @@ static ConfigOCs translucentocs[] = {
|
|||
{ "( OLcfgOvOc:14.2 "
|
||||
"NAME 'olcTranslucentDatabase' "
|
||||
"DESC 'Translucent target database configuration' "
|
||||
"AUXILIARY )", Cft_Misc, transdummy, translucent_ldadd },
|
||||
"AUXILIARY )", Cft_Misc, olcDatabaseDummy, translucent_ldadd },
|
||||
{ NULL, 0, NULL }
|
||||
};
|
||||
/* for translucent_init() */
|
||||
|
|
|
|||
Loading…
Reference in a new issue