#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,
}
-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,
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;
+}
+