mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-18 11:05:48 +08:00
Add extensibleObject support
This commit is contained in:
parent
ea67f4f758
commit
7c7fab11d4
@ -41,6 +41,7 @@ entry_schema_check(
|
||||
#else
|
||||
static const char *ad_objectClass = "objectclass";
|
||||
#endif
|
||||
int extensible = 0;
|
||||
|
||||
if( !global_schemacheck ) return LDAP_SUCCESS;
|
||||
|
||||
@ -74,6 +75,16 @@ entry_schema_check(
|
||||
ret = LDAP_OBJECT_CLASS_VIOLATION;
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef SLAPD_SCHEMA_NOT_COMPAT
|
||||
if( oc == slap_schema.si_oc_extensibleObject )
|
||||
#else
|
||||
if( !strcmp( aoc->a_vals[i], "extensibleObject" ) == 0 )
|
||||
#endif
|
||||
{
|
||||
extensible=1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,6 +92,10 @@ entry_schema_check(
|
||||
return ret;
|
||||
}
|
||||
|
||||
if( extensible ) {
|
||||
return LDAP_SUCCESS;
|
||||
}
|
||||
|
||||
/* check that each attr in the entry is allowed by some oc */
|
||||
for ( a = e->e_attrs; a != NULL; a = a->a_next ) {
|
||||
#ifdef SLAPD_SCHEMA_NOT_COMPAT
|
||||
|
@ -42,6 +42,7 @@ struct slap_schema_oc_map {
|
||||
size_t ssom_offset;
|
||||
} oc_map[] = {
|
||||
{ "top", offsetof(struct slap_internal_schema, si_oc_top) },
|
||||
{ "extensibleObject", offsetof(struct slap_internal_schema, si_oc_extensibleObject) },
|
||||
{ "alias", offsetof(struct slap_internal_schema, si_oc_alias) },
|
||||
{ "referral", offsetof(struct slap_internal_schema, si_oc_referral) },
|
||||
{ "LDAProotDSE", offsetof(struct slap_internal_schema, si_oc_rootdse) },
|
||||
|
@ -334,6 +334,7 @@ typedef struct slap_attr_desc {
|
||||
struct slap_internal_schema {
|
||||
/* objectClass */
|
||||
ObjectClass *si_oc_top;
|
||||
ObjectClass *si_oc_extensibleObject;
|
||||
ObjectClass *si_oc_alias;
|
||||
ObjectClass *si_oc_referral;
|
||||
ObjectClass *si_oc_subentry;
|
||||
|
Loading…
Reference in New Issue
Block a user