]> git.sur5r.net Git - openldap/commitdiff
detect if trying to make back-monitor shadow
authorPierangelo Masarati <ando@openldap.org>
Fri, 25 Nov 2005 15:16:54 +0000 (15:16 +0000)
committerPierangelo Masarati <ando@openldap.org>
Fri, 25 Nov 2005 15:16:54 +0000 (15:16 +0000)
servers/slapd/bconfig.c
servers/slapd/config.h
servers/slapd/syncrepl.c

index 95901309004aaf5fe16abf94bb631b644d9b598b..fe7be0dc23e4ce198d8ce2802d75287d19921ec7 100644 (file)
@@ -2548,8 +2548,18 @@ config_updatedn(ConfigArgs *c) {
        BER_BVZERO( &c->value_dn );
        BER_BVZERO( &c->value_ndn );
 
-       SLAP_DBFLAGS(c->be) |= (SLAP_DBFLAG_SHADOW | SLAP_DBFLAG_SLURP_SHADOW);
-       return(0);
+       return config_slurp_shadow( c );
+}
+
+int
+config_shadow( ConfigArgs *c, int flag )
+{
+       if ( SLAP_MONITOR( c->be ) ) {
+               Debug( LDAP_DEBUG_ANY, "%s: monitor database cannot be shadow.\n", c->log, 0, 0 );
+               return 1;
+       }
+       SLAP_DBFLAGS(c->be) |= (SLAP_DBFLAG_SHADOW | flag);
+       return 0;
 }
 
 static int
index a1ca2208ece40a353caa8f07b6963b868899e018..b5085e2a15c4be974fcb2a0a040f8d0537560890 100644 (file)
@@ -173,6 +173,10 @@ ConfigTable * config_find_keyword(ConfigTable *ct, ConfigArgs *c);
 Entry * config_build_entry( Operation *op, SlapReply *rs, CfEntryInfo *parent,
        ConfigArgs *c, struct berval *rdn, ConfigOCs *main, ConfigOCs *extra );
 
+int config_shadow( ConfigArgs *c, int flag );
+#define        config_slurp_shadow(c)  config_shadow((c), SLAP_DBFLAG_SLURP_SHADOW)
+#define        config_sync_shadow(c)   config_shadow((c), SLAP_DBFLAG_SYNC_SHADOW)
+
        /* Make sure we don't exceed the bits reserved for userland */
 #define        config_check_userland(last) \
        assert( ( ( (last) - 1 ) & ARGS_USERLAND ) == ( (last) - 1 ) );
index 5b263a6030592c51dee5930345819a1c50fc14c0..2c539d9bcf192577f1cfcadd94d20283104fcc4b 100644 (file)
@@ -3100,8 +3100,8 @@ add_syncrepl(
        int     rc = 0;
 
        if ( !( c->be->be_search && c->be->be_add && c->be->be_modify && c->be->be_delete ) ) {
-               Debug( LDAP_DEBUG_ANY, "database %s does not support operations "
-                       "required for syncrepl\n", c->be->be_type, 0, 0 );
+               Debug( LDAP_DEBUG_ANY, "%s: database %s does not support operations "
+                       "required for syncrepl\n", c->log, c->be->be_type, 0 );
                return 1;
        }
        si = (syncinfo_t *) ch_calloc( 1, sizeof( syncinfo_t ) );
@@ -3329,6 +3329,5 @@ syncrepl_config( ConfigArgs *c )
        } else if ( add_syncrepl( c ) ) {
                return(1);
        }
-       SLAP_DBFLAGS(c->be) |= (SLAP_DBFLAG_SHADOW | SLAP_DBFLAG_SYNC_SHADOW);
-       return(0);
+       return config_sync_shadow( c );
 }