int
entry_schema_check(
- Entry *e, Attribute *oldattrs,
+ Backend *be,
+ Entry *e,
+ Attribute *oldattrs,
const char** text,
char *textbuf, size_t textlen )
{
if( a->a_desc->ad_type->sat_check ) {
int rc = (a->a_desc->ad_type->sat_check)(
- e, a, text, textbuf, textlen );
+ be, e, a, text, textbuf, textlen );
if( rc != LDAP_SUCCESS ) {
return rc;
}
#endif
return LDAP_OBJECT_CLASS_VIOLATION;
+ }
- } else if ( oc->soc_kind == LDAP_SCHEMA_ABSTRACT ) {
+ if ( oc->sco_check ) {
+ int rc = (oc->sco_check)( be, e, oc,
+ text, textbuf, textlen );
+ if( rc != LDAP_SUCCESS ) {
+ return rc;
+ }
+ }
+ if ( oc->soc_kind == LDAP_SCHEMA_ABSTRACT ) {
/* object class is abstract */
if ( oc != slap_schema.si_oc_top &&
!is_object_subclass( oc, sc ))