From: Kurt Zeilenga Date: Wed, 26 Dec 2001 19:05:26 +0000 (+0000) Subject: move compare and delete to struct berval DNs X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~489 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=24a4d888dc5d31a9a52f10d05cd68e969c5cf1b6;p=openldap move compare and delete to struct berval DNs --- diff --git a/servers/slapd/back-bdb/compare.c b/servers/slapd/back-bdb/compare.c index 35e1508304..71b072ae3b 100644 --- a/servers/slapd/back-bdb/compare.c +++ b/servers/slapd/back-bdb/compare.c @@ -18,8 +18,8 @@ bdb_compare( BackendDB *be, Connection *conn, Operation *op, - const char *dn, - const char *ndn, + struct berval *dn, + struct berval *ndn, AttributeAssertion *ava ) { @@ -32,7 +32,7 @@ bdb_compare( int manageDSAit = get_manageDSAit( op ); /* get entry */ - rc = bdb_dn2entry( be, NULL, ndn, &e, &matched, 0 ); + rc = bdb_dn2entry( be, NULL, ndn->bv_val, &e, &matched, 0 ); switch( rc ) { case DB_NOTFOUND: @@ -52,14 +52,14 @@ bdb_compare( matched_dn = ch_strdup( matched->e_dn ); refs = is_entry_referral( matched ) ? get_entry_referrals( be, conn, op, matched, - dn, LDAP_SCOPE_DEFAULT ) + dn->bv_val, LDAP_SCOPE_DEFAULT ) : NULL; bdb_entry_return( be, matched ); matched = NULL; } else { refs = referral_rewrite( default_referral, - NULL, dn, LDAP_SCOPE_DEFAULT ); + NULL, dn->bv_val, LDAP_SCOPE_DEFAULT ); } send_ldap_result( conn, op, rc = LDAP_REFERRAL, @@ -74,7 +74,7 @@ bdb_compare( if (!manageDSAit && is_entry_referral( e ) ) { /* entry is a referral, don't allow add */ struct berval **refs = get_entry_referrals( be, - conn, op, e, dn, LDAP_SCOPE_DEFAULT ); + conn, op, e, dn->bv_val, LDAP_SCOPE_DEFAULT ); Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0, 0, 0 ); diff --git a/servers/slapd/back-bdb/delete.c b/servers/slapd/back-bdb/delete.c index 9822076ef3..30e2bc6350 100644 --- a/servers/slapd/back-bdb/delete.c +++ b/servers/slapd/back-bdb/delete.c @@ -18,8 +18,8 @@ bdb_delete( BackendDB *be, Connection *conn, Operation *op, - const char *dn, - const char *ndn + struct berval *dn, + struct berval *ndn ) { struct bdb_info *bdb = (struct bdb_info *) be->be_private; @@ -33,11 +33,13 @@ bdb_delete( DB_TXN *ltid = NULL; struct bdb_op_info opinfo; - Debug( LDAP_DEBUG_ARGS, "==> bdb_delete: %s\n", dn, 0, 0 ); + Debug( LDAP_DEBUG_ARGS, "==> bdb_delete: %s\n", + dn->bv_val, 0, 0 ); if( 0 ) { retry: /* transaction retry */ - Debug( LDAP_DEBUG_TRACE, "==> bdb_delete: retrying...\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_TRACE, "==> bdb_delete: retrying...\n", + 0, 0, 0 ); rc = txn_abort( ltid ); ltid = NULL; op->o_private = NULL; @@ -69,7 +71,7 @@ retry: /* transaction retry */ op->o_private = &opinfo; /* get entry for read/modify/write */ - rc = bdb_dn2entry( be, ltid, ndn, &e, &matched, DB_RMW ); + rc = bdb_dn2entry( be, ltid, ndn->bv_val, &e, &matched, DB_RMW ); switch( rc ) { case 0: @@ -96,14 +98,14 @@ retry: /* transaction retry */ matched_dn = ch_strdup( matched->e_dn ); refs = is_entry_referral( matched ) ? get_entry_referrals( be, conn, op, matched, - dn, LDAP_SCOPE_DEFAULT ) + dn->bv_val, LDAP_SCOPE_DEFAULT ) : NULL; bdb_entry_return( be, matched ); matched = NULL; } else { refs = referral_rewrite( default_referral, - NULL, dn, LDAP_SCOPE_DEFAULT ); + NULL, dn->bv_val, LDAP_SCOPE_DEFAULT ); } send_ldap_result( conn, op, LDAP_REFERRAL, @@ -116,7 +118,7 @@ retry: /* transaction retry */ goto done; } - pdn = dn_parent( be, ndn ); + pdn = dn_parent( be, ndn->bv_val ); if( pdn != NULL && *pdn != '\0' ) { /* get parent */ @@ -192,7 +194,7 @@ retry: /* transaction retry */ /* parent is a referral, don't allow add */ /* parent is an alias, don't allow add */ struct berval **refs = get_entry_referrals( be, - conn, op, e, dn, LDAP_SCOPE_DEFAULT ); + conn, op, e, dn->bv_val, LDAP_SCOPE_DEFAULT ); Debug( LDAP_DEBUG_TRACE, "bdb_delete: entry is referral\n", diff --git a/servers/slapd/back-ldbm/compare.c b/servers/slapd/back-ldbm/compare.c index 3a7245ec7e..a1b49111a6 100644 --- a/servers/slapd/back-ldbm/compare.c +++ b/servers/slapd/back-ldbm/compare.c @@ -21,8 +21,8 @@ ldbm_back_compare( Backend *be, Connection *conn, Operation *op, - const char *dn, - const char *ndn, + struct berval *dn, + struct berval *ndn, AttributeAssertion *ava ) { @@ -34,7 +34,7 @@ ldbm_back_compare( int manageDSAit = get_manageDSAit( op ); /* get entry with reader lock */ - if ( (e = dn2entry_r( be, ndn, &matched )) == NULL ) { + if ( (e = dn2entry_r( be, ndn->bv_val, &matched )) == NULL ) { char *matched_dn = NULL; struct berval **refs = NULL; @@ -42,12 +42,12 @@ ldbm_back_compare( matched_dn = ch_strdup( matched->e_dn ); refs = is_entry_referral( matched ) ? get_entry_referrals( be, conn, op, matched, - dn, LDAP_SCOPE_DEFAULT ) + dn->bv_val, LDAP_SCOPE_DEFAULT ) : NULL; cache_return_entry_r( &li->li_cache, matched ); } else { refs = referral_rewrite( default_referral, - NULL, dn, LDAP_SCOPE_DEFAULT ); + NULL, dn->bv_val, LDAP_SCOPE_DEFAULT ); } send_ldap_result( conn, op, LDAP_REFERRAL, @@ -62,11 +62,11 @@ ldbm_back_compare( if (!manageDSAit && is_entry_referral( e ) ) { /* entry is a referral, don't allow add */ struct berval **refs = get_entry_referrals( be, - conn, op, e, dn, LDAP_SCOPE_DEFAULT ); + conn, op, e, dn->bv_val, LDAP_SCOPE_DEFAULT ); #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_INFO, - "ldbm_back_compare: entry (%s) is a referral.\n", e->e_dn )); + "ldbm_back_compare: entry (%s) is a referral.\n", e->e_dn )); #else Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0, 0, 0 ); diff --git a/servers/slapd/back-ldbm/delete.c b/servers/slapd/back-ldbm/delete.c index f92bd24a4d..c1d619841d 100644 --- a/servers/slapd/back-ldbm/delete.c +++ b/servers/slapd/back-ldbm/delete.c @@ -21,8 +21,8 @@ ldbm_back_delete( Backend *be, Connection *conn, Operation *op, - const char *dn, - const char *ndn + struct berval *dn, + struct berval *ndn ) { struct ldbminfo *li = (struct ldbminfo *) be->be_private; @@ -36,35 +36,35 @@ ldbm_back_delete( #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY, - "ldbm_back_delete: %s\n", dn )); + "ldbm_back_delete: %s\n", dn->bv_val )); #else - Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_delete: %s\n", dn, 0, 0); + Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_delete: %s\n", dn->bv_val, 0, 0); #endif /* get entry with writer lock */ - if ( (e = dn2entry_w( be, ndn, &matched )) == NULL ) { + if ( (e = dn2entry_w( be, ndn->bv_val, &matched )) == NULL ) { char *matched_dn = NULL; struct berval **refs; #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_INFO, - "ldbm_back_delete: no such object %s\n", dn )); + "ldbm_back_delete: no such object %s\n", dn->bv_val )); #else Debug(LDAP_DEBUG_ARGS, "<=- ldbm_back_delete: no such object %s\n", - dn, 0, 0); + dn->bv_val, 0, 0); #endif if ( matched != NULL ) { matched_dn = ch_strdup( matched->e_dn ); refs = is_entry_referral( matched ) ? get_entry_referrals( be, conn, op, matched, - dn, LDAP_SCOPE_DEFAULT ) + dn->bv_val, LDAP_SCOPE_DEFAULT ) : NULL; cache_return_entry_r( &li->li_cache, matched ); } else { refs = referral_rewrite( default_referral, - NULL, dn, LDAP_SCOPE_DEFAULT ); + NULL, dn->bv_val, LDAP_SCOPE_DEFAULT ); } send_ldap_result( conn, op, LDAP_REFERRAL, @@ -80,12 +80,12 @@ ldbm_back_delete( /* parent is a referral, don't allow add */ /* parent is an alias, don't allow add */ struct berval **refs = get_entry_referrals( be, - conn, op, e, dn, LDAP_SCOPE_DEFAULT ); + conn, op, e, dn->bv_val, LDAP_SCOPE_DEFAULT ); #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_INFO, - "ldbm_back_delete: entry (%s) is a referral.\n", - e->e_dn )); + "ldbm_back_delete: entry (%s) is a referral.\n", + e->e_dn )); #else Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0, 0, 0 ); @@ -121,7 +121,7 @@ ldbm_back_delete( if( (p = dn2entry_w( be, pdn, NULL )) == NULL) { #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_ERR, - "ldbm_back_delete: parent of (%s) does not exist\n", dn )); + "ldbm_back_delete: parent of (%s) does not exist\n", dn )); #else Debug( LDAP_DEBUG_TRACE, "<=- ldbm_back_delete: parent does not exist\n", @@ -139,7 +139,8 @@ ldbm_back_delete( { #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_ERR, - "ldbm_back_delete: no access to parent of (%s)\n", dn )); + "ldbm_back_delete: no access to parent of (%s)\n", + dn->bv_val )); #else Debug( LDAP_DEBUG_TRACE, "<=- ldbm_back_delete: no access to parent\n", 0, @@ -158,7 +159,7 @@ ldbm_back_delete( p = (Entry *)&slap_entry_root; rc = access_allowed( be, conn, op, p, - children, NULL, ACL_WRITE ); + children, NULL, ACL_WRITE ); p = NULL; /* check parent for "children" acl */ @@ -182,8 +183,8 @@ ldbm_back_delete( } else { #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_ERR, - "ldbm_back_delete: (%s) has no " - "parent & not a root.\n", dn )); + "ldbm_back_delete: (%s) has no " + "parent & not a root.\n", dn )); #else Debug( LDAP_DEBUG_TRACE, "<=- ldbm_back_delete: no parent & " @@ -205,11 +206,12 @@ ldbm_back_delete( if ( dn2id_delete( be, e->e_ndn, e->e_id ) != 0 ) { #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_ERR, - "ldbm_back_delete: (%s) operations error\n", dn )); + "ldbm_back_delete: (%s) operations error\n", + dn->bv_val )); #else Debug(LDAP_DEBUG_ARGS, "<=- ldbm_back_delete: operations error %s\n", - dn, 0, 0); + dn->bv_val, 0, 0); #endif send_ldap_result( conn, op, LDAP_OTHER, @@ -221,12 +223,12 @@ ldbm_back_delete( if ( id2entry_delete( be, e ) != 0 ) { #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_ERR, - "ldbm_back_delete: (%s) operations error\n", - dn )); + "ldbm_back_delete: (%s) operations error\n", + dn->bv_val )); #else Debug(LDAP_DEBUG_ARGS, "<=- ldbm_back_delete: operations error %s\n", - dn, 0, 0); + dn->bv_val, 0, 0); #endif send_ldap_result( conn, op, LDAP_OTHER, diff --git a/servers/slapd/back-monitor/compare.c b/servers/slapd/back-monitor/compare.c index acaf766bcb..9e82f0c33b 100644 --- a/servers/slapd/back-monitor/compare.c +++ b/servers/slapd/back-monitor/compare.c @@ -44,10 +44,10 @@ int monitor_back_compare( Backend *be, - Connection *conn, - Operation *op, - const char *dn, - const char *ndn, + Connection *conn, + Operation *op, + struct berval *dn, + struct berval *ndn, AttributeAssertion *ava ) { @@ -56,7 +56,7 @@ monitor_back_compare( Attribute *a; /* get entry with reader lock */ - monitor_cache_dn2entry( mi, ndn, &e, &matched ); + monitor_cache_dn2entry( mi, ndn->bv_val, &e, &matched ); if ( e == NULL ) { send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT, matched ? matched->e_dn : NULL, @@ -64,7 +64,7 @@ monitor_back_compare( if ( matched ) { monitor_cache_release( mi, matched ); } - + return( 0 ); } @@ -78,21 +78,20 @@ monitor_back_compare( } rc = LDAP_NO_SUCH_ATTRIBUTE; - + for ( a = attrs_find( e->e_attrs, ava->aa_desc ); a != NULL; a = attrs_find( a->a_next, ava->aa_desc )) { rc = LDAP_COMPARE_FALSE; - + if ( value_find( ava->aa_desc, a->a_vals, ava->aa_value ) == 0 ) { - rc = LDAP_COMPARE_TRUE; break; } } - + send_ldap_result( conn, op, rc, NULL, NULL, NULL, NULL ); - + if( rc != LDAP_NO_SUCH_ATTRIBUTE ) { rc = 0; } diff --git a/servers/slapd/backglue.c b/servers/slapd/backglue.c index e03fbfcee8..cd773ba816 100644 --- a/servers/slapd/backglue.c +++ b/servers/slapd/backglue.c @@ -397,22 +397,22 @@ glue_back_compare ( BackendDB *b0, Connection *conn, Operation *op, - const char *dn, - const char *ndn, + struct berval *dn, + struct berval *ndn, AttributeAssertion *ava ) { BackendDB *be; int rc; - be = glue_back_select (b0, ndn); + be = glue_back_select (b0, ndn->bv_val); if (be && be->be_compare) { rc = be->be_compare (be, conn, op, dn, ndn, ava); } else { rc = LDAP_UNWILLING_TO_PERFORM; send_ldap_result (conn, op, rc, NULL, "No compare target found", - NULL, NULL); + NULL, NULL); } return rc; } @@ -497,14 +497,14 @@ glue_back_delete ( BackendDB *b0, Connection *conn, Operation *op, - const char *dn, - const char *ndn + struct berval *dn, + struct berval *ndn ) { BackendDB *be; int rc; - be = glue_back_select (b0, ndn); + be = glue_back_select (b0, ndn->bv_val); if (be && be->be_delete) { rc = be->be_delete (be, conn, op, dn, ndn); diff --git a/servers/slapd/compare.c b/servers/slapd/compare.c index 58cbe2a32d..fafdd815b1 100644 --- a/servers/slapd/compare.c +++ b/servers/slapd/compare.c @@ -284,7 +284,7 @@ do_compare( suffix_alias( be, ndn ); if ( be->be_compare ) { - (*be->be_compare)( be, conn, op, pdn->bv_val, ndn->bv_val, &ava ); + (*be->be_compare)( be, conn, op, pdn, ndn, &ava ); } else { send_ldap_result( conn, op, rc = LDAP_UNWILLING_TO_PERFORM, NULL, "operation not supported within namingContext", diff --git a/servers/slapd/delete.c b/servers/slapd/delete.c index e579d98371..dc5393c596 100644 --- a/servers/slapd/delete.c +++ b/servers/slapd/delete.c @@ -184,7 +184,7 @@ do_delete( if ( !be->be_update_ndn.bv_len || repl_user ) #endif { - if ( (*be->be_delete)( be, conn, op, pdn->bv_val, ndn->bv_val ) == 0 ) { + if ( (*be->be_delete)( be, conn, op, pdn, ndn ) == 0 ) { #ifdef SLAPD_MULTIMASTER if ( !be->be_update_ndn.bv_len || !repl_user ) #endif diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h index 51f5106bd1..75695c76cf 100644 --- a/servers/slapd/slap.h +++ b/servers/slapd/slap.h @@ -1048,7 +1048,7 @@ typedef int (BI_op_search) LDAP_P((BackendDB *bd, struct berval **attrs, int attrsonly)); typedef int (BI_op_compare)LDAP_P((BackendDB *bd, struct slap_conn *c, struct slap_op *o, - const char *dn, const char *ndn, + struct berval *dn, struct berval *ndn, AttributeAssertion *ava)); typedef int (BI_op_modify) LDAP_P((BackendDB *bd, struct slap_conn *c, struct slap_op *o, @@ -1063,7 +1063,7 @@ typedef int (BI_op_add) LDAP_P((BackendDB *bd, Entry *e)); typedef int (BI_op_delete) LDAP_P((BackendDB *bd, struct slap_conn *c, struct slap_op *o, - const char *dn, const char *ndn)); + struct berval *dn, struct berval *ndn)); typedef int (BI_op_abandon) LDAP_P((BackendDB *bd, struct slap_conn *c, struct slap_op *o, ber_int_t msgid)); @@ -1094,6 +1094,7 @@ typedef int (BI_acl_group) LDAP_P((Backend *bd, Entry *e, const char *bdn, const char *edn, ObjectClass *group_oc, AttributeDescription *group_at )); + typedef int (BI_acl_attribute) LDAP_P((Backend *bd, struct slap_conn *c, struct slap_op *o, Entry *e, const char *edn,