]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/proto-slap.h
Fix previous commit
[openldap] / servers / slapd / proto-slap.h
index b9c7c645bf3a80d8b8a5c34496ffff0547fa6c3f..038094c2596755b40571317b1feb4060e393689b 100644 (file)
@@ -57,8 +57,9 @@ LDAP_SLAPD_F (AttributeDescription *) ad_dup LDAP_P((
 
 LDAP_SLAPD_F (void) ad_destroy LDAP_P(( AttributeDescription * ));
 
-#define ad_cmp(l,r)    (((l)->ad_cname.bv_len == (r)->ad_cname.bv_len) \
-       ? strcasecmp((l)->ad_cname.bv_val, (r)->ad_cname.bv_val ) : 1 )
+#define ad_cmp(l,r)    (((l)->ad_cname.bv_len < (r)->ad_cname.bv_len) \
+       ? -1 : (((l)->ad_cname.bv_len > (r)->ad_cname.bv_len) \
+               ? 1 : strcasecmp((l)->ad_cname.bv_val, (r)->ad_cname.bv_val )))
 
 LDAP_SLAPD_F (int) is_ad_subtype LDAP_P((
        AttributeDescription *sub,
@@ -167,7 +168,7 @@ LDAP_SLAPD_F (BackendDB *) select_backend LDAP_P((
        int noSubordinates ));
 
 LDAP_SLAPD_F (int) be_issuffix LDAP_P(( Backend *be,
-       const char *suffix ));
+       struct berval *suffix ));
 LDAP_SLAPD_F (int) be_isroot LDAP_P(( Backend *be,
        struct berval *ndn ));
 LDAP_SLAPD_F (int) be_isroot_pw LDAP_P(( Backend *be,
@@ -346,7 +347,9 @@ LDAP_SLAPD_F (void) slapd_clr_read LDAP_P((ber_socket_t s, int wake));
  * dn.c
  */
 
-#define dn_match(dn1, dn2)     ( ber_cmp((dn1), (dn2)) == 0 )
+#define dn_match(dn1, dn2)     ( ber_bvcmp((dn1), (dn2)) == 0 )
+
+LDAP_SLAPD_V( const struct berval ) slap_empty_bv;
 
 LDAP_SLAPD_F (int) dnValidate LDAP_P((
        Syntax *syntax, 
@@ -401,6 +404,8 @@ LDAP_SLAPD_F (void) build_new_dn LDAP_P((
        struct berval * parent_dn,
        struct berval * newrdn ));
 
+LDAP_SLAPD_F (int) dnParent LDAP_P(( struct berval *dn, struct berval *pdn ));
+
 #define SLAP_DN_MIGRATION
 #ifdef SLAP_DN_MIGRATION
        /* These routines are deprecated!!! */
@@ -519,25 +524,13 @@ LDAP_SLAPD_F (int) lock_fclose LDAP_P(( FILE *fp, FILE *lfp ));
 
 /*
  * modify.c
- *     should be relocated to separate file
  */
-LDAP_SLAPD_F( void ) slap_mod_free( Modification *mod, int freeit );
-LDAP_SLAPD_F( void ) slap_mods_free( Modifications *mods );
-LDAP_SLAPD_F( void ) slap_modlist_free( LDAPModList *ml );
-
 LDAP_SLAPD_F( int ) slap_mods_check(
        Modifications *ml,
        int update,
        const char **text,
        char *textbuf, size_t textlen );
 
-LDAP_SLAPD_F( int ) slap_modlist2mods(
-       LDAPModList *ml,
-       int update,
-       Modifications **mods,
-       const char **text,
-       char *textbuf, size_t textlen );
-
 LDAP_SLAPD_F( int ) slap_mods_opattrs(
        Operation *op,
        Modifications *mods,
@@ -545,6 +538,23 @@ LDAP_SLAPD_F( int ) slap_mods_opattrs(
        const char **text,
        char *textbuf, size_t textlen );
 
+/*
+ * mods.c
+ */
+LDAP_SLAPD_F( int ) modify_add_values( Entry *e,
+       Modification *mod,
+       const char **text, char *textbuf, size_t textlen );
+LDAP_SLAPD_F( int ) modify_delete_values( Entry *e,
+       Modification *mod,
+       const char **text, char *textbuf, size_t textlen );
+LDAP_SLAPD_F( int ) modify_replace_values( Entry *e,
+       Modification *mod,
+       const char **text, char *textbuf, size_t textlen );
+
+LDAP_SLAPD_F( void ) slap_mod_free( Modification *mod, int freeit );
+LDAP_SLAPD_F( void ) slap_mods_free( Modifications *mods );
+LDAP_SLAPD_F( void ) slap_modlist_free( LDAPModList *ml );
+
 /*
  * module.c
  */
@@ -620,17 +630,22 @@ LDAP_SLAPD_F (int) is_object_subclass LDAP_P((
        ObjectClass *sup ));
 
 LDAP_SLAPD_F (int) is_entry_objectclass LDAP_P((
-       Entry *, ObjectClass *oc ));
+       Entry *, ObjectClass *oc, int set_flags ));
 #define is_entry_alias(e)              \
-       is_entry_objectclass((e), slap_schema.si_oc_alias)
+       (((e)->e_ocflags & SLAP_OC__END) ? ((e)->e_ocflags & SLAP_OC_ALIAS) : \
+       is_entry_objectclass((e), slap_schema.si_oc_alias, 1))
 #define is_entry_referral(e)   \
-       is_entry_objectclass((e), slap_schema.si_oc_referral)
+       (((e)->e_ocflags & SLAP_OC__END) ? ((e)->e_ocflags & SLAP_OC_REFERRAL) : \
+       is_entry_objectclass((e), slap_schema.si_oc_referral, 1))
 #define is_entry_subentry(e)   \
-       is_entry_objectclass((e), slap_schema.si_oc_subentry)
-#define is_entry_collectiveAttributes(e)       \
-       is_entry_objectclass((e), slap_schema.si_oc_collectiveAttributes)
+       (((e)->e_ocflags & SLAP_OC__END) ? ((e)->e_ocflags & SLAP_OC_SUBENTRY) : \
+       is_entry_objectclass((e), slap_schema.si_oc_subentry, 1))
+#define is_entry_collectiveAttributeSubentry(e)        \
+       (((e)->e_ocflags & SLAP_OC__END) ? ((e)->e_ocflags & SLAP_OC_COLLECTIVEATTRIBUTESUBENTRY) : \
+       is_entry_objectclass((e), slap_schema.si_oc_collectiveAttributeSubentry, 1))
 #define is_entry_dynamicObject(e)      \
-       is_entry_objectclass((e), slap_schema.si_oc_dynamicObject)
+       (((e)->e_ocflags & SLAP_OC__END) ? ((e)->e_ocflags & SLAP_OC_DYNAMICOBJECT) : \
+       is_entry_objectclass((e), slap_schema.si_oc_dynamicObject, 1))
 
 LDAP_SLAPD_F (int) oc_schema_info( Entry *e );