From 6f9901e9ce27dca0a2fd40228354edfdd7957ff4 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Sat, 5 Apr 2003 06:34:20 +0000 Subject: [PATCH] Moved get_alias_dn from back-ldbm to frontend --- servers/slapd/back-ldbm/alias.c | 56 --------------------------------- servers/slapd/proto-slap.h | 6 ++++ servers/slapd/referral.c | 45 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 56 deletions(-) diff --git a/servers/slapd/back-ldbm/alias.c b/servers/slapd/back-ldbm/alias.c index 4521ca491c..104dbbee51 100644 --- a/servers/slapd/back-ldbm/alias.c +++ b/servers/slapd/back-ldbm/alias.c @@ -14,12 +14,6 @@ #include "proto-back-ldbm.h" -static int get_alias_dn( - Entry *e, - struct berval *al, - int *err, - const char **errmsg ); - static void new_superior( struct berval *dn, struct berval *oldSup, @@ -199,56 +193,6 @@ Entry *deref_internal_r( } -static int get_alias_dn( - Entry *e, - struct berval *ndn, - int *err, - const char **errmsg ) -{ - int rc; - Attribute *a; - AttributeDescription *aliasedObjectName - = slap_schema.si_ad_aliasedObjectName; - - a = attr_find( e->e_attrs, aliasedObjectName ); - - if( a == NULL ) { - /* - * there was an aliasedobjectname defined but no data. - */ - *err = LDAP_ALIAS_PROBLEM; - *errmsg = "alias missing aliasedObjectName attribute"; - return -1; - } - - /* - * aliasedObjectName should be SINGLE-VALUED with a single value. - */ - if ( a->a_vals[0].bv_val == NULL ) { - /* - * there was an aliasedobjectname defined but no data. - */ - *err = LDAP_ALIAS_PROBLEM; - *errmsg = "alias missing aliasedObjectName value"; - return -1; - } - - if( a->a_vals[1].bv_val != NULL ) { - *err = LDAP_ALIAS_PROBLEM; - *errmsg = "alias has multivalued aliasedObjectName"; - return -1; - } - - rc = dnNormalize2( NULL, &a->a_vals[0], ndn ); - if( rc != LDAP_SUCCESS ) { - *err = LDAP_ALIAS_PROBLEM; - *errmsg = "alias aliasedObjectName value is invalid"; - return -1; - } - - return 0; -} - static void new_superior( struct berval *dn, struct berval *oldSup, diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index 5502834817..f743486104 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -784,6 +784,12 @@ LDAP_SLAPD_F (BerVarray) referral_rewrite LDAP_P(( struct berval *target, int scope )); +LDAP_SLAPD_F (int) get_alias_dn LDAP_P(( + Entry *e, + struct berval *ndn, + int *err, + const char **text )); + /* * repl.c */ diff --git a/servers/slapd/referral.c b/servers/slapd/referral.c index acc9b9c2c5..4e596ef287 100644 --- a/servers/slapd/referral.c +++ b/servers/slapd/referral.c @@ -356,3 +356,48 @@ BerVarray get_entry_referrals( return refs; } + +int get_alias_dn( + Entry *e, + struct berval *ndn, + int *err, + const char **text ) +{ + Attribute *a; + AttributeDescription *aliasedObjectName + = slap_schema.si_ad_aliasedObjectName; + + a = attr_find( e->e_attrs, aliasedObjectName ); + + if( a == NULL ) { + /* + * there was an aliasedobjectname defined but no data. + */ + *err = LDAP_ALIAS_PROBLEM; + *text = "alias missing aliasedObjectName attribute"; + return -1; + } + + /* + * aliasedObjectName should be SINGLE-VALUED with a single value. + */ + if ( a->a_vals[0].bv_val == NULL ) { + /* + * there was an aliasedobjectname defined but no data. + */ + *err = LDAP_ALIAS_PROBLEM; + *text = "alias missing aliasedObjectName value"; + return -1; + } + + if( a->a_nvals[1].bv_val != NULL ) { + *err = LDAP_ALIAS_PROBLEM; + *text = "alias has multivalued aliasedObjectName"; + return -1; + } + + *ndn = a->a_nvals[0]; + + return 0; +} + -- 2.39.5