]> git.sur5r.net Git - openldap/commitdiff
Add SLAP_DBFLAG_OVERLAY
authorHoward Chu <hyc@openldap.org>
Sat, 27 Nov 2004 11:45:54 +0000 (11:45 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 27 Nov 2004 11:45:54 +0000 (11:45 +0000)
servers/slapd/backend.c
servers/slapd/backover.c
servers/slapd/slap.h

index 0469f9b1187a82649a36c09d5781604fc406e527..bd03c495009e50fcb296a67f1d2d2d6aa904e361 100644 (file)
@@ -1535,7 +1535,8 @@ int backend_operational(
 
        /* Let the overlays have a chance at this */
        be_orig = op->o_bd;
-       op->o_bd = select_backend( be_orig->be_nsuffix, 0, 0 );
+       if ( SLAP_ISOVERLAY( be_orig ))
+               op->o_bd = select_backend( be_orig->be_nsuffix, 0, 0 );
 
        if (( SLAP_OPATTRS( rs->sr_attr_flags ) || op->ors_attrs ) &&
                op->o_bd && op->o_bd->be_operational != NULL )
index 1c9f783d1e6222b3925220db4bd73cd7601cafaf..a834d702d79f0ec391a45e1e3f1ac79227ac6787 100644 (file)
@@ -178,6 +178,7 @@ over_back_response ( Operation *op, SlapReply *rs )
        int rc = SLAP_CB_CONTINUE;
        BackendDB *be = op->o_bd, db = *op->o_bd;
 
+       db.be_flags |= SLAP_DBFLAG_OVERLAY;
        op->o_bd = &db;
        for (; on; on=on->on_next ) {
                if ( on->on_response ) {
@@ -241,6 +242,7 @@ over_op_func(
        slap_callback cb = {NULL, over_back_response, NULL, NULL};
        int rc = SLAP_CB_CONTINUE;
 
+       db.be_flags |= SLAP_DBFLAG_OVERLAY;
        op->o_bd = &db;
        cb.sc_next = op->o_callback;
        cb.sc_private = oi;
index f0bd6fa6007076d744a15fa61cd1b448dd0ab795..8c25d43e801e6606fecf44acd7f79573fd53dabd 100644 (file)
@@ -1565,6 +1565,7 @@ struct slap_backend_db {
 #define        SLAP_DBFLAG_GLUE_INSTANCE       0x0010U /* a glue backend */
 #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_OVERLAY                    0x0080U /* this db struct is an overlay */
 #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 */
@@ -1572,6 +1573,7 @@ struct slap_backend_db {
 #define SLAP_DBFLAGS(be)                       ((be)->be_flags)
 #define SLAP_NOLASTMOD(be)                     (SLAP_DBFLAGS(be) & SLAP_DBFLAG_NOLASTMOD)
 #define SLAP_LASTMOD(be)                       (!SLAP_NOLASTMOD(be))
+#define SLAP_ISOVERLAY(be)                     (SLAP_DBFLAGS(be) & SLAP_DBFLAG_OVERLAY)
 #define SLAP_NO_SCHEMA_CHECK(be)       \
        (SLAP_DBFLAGS(be) & SLAP_DBFLAG_NO_SCHEMA_CHECK)
 #define        SLAP_GLUE_INSTANCE(be)          \