Add framework for sasl and controls.

This commit is contained in:
Kurt Zeilenga 1999-06-29 03:17:22 +00:00
parent c0af81253a
commit 1ee85df297
7 changed files with 20 additions and 12 deletions

View File

@ -64,6 +64,7 @@ ldbm_back_bind(
Operation *op,
char *dn,
int method,
char *mech,
struct berval *cred,
char** edn
)

View File

@ -18,7 +18,7 @@ extern int ldbm_back_db_config LDAP_P(( BackendDB *bd,
extern int ldbm_back_bind LDAP_P(( BackendDB *bd,
Connection *conn, Operation *op,
char *dn, int method, struct berval *cred, char** edn ));
char *dn, int method, char* mech, struct berval *cred, char** edn ));
extern int ldbm_back_unbind LDAP_P(( BackendDB *bd,
Connection *conn, Operation *op ));

View File

@ -164,7 +164,7 @@ do_bind(
ndn = suffixAlias( ndn, op, be );
if ( (*be->be_bind)( be, conn, op, ndn, method, &cred, &edn ) == 0 ) {
if ( (*be->be_bind)( be, conn, op, ndn, method, NULL, &cred, &edn ) == 0 ) {
ldap_pvt_thread_mutex_lock( &conn->c_mutex );
conn->c_protocol = version;

View File

@ -898,6 +898,8 @@ static int connection_op_activate( Connection *conn, Operation *op )
arg->co_op->o_dn = ch_strdup( tmpdn != NULL ? tmpdn : "" );
arg->co_op->o_ndn = dn_normalize_case( ch_strdup( arg->co_op->o_dn ) );
arg->co_op->o_protocol = conn->c_protocol;
slap_op_add( &conn->c_ops, arg->co_op );
if(tag == LDAP_REQ_BIND) {

View File

@ -224,10 +224,6 @@ SOURCE=.\monitor.c
# End Source File
# Begin Source File
SOURCE=.\nt_debug.c
# End Source File
# Begin Source File
SOURCE=.\operation.c
# End Source File
# Begin Source File

View File

@ -76,13 +76,16 @@ do_modrdn(
if ( ber_peek_tag( op->o_ber, &length ) == LDAP_TAG_NEWSUPERIOR ) {
if ( conn->c_protocol == 0 ) {
if ( op->o_protocol == 0 ) {
/*
* Promote to LDAPv3
*/
ldap_pvt_thread_mutex_lock( &conn->c_mutex );
conn->c_protocol = LDAP_VERSION3;
ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
op->o_protocol = LDAP_VERSION3;
} else if ( conn->c_protocol < LDAP_VERSION3 ) {
} else if ( op->o_protocol < LDAP_VERSION3 ) {
/* Conection record indicates v2 but field
* newSuperior is present: report error.
*/
@ -103,7 +106,7 @@ do_modrdn(
"" );
return;
}/* if ( ber_scanf( ber, { "a}", &newSuperior ) == ... ) */
}
Debug( LDAP_DEBUG_ARGS, "do_modrdn: newSuperior=(%s)\n",
@ -138,7 +141,7 @@ do_modrdn(
}
}/* if ( ber_peek_tag( op->o_ber, &length ) == LDAP_TAG_NEWSUPERIOR )*/
}
dn_normalize_case( ndn );
@ -180,7 +183,7 @@ do_modrdn(
return;
}/* if ( (newSuperior_be != NULL) && ( be != newSuperior_be) ) */
}
/* alias suffix if approp */

View File

@ -427,7 +427,8 @@ struct backend_info {
/* LDAP Operations Handling Routines */
int (*bi_op_bind) LDAP_P(( BackendDB *bd,
struct slap_conn *c, struct slap_op *o,
char *dn, int method, struct berval *cred, char** edn ));
char *dn, int method, char* mechanism,
struct berval *cred, char** edn ));
int (*bi_op_unbind) LDAP_P((BackendDB *bd,
struct slap_conn *c, struct slap_op *o ));
int (*bi_op_search) LDAP_P((BackendDB *bd,
@ -491,9 +492,13 @@ typedef struct slap_op {
time_t o_time; /* time op was initiated */
char *o_dn; /* dn bound when op was initiated */
char *o_ndn; /* normalized dn bound when op was initiated */
ber_int_t o_protocol; /* version of the LDAP protocol used by client */
ber_tag_t o_authtype; /* auth method used to bind dn */
/* values taken from ldap.h */
/* LDAP_AUTH_* */
char *o_authmech; /* SASL mechanism used to bind dn */
LDAPControl **o_ctrls; /* controls */
/* long o_connid; *//* id of conn initiating this op */
@ -533,6 +538,7 @@ typedef struct slap_conn {
char *c_dn; /* DN bound to this conn */
ber_int_t c_protocol; /* version of the LDAP protocol used by client */
ber_tag_t c_authtype; /* auth method used to bind c_dn */
char *c_authmech; /* SASL mechanism used to bind c_dn */
Operation *c_ops; /* list of operations being processed */
Operation *c_pending_ops; /* list of pending operations */