Use BackendInfo instead of direct references to back-ldap functions

This commit is contained in:
Howard Chu 2004-11-24 11:31:43 +00:00
parent a057ff5bee
commit 02e171e886

View file

@ -33,6 +33,8 @@
#include "slap.h" #include "slap.h"
#include "../back-ldap/back-ldap.h" #include "../back-ldap/back-ldap.h"
static BackendInfo *lback;
static int static int
ldap_chain_chk_referrals( Operation *op, SlapReply *rs ) ldap_chain_chk_referrals( Operation *op, SlapReply *rs )
{ {
@ -139,25 +141,25 @@ ldap_chain_response( Operation *op, SlapReply *rs )
op->o_req_ndn = slap_empty_bv; op->o_req_ndn = slap_empty_bv;
op->o_conn = NULL; op->o_conn = NULL;
rc = ldap_back_bind( op, rs ); rc = lback->bi_op_bind( op, rs );
op->o_req_ndn = rndn; op->o_req_ndn = rndn;
op->o_conn = conn; op->o_conn = conn;
} }
break; break;
case LDAP_REQ_ADD: case LDAP_REQ_ADD:
rc = ldap_back_add( op, rs ); rc = lback->bi_op_add( op, rs );
break; break;
case LDAP_REQ_DELETE: case LDAP_REQ_DELETE:
rc = ldap_back_delete( op, rs ); rc = lback->bi_op_delete( op, rs );
break; break;
case LDAP_REQ_MODRDN: case LDAP_REQ_MODRDN:
rc = ldap_back_modrdn( op, rs ); rc = lback->bi_op_modrdn( op, rs );
break; break;
case LDAP_REQ_MODIFY: case LDAP_REQ_MODIFY:
rc = ldap_back_modify( op, rs ); rc = lback->bi_op_modify( op, rs );
break; break;
case LDAP_REQ_COMPARE: case LDAP_REQ_COMPARE:
rc = ldap_back_compare( op, rs ); rc = lback->bi_op_compare( op, rs );
break; break;
case LDAP_REQ_SEARCH: case LDAP_REQ_SEARCH:
if ( rs->sr_type == REP_SEARCHREF ) { if ( rs->sr_type == REP_SEARCHREF ) {
@ -198,7 +200,7 @@ ldap_chain_response( Operation *op, SlapReply *rs )
/* FIXME: should we also copy filter and scope? /* FIXME: should we also copy filter and scope?
* according to RFC3296, no */ * according to RFC3296, no */
rc = ldap_back_search( op, rs ); rc = lback->bi_op_search( op, rs );
ldap_memfree( li.url ); ldap_memfree( li.url );
li.url = NULL; li.url = NULL;
@ -219,11 +221,11 @@ end_of_searchref:;
rs->sr_type = REP_SEARCHREF; rs->sr_type = REP_SEARCHREF;
} else { } else {
rc = ldap_back_search( op, rs ); rc = lback->bi_op_search( op, rs );
} }
break; break;
case LDAP_REQ_EXTENDED: case LDAP_REQ_EXTENDED:
rc = ldap_back_extended( op, rs ); rc = lback->bi_extended( op, rs );
break; break;
default: default:
rc = SLAP_CB_CONTINUE; rc = SLAP_CB_CONTINUE;
@ -262,7 +264,7 @@ static int ldap_chain_config(
argv0 = argv[ 0 ]; argv0 = argv[ 0 ];
argv[ 0 ] = &argv[ 0 ][ sizeof( "chain-" ) - 1 ]; argv[ 0 ] = &argv[ 0 ][ sizeof( "chain-" ) - 1 ];
} }
rc = ldap_back_db_config( be, fname, lineno, argc, argv ); rc = lback->bi_db_config( be, fname, lineno, argc, argv );
if ( argv0 ) { if ( argv0 ) {
argv[ 0 ] = argv0; argv[ 0 ] = argv0;
} }
@ -280,7 +282,7 @@ static int ldap_chain_init(
int rc; int rc;
be->be_private = NULL; be->be_private = NULL;
rc = ldap_back_db_init( be ); rc = lback->bi_db_init( be );
on->on_bi.bi_private = be->be_private; on->on_bi.bi_private = be->be_private;
be->be_private = private; be->be_private = private;
@ -296,7 +298,7 @@ static int ldap_chain_destroy(
int rc; int rc;
be->be_private = on->on_bi.bi_private; be->be_private = on->on_bi.bi_private;
rc = ldap_back_db_destroy( be ); rc = lback->bi_db_destroy( be );
on->on_bi.bi_private = be->be_private; on->on_bi.bi_private = be->be_private;
be->be_private = private; be->be_private = private;
return rc; return rc;
@ -306,6 +308,10 @@ static slap_overinst ldapchain;
int chain_init() int chain_init()
{ {
lback = backend_info("ldap");
if ( !lback ) return -1;
ldapchain.on_bi.bi_type = "chain"; ldapchain.on_bi.bi_type = "chain";
ldapchain.on_bi.bi_db_init = ldap_chain_init; ldapchain.on_bi.bi_db_init = ldap_chain_init;
ldapchain.on_bi.bi_db_config = ldap_chain_config; ldapchain.on_bi.bi_db_config = ldap_chain_config;