]> git.sur5r.net Git - openldap/commitdiff
first round of SHADOW flags/isupdate test unification
authorPierangelo Masarati <ando@openldap.org>
Sat, 10 Apr 2004 10:00:58 +0000 (10:00 +0000)
committerPierangelo Masarati <ando@openldap.org>
Sat, 10 Apr 2004 10:00:58 +0000 (10:00 +0000)
12 files changed:
servers/slapd/back-bdb/add.c
servers/slapd/back-bdb/delete.c
servers/slapd/back-bdb/modrdn.c
servers/slapd/back-ldap/add.c
servers/slapd/back-ldap/modify.c
servers/slapd/back-ldbm/add.c
servers/slapd/back-ldbm/delete.c
servers/slapd/back-ldbm/modrdn.c
servers/slapd/backend.c
servers/slapd/overlays/rwm.c
servers/slapd/proto-slap.h
servers/slapd/slap.h

index 3901900011348b335a7a0c6fc125bda0bd5d51cc..476043febe5cdc61f20072f005d60cef05e7b810 100644 (file)
@@ -298,7 +298,7 @@ retry:      /* transaction retry */
                 * no parent!
                 *  if not attempting to add entry at suffix or with parent ""
                 */
-               if ((( !be_isroot( op ) && !be_isupdate(op) && !syncrepl_isupdate(op))
+               if ((( !be_isroot( op ) && !be_shadow_update(op) )
                        || pdn.bv_len > 0 ) && !is_entry_glue( op->oq_add.rs_e ))
                {
 #ifdef NEW_LOGGING
index feb7b81e9cf284426e7121b77cf6dc48250c2b4f..84758b89f858cbbab08a8e468ac94c7818d859e8 100644 (file)
@@ -246,7 +246,7 @@ retry:      /* transaction retry */
                /* no parent, must be root to delete */
                if( ! be_isroot( op ) ) {
                        if ( be_issuffix( op->o_bd, (struct berval *)&slap_empty_bv )
-                               || be_isupdate( op ) || syncrepl_isupdate( op ) ) {
+                               || be_shadow_update( op ) ) {
                                p = (Entry *)&slap_entry_root;
 
                                /* check parent for "children" acl */
index 9e3529be7f832601208a1fa58a6f9d90cf43811b..ed817dedb8072cbb008e94ab40458543b115928a 100644 (file)
@@ -396,7 +396,7 @@ retry:      /* transaction retry */
                isroot = be_isroot( op );
                if ( ! isroot ) {
                        if ( be_issuffix( op->o_bd, (struct berval *)&slap_empty_bv )
-                               || be_isupdate( op ) || syncrepl_isupdate( op ) ) {
+                               || be_shadow_update( op ) ) {
 
                                p = (Entry *)&slap_entry_root;
 
index 803bc4aef9819a3d260dbc8ebdad7f34cc56e187..837f4d3a3afa2cd5d6c7440560621c689e7680c6 100644 (file)
@@ -90,7 +90,7 @@ ldap_back_add(
        dc.ctx = "addAttrDN";
 #endif
 
-       isupdate = be_isupdate( op ) || syncrepl_isupdate( op );
+       isupdate = be_shadow_update( op );
        for (i=0, a=op->oq_add.rs_e->e_attrs; a; a=a->a_next) {
                if ( !isupdate && a->a_desc->ad_type->sat_no_user_mod  ) {
                        continue;
index c0670caf6a46bba8eae05764b2df1babace63c19..95247cbeef0d375512aa380e48295ac9726bc708 100644 (file)
@@ -91,7 +91,7 @@ ldap_back_modify(
        dc.ctx = "modifyAttrDN";
 #endif
 
-       isupdate = be_isupdate( op ) || syncrepl_isupdate( op );
+       isupdate = be_shadow_update( op );
        for (i=0, ml=op->oq_modify.rs_modlist; ml; ml=ml->sml_next) {
                int     is_oc = 0;
 
index d415b2ec09c8f1b977882176bc5a934b60dd12c2..e1dfbbbb8f7eccc45873f42e2226c333d434af5e 100644 (file)
@@ -247,7 +247,7 @@ ldbm_back_add(
        } else {
                assert( pdn.bv_val == NULL || *pdn.bv_val == '\0' );
 
-               if (( !be_isroot(op) && !be_isupdate(op) && !syncrepl_isupdate(op))
+               if (( !be_isroot(op) && !be_shadow_update(op) )
                        && !is_entry_glue( op->oq_add.rs_e ))
                {
                        ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
index 24b9ac36b36721149a28b497f30f7a5d82826b6b..234b30a3ab4ed7238b80f02957dfa13dab5c03de 100644 (file)
@@ -196,7 +196,7 @@ ldbm_back_delete(
                /* no parent, must be root to delete */
                if( ! be_isroot( op ) ) {
                        if ( be_issuffix( op->o_bd, (struct berval *)&slap_empty_bv )
-                               || be_isupdate( op ) || syncrepl_isupdate( op ) ) {
+                               || be_shadow_update( op ) ) {
                                p = (Entry *)&slap_entry_root;
                                
                                rc = access_allowed( op, p,
index acab4030daee87e8ae8beea8de75d102db505112..ccc7bf92333e6122e44b8043906fb09bcd4c9419 100644 (file)
@@ -249,7 +249,7 @@ ldbm_back_modrdn(
                isroot = be_isroot( op );
                if ( ! isroot ) {
                        if ( be_issuffix( op->o_bd, (struct berval *)&slap_empty_bv )
-                               || be_isupdate( op ) || syncrepl_isupdate( op ) ) {
+                               || be_shadow_update( op ) ) {
                                int     can_access;
                                p = (Entry *)&slap_entry_root;
                                
@@ -424,7 +424,7 @@ ldbm_back_modrdn(
 
                        if ( ! isroot ) {
                                if ( be_issuffix( op->o_bd, (struct berval *)&slap_empty_bv )
-                                       || be_isupdate( op ) || syncrepl_isupdate( op )) {
+                                       || be_shadow_update( op ) ) {
                                        int     can_access;
                                        np = (Entry *)&slap_entry_root;
                                
index db30adeb805f1675e252ceb67259213d09a7fc6b..b8f4b17d0077b9956eef877d337e504b197a0f8b 100644 (file)
@@ -728,9 +728,25 @@ be_isroot_dn( Backend *be, struct berval *ndn )
 }
 
 int
-be_isupdate( Operation *op )
+be_sync_update( Operation *op )
 {
-       return ( be_isupdate_dn( op->o_bd, &op->o_ndn ));
+       return ( SLAP_SYNC_SHADOW( op->o_bd ) && syncrepl_isupdate( op ) );
+}
+
+int
+be_slurp_update( Operation *op )
+{
+       return ( SLAP_SLURP_SHADOW( op->o_bd ) && be_isupdate_dn( op->o_bd, &op->o_ndn ));
+}
+
+int
+be_shadow_update( Operation *op )
+{
+#if 0
+       return ( be_sync_update( op ) || be_slurp_update( op ) );
+#endif
+       /* NOTE: this is slightly more efficient */
+       return ( SLAP_SHADOW( op->o_bd ) && ( syncrepl_isupdate( op ) || be_isupdate_dn( op->o_bd, &op->o_ndn ) ) );
 }
 
 int
index 9443ad27e0aedfd4462c7b35fec1b189dd4e914c..5962963381553a7af75a34e0511db75c5206d863 100644 (file)
@@ -100,7 +100,7 @@ rwm_add( Operation *op, SlapReply *rs )
        }
 
        /* Count number of attributes in entry */ 
-       isupdate = be_isupdate( op ) || syncrepl_isupdate( op );
+       isupdate = be_shadow_update( op );
        for ( i = 0, ap = &op->oq_add.rs_e->e_attrs; *ap; ) {
                struct berval   mapped;
                Attribute       *a;
index 655d26cbcf167922d8490bc1c60fdda3f6a40754..0400c5282a56bde309bf0f35ad3e564310580551 100644 (file)
@@ -225,7 +225,10 @@ LDAP_SLAPD_F (int) be_issuffix LDAP_P(( Backend *be,
 LDAP_SLAPD_F (int) be_isroot LDAP_P(( Operation *op ));
 LDAP_SLAPD_F (int) be_isroot_dn LDAP_P(( Backend *be, struct berval *ndn ));
 LDAP_SLAPD_F (int) be_isroot_pw LDAP_P(( Operation *op ));
-LDAP_SLAPD_F (int) be_isupdate LDAP_P(( Operation *op ));
+LDAP_SLAPD_F (int) be_sync_update LDAP_P(( Operation *op ));
+LDAP_SLAPD_F (int) be_slurp_update LDAP_P(( Operation *op ));
+#define be_isupdate( op ) be_slurp_update( (op) )
+LDAP_SLAPD_F (int) be_shadow_update LDAP_P(( Operation *op ));
 LDAP_SLAPD_F (int) be_isupdate_dn LDAP_P(( Backend *be, struct berval *ndn ));
 LDAP_SLAPD_F (struct berval *) be_root_dn LDAP_P(( Backend *be ));
 LDAP_SLAPD_F (int) be_entry_get_rw LDAP_P(( struct slap_op *o,
index ae03413eb76d68bbc91c69ee9524118600d7afaa..bd4f74b92a3d2ecb9c220f9931889c44e346c8df 100644 (file)
@@ -1450,9 +1450,9 @@ struct slap_backend_db {
 #define SLAP_DBFLAG_NOLASTMOD          0x0001U
 #define SLAP_DBFLAG_NO_SCHEMA_CHECK    0x0002U
 #define        SLAP_DBFLAG_GLUE_INSTANCE       0x0010U /* a glue backend */
-#define        SLAP_DBFLAG_GLUE_SUBORDINATE 0x0020U    /* child of a glue hierarchy */
+#define        SLAP_DBFLAG_GLUE_SUBORDINATE    0x0020U /* child of a glue hierarchy */
 #define        SLAP_DBFLAG_GLUE_LINKED         0x0040U /* child is connected to parent */
-#define SLAP_DBFLAG_SHADOW                     0x8000U /* a shadow */
+#define SLAP_DBFLAG_SHADOW             0x8000U /* a shadow */
 #define SLAP_DBFLAG_SYNC_SHADOW                0x1000U /* a sync shadow */
 #define SLAP_DBFLAG_SLURP_SHADOW       0x2000U /* a slurp shadow */
        slap_mask_t     be_flags;
@@ -1468,6 +1468,8 @@ struct slap_backend_db {
 #define        SLAP_GLUE_LINKED(be)            \
        (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_LINKED)
 #define SLAP_SHADOW(be)                                (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SHADOW)
+#define SLAP_SYNC_SHADOW(be)                   (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SYNC_SHADOW)
+#define SLAP_SLURP_SHADOW(be)                  (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SLURP_SHADOW)
 
        slap_mask_t     be_restrictops;         /* restriction operations */
 #define SLAP_RESTRICT_OP_ADD           0x0001U