mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-03-13 14:27:59 +08:00
Add dn2id_get / modify support
This commit is contained in:
parent
133ecac740
commit
c495cba4af
@ -792,6 +792,49 @@ glue_tool_entry_next (
|
||||
return rc;
|
||||
}
|
||||
|
||||
static ID
|
||||
glue_tool_dn2id_get (
|
||||
BackendDB *b0,
|
||||
struct berval *dn
|
||||
)
|
||||
{
|
||||
BackendDB *be, b2;
|
||||
int rc = -1;
|
||||
|
||||
b2 = *b0;
|
||||
b2.bd_info = (BackendInfo *)glue_tool_inst( b0->bd_info );
|
||||
be = glue_back_select (&b2, dn);
|
||||
if ( be == &b2 ) be = &toolDB;
|
||||
|
||||
if (!be->be_dn2id_get)
|
||||
return NOID;
|
||||
|
||||
if (!glueBack) {
|
||||
if ( be->be_entry_open ) {
|
||||
rc = be->be_entry_open (be, glueMode);
|
||||
}
|
||||
if (rc != 0) {
|
||||
return NOID;
|
||||
}
|
||||
} else if (be != glueBack) {
|
||||
/* If this entry belongs in a different branch than the
|
||||
* previous one, close the current database and open the
|
||||
* new one.
|
||||
*/
|
||||
if ( glueBack->be_entry_close ) {
|
||||
glueBack->be_entry_close (glueBack);
|
||||
}
|
||||
if ( be->be_entry_open ) {
|
||||
rc = be->be_entry_open (be, glueMode);
|
||||
}
|
||||
if (rc != 0) {
|
||||
return NOID;
|
||||
}
|
||||
}
|
||||
glueBack = be;
|
||||
return be->be_dn2id_get (be, dn);
|
||||
}
|
||||
|
||||
static Entry *
|
||||
glue_tool_entry_get (
|
||||
BackendDB *b0,
|
||||
@ -848,6 +891,19 @@ glue_tool_entry_put (
|
||||
return be->be_entry_put (be, e, text);
|
||||
}
|
||||
|
||||
static ID
|
||||
glue_tool_entry_modify (
|
||||
BackendDB *b0,
|
||||
Entry *e,
|
||||
struct berval *text
|
||||
)
|
||||
{
|
||||
if (!glueBack || !glueBack->be_entry_modify)
|
||||
return NOID;
|
||||
|
||||
return glueBack->be_entry_modify (glueBack, e, text);
|
||||
}
|
||||
|
||||
static int
|
||||
glue_tool_entry_reindex (
|
||||
BackendDB *b0,
|
||||
@ -921,17 +977,17 @@ glue_db_init(
|
||||
oi->oi_bi.bi_tool_entry_next = glue_tool_entry_next;
|
||||
if ( bi->bi_tool_entry_get )
|
||||
oi->oi_bi.bi_tool_entry_get = glue_tool_entry_get;
|
||||
if ( bi->bi_tool_dn2id_get )
|
||||
oi->oi_bi.bi_tool_dn2id_get = glue_tool_dn2id_get;
|
||||
if ( bi->bi_tool_entry_put )
|
||||
oi->oi_bi.bi_tool_entry_put = glue_tool_entry_put;
|
||||
if ( bi->bi_tool_entry_reindex )
|
||||
oi->oi_bi.bi_tool_entry_reindex = glue_tool_entry_reindex;
|
||||
if ( bi->bi_tool_entry_modify )
|
||||
oi->oi_bi.bi_tool_entry_modify = glue_tool_entry_modify;
|
||||
if ( bi->bi_tool_sync )
|
||||
oi->oi_bi.bi_tool_sync = glue_tool_sync;
|
||||
|
||||
/*FIXME : need to add support */
|
||||
oi->oi_bi.bi_tool_dn2id_get = 0;
|
||||
oi->oi_bi.bi_tool_entry_modify = 0;
|
||||
|
||||
SLAP_DBFLAGS( be ) |= SLAP_DBFLAG_GLUE_INSTANCE;
|
||||
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user