]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.h
Added overlay objects
[openldap] / servers / slapd / config.h
index c5eb1eb44ed09c2e3c384e3b85728f01bbb52ef1..5bdd995de19aed5d26abb79575a3fd7643b7af7f 100644 (file)
@@ -49,7 +49,7 @@ typedef struct ConfigTable {
 #define ARG_PAREN      0x01000000
 #define ARG_NONZERO    0x02000000
 #define ARG_UNIQUE     0x10000000
-#define ARG_SPECIAL    0x20000000      /* one special case */
+#define ARG_MUTEX      0x20000000      /* modify in single-thread mode */
 #define ARG_OFFSET     0x40000000
 #define ARG_MAGIC      0x80000000
 
@@ -65,18 +65,33 @@ typedef struct config_args_s {
        unsigned long lineno;
        char log[PATH_MAX + STRLENOF(": line 18446744073709551615") + 1];
        int depth;
-       int value_int;   /* parsed first val */
-       long value_long; /* for simple cases */
-       ber_len_t value_ber_t;
-       char *value_string;
-       struct berval value_dn;
-       struct berval value_ndn;
+       /* parsed first val for simple cases */
+       union {
+               int v_int;
+               long v_long;
+               ber_len_t v_ber_t;
+               char *v_string;
+               struct {
+                       struct berval vdn_dn;
+                       struct berval vdn_ndn;
+               } v_dn;
+       } values;
+       /* return values for emit mode */
+       BerVarray rvalue_vals;
+       BerVarray rvalue_nvals;
        int emit;       /* emit instead of setting */
        int type;       /* ConfigTable.arg_type & ARGS_USERLAND */
        BackendDB *be;
        BackendInfo *bi;
 } ConfigArgs;
 
+#define value_int values.v_int
+#define value_long values.v_long
+#define value_ber_t values.v_ber_t
+#define value_string values.v_string
+#define value_dn values.v_dn.vdn_dn
+#define value_ndn values.v_dn.vdn_ndn
+
 typedef int (ConfigDriver)(ConfigArgs *c);
 
 #ifdef SLAPD_MODULES
@@ -98,4 +113,5 @@ typedef struct ConfigFile {
        BerVarray c_dseFiles;
 } ConfigFile;
 
-void config_back_init( ConfigFile *cfp, ConfigTable *ct );
+int config_back_init( ConfigFile *cfp, ConfigTable *ct );
+int config_get_vals(ConfigTable *ct, ConfigArgs *c);