]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/config.c
Merge remote-tracking branch 'origin/mdb.master'
[openldap] / servers / slapd / back-meta / config.c
index 028902e024d06cbeaa12bd35c0f4f38b05494b80..231c583c93fbaf9d3cdc1a87483e35d54f9051df 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2012 The OpenLDAP Foundation.
+ * Copyright 1999-2013 The OpenLDAP Foundation.
  * Portions Copyright 2001-2003 Pierangelo Masarati.
  * Portions Copyright 1999-2003 Howard Chu.
  * All rights reserved.
 #include "../back-ldap/back-ldap.h"
 #include "back-meta.h"
 
+#ifdef LDAP_DEVEL
+#define SLAP_AUTH_DN   1
+#endif
+
 static ConfigDriver meta_back_cf_gen;
 static ConfigLDAPadd meta_ldadd;
 static ConfigCfAdd meta_cfadd;
@@ -101,7 +105,7 @@ enum {
 };
 
 static ConfigTable metacfg[] = {
-       { "uri", "uri", 2, 2, 0,
+       { "uri", "uri", 2, 0, 0,
                ARG_MAGIC|LDAP_BACK_CFG_URI,
                meta_back_cf_gen, "( OLcfgDbAt:0.14 "
                        "NAME 'olcDbURI' "
@@ -315,7 +319,7 @@ static ConfigTable metacfg[] = {
                NULL, NULL },
 
        { "subtree-exclude", "pattern", 2, 2, 0,
-               ARG_STRING|ARG_MAGIC|LDAP_BACK_CFG_SUBTREE_EX,
+               ARG_MAGIC|LDAP_BACK_CFG_SUBTREE_EX,
                meta_back_cf_gen, "( OLcfgDbAt:3.103 "
                        "NAME 'olcDbSubtreeExclude' "
                        "DESC 'DN of subtree to exclude from target' "
@@ -323,7 +327,7 @@ static ConfigTable metacfg[] = {
                        "SYNTAX OMsDirectoryString )",
                NULL, NULL },
        { "subtree-include", "pattern", 2, 2, 0,
-               ARG_STRING|ARG_MAGIC|LDAP_BACK_CFG_SUBTREE_IN,
+               ARG_MAGIC|LDAP_BACK_CFG_SUBTREE_IN,
                meta_back_cf_gen, "( OLcfgDbAt:3.104 "
                        "NAME 'olcDbSubtreeInclude' "
                        "DESC 'DN of subtree to include in target' "
@@ -1085,9 +1089,7 @@ meta_back_cf_gen( ConfigArgs *c )
 
        assert( mi != NULL );
 
-       if ( c->op == SLAP_CONFIG_EMIT ) {
-               struct berval bv = BER_BVNULL;
-
+       if ( c->op == SLAP_CONFIG_EMIT || c->op == LDAP_MOD_DELETE ) {
                if ( !mi )
                        return 1;
 
@@ -1098,6 +1100,10 @@ meta_back_cf_gen( ConfigArgs *c )
                        mt = c->ca_private;
                        mc = &mt->mt_mc;
                }
+       }
+
+       if ( c->op == SLAP_CONFIG_EMIT ) {
+               struct berval bv = BER_BVNULL;
 
                switch( c->type ) {
                /* Base attrs */
@@ -1348,19 +1354,22 @@ meta_back_cf_gen( ConfigArgs *c )
                /* target attrs */
                case LDAP_BACK_CFG_URI: {
                        char *p2, *p1 = strchr( mt->mt_uri, ' ' );
-                       bv.bv_len = strlen( mt->mt_uri ) + 1 + mt->mt_psuffix.bv_len;
+                       bv.bv_len = strlen( mt->mt_uri ) + 3 + mt->mt_psuffix.bv_len;
                        bv.bv_val = ch_malloc( bv.bv_len + 1 );
+                       p2 = bv.bv_val;
+                       *p2++ = '"';
                        if ( p1 ) {
-                               p2 = lutil_strncopy( bv.bv_val, mt->mt_uri, p1 - mt->mt_uri );
+                               p2 = lutil_strncopy( p2, mt->mt_uri, p1 - mt->mt_uri );
                        } else {
-                               p2 = lutil_strcopy( bv.bv_val, mt->mt_uri );
+                               p2 = lutil_strcopy( p2, mt->mt_uri );
                        }
                        *p2++ = '/';
                        p2 = lutil_strcopy( p2, mt->mt_psuffix.bv_val );
+                       *p2++ = '"';
                        if ( p1 ) {
                                strcpy( p2, p1 );
                        }
-                       value_add_one( &c->rvalue_vals, &bv );
+                       ber_bvarray_add( &c->rvalue_vals, &bv );
                        } break;
 
                case LDAP_BACK_CFG_ACL_AUTHCDN:
@@ -1500,6 +1509,7 @@ meta_back_cf_gen( ConfigArgs *c )
                                        ptr = lutil_strcopy( ptr, ",proxy-authz-non-critical" );
                                }
 
+#ifdef SLAP_AUTH_DN
                                switch ( mt->mt_idassert_flags & LDAP_BACK_AUTH_DN_MASK ) {
                                case LDAP_BACK_AUTH_DN_AUTHZID:
                                        ptr = lutil_strcopy( ptr, ",dn-authzid" );
@@ -1515,6 +1525,7 @@ meta_back_cf_gen( ConfigArgs *c )
 #endif
                                        break;
                                }
+#endif
 
                                bv.bv_len = ( ptr - bv.bv_val );
                                /* end-of-flags */