]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.h
ITS#2919 add a user modifiable generalizedTime attribute
[openldap] / servers / slapd / config.h
index c5eb1eb44ed09c2e3c384e3b85728f01bbb52ef1..cf9e1ad78aa5d6666815d94163f966ee6105f58a 100644 (file)
@@ -49,13 +49,20 @@ 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
 
 #define ARG_BAD_CONF   0xdead0000      /* overload return values */
 #define ARG_UNKNOWN    0xc0de0000
 
+extern ConfigTable config_back_cf_table[];
+
+typedef struct ConfigOCs {
+       char *def;
+       ObjectClass **oc;
+} ConfigOCs;
+
 typedef struct config_args_s {
        int argc;
        char **argv;
@@ -65,37 +72,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;
 
-typedef int (ConfigDriver)(ConfigArgs *c);
+#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
 
-#ifdef SLAPD_MODULES
-typedef struct modpath_s {
-       struct modpath_s *mp_next;
-       struct berval mp_path;
-       BerVarray mp_loads;
-} ModPaths;
-#endif
-
-typedef struct ConfigFile {
-       struct ConfigFile *c_sibs;
-       struct ConfigFile *c_kids;
-       struct berval c_file;
-#ifdef SLAPD_MODULES
-       ModPaths c_modpaths;
-       ModPaths *c_modlast;
-#endif
-       BerVarray c_dseFiles;
-} ConfigFile;
+typedef int (ConfigDriver)(ConfigArgs *c);
 
-void config_back_init( ConfigFile *cfp, ConfigTable *ct );
+int config_get_vals(ConfigTable *ct, ConfigArgs *c);