BackendDB *be,
Connection *conn,
Operation *op,
- const char *dn,
- const char *ndn,
+ struct berval *dn,
+ struct berval *ndn,
AttributeAssertion *ava
)
{
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:
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,
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 );
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;
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;
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:
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,
goto done;
}
- pdn = dn_parent( be, ndn );
+ pdn = dn_parent( be, ndn->bv_val );
if( pdn != NULL && *pdn != '\0' ) {
/* get parent */
/* 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",
Backend *be,
Connection *conn,
Operation *op,
- const char *dn,
- const char *ndn,
+ struct berval *dn,
+ struct berval *ndn,
AttributeAssertion *ava
)
{
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;
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,
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 );
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;
#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,
/* 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 );
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",
{
#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,
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 */
} 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 & "
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,
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,
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
)
{
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,
if ( matched ) {
monitor_cache_release( mi, matched );
}
-
+
return( 0 );
}
}
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;
}
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;
}
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);
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",
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
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,
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));
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,