static int translucent_cfadd( Operation *op, SlapReply *rs, Entry *e, ConfigArgs *ca ) { CfEntryInfo *cei = e->e_private; slap_overinst *on = (slap_overinst *)cei->ce_bi; translucent_info *ov = on->on_bi.bi_private; struct berval bv; Debug(LDAP_DEBUG_TRACE, "==> translucent_cfadd\n", 0, 0, 0); /* FIXME: should not hardcode "olcDatabase" here */ bv.bv_len = snprintf( ca->cr_msg, sizeof( ca->cr_msg ), "olcDatabase=" SLAP_X_ORDERED_FMT "%s", 0, ov->db.bd_info->bi_type ); if ( bv.bv_len >= sizeof( ca->cr_msg ) ) { return -1; } bv.bv_val = ca->cr_msg; ca->be = &ov->db; ov->defer_db_open = 0; /* We can only create this entry if the database is table-driven */ if ( ov->db.bd_info->bi_cf_ocs ) config_build_entry( op, rs, cei, ca, &bv, ov->db.bd_info->bi_cf_ocs, &translucentocs[1] ); return 0; }
static int ldap_distproc_cfadd_apply( void *datum, void *arg ) { ldapinfo_t *li = (ldapinfo_t *)datum; ldap_distproc_cfadd_apply_t *lca = (ldap_distproc_cfadd_apply_t *)arg; struct berval bv; /* FIXME: should not hardcode "olcDatabase" here */ bv.bv_len = snprintf( lca->ca->cr_msg, sizeof( lca->ca->cr_msg ), "olcDatabase={%d}%s", lca->count, lback->bi_type ); bv.bv_val = lca->ca->cr_msg; lca->ca->be->be_private = (void *)li; config_build_entry( lca->op, lca->rs, lca->p->e_private, lca->ca, &bv, lback->bi_cf_ocs, &distproc_ocs[ 1 ] ); lca->count++; return 0; }