]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.h
fix previous commit
[openldap] / servers / slapd / config.h
index 5bdd995de19aed5d26abb79575a3fd7643b7af7f..be90c5c2d32267119a3776328388ebfab63af7a9 100644 (file)
@@ -1,5 +1,4 @@
 /* config.h - configuration abstraction structure */
-
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
@@ -28,17 +27,28 @@ typedef struct ConfigTable {
        void *notify;
 } ConfigTable;
 
+typedef enum {
+       Cft_Abstract = 0,
+       Cft_Global,
+       Cft_Schema,
+       Cft_Backend,
+       Cft_Database,
+       Cft_Overlay,
+       Cft_Include,
+       Cft_Module
+} ConfigType;
+
 #define ARGS_USERLAND  0x00000fff
 #define ARGS_TYPES     0x000ff000
-#define ARGS_POINTER   0x0001f000
+#define ARGS_POINTER   0x0003f000
 #define ARGS_NUMERIC   0x0000f000
 #define ARG_INT                0x00001000
 #define ARG_LONG       0x00002000
 #define ARG_BER_LEN_T  0x00004000
 #define ARG_ON_OFF     0x00008000
 #define ARG_STRING     0x00010000
-#define ARG_DN         0x00020000
-#define ARG_EXISTS     0x00040000      /* XXX not yet */
+#define ARG_BERVAL     0x00020000
+#define ARG_DN         0x00040000
 #define ARG_IGNORED    0x00080000
 
 #define ARGS_SYNTAX    0xfff00000
@@ -56,11 +66,26 @@ typedef struct ConfigTable {
 #define ARG_BAD_CONF   0xdead0000      /* overload return values */
 #define ARG_UNKNOWN    0xc0de0000
 
+extern ConfigTable config_back_cf_table[];
+
+typedef struct ConfigOCs {
+       char *def;
+       ConfigType cft;
+       ObjectClass **oc;
+#if 0
+       BI_op_add *add;         /* optional, add-specific processing */
+       BI_op_delete *del;      /* mandatory, delete implementation */
+       BI_op_modify *mod;      /* optional, mod-specific */
+       BI_op_modrdn *ren;      /* optional, modrdn... */
+#endif
+} ConfigOCs;
+
 typedef struct config_args_s {
        int argc;
        char **argv;
        int argv_size;
        char *line;
+       char *tline;
        const char *fname;
        unsigned long lineno;
        char log[PATH_MAX + STRLENOF(": line 18446744073709551615") + 1];
@@ -71,6 +96,7 @@ typedef struct config_args_s {
                long v_long;
                ber_len_t v_ber_t;
                char *v_string;
+               struct berval v_bv;
                struct {
                        struct berval vdn_dn;
                        struct berval vdn_ndn;
@@ -79,39 +105,26 @@ typedef struct config_args_s {
        /* return values for emit mode */
        BerVarray rvalue_vals;
        BerVarray rvalue_nvals;
-       int emit;       /* emit instead of setting */
+#define        SLAP_CONFIG_EMIT        0x2000  /* emit instead of set */
+#define SLAP_CONFIG_ADD                0x4000  /* config file add vs LDAP add */
+       int op;
        int type;       /* ConfigTable.arg_type & ARGS_USERLAND */
        BackendDB *be;
        BackendInfo *bi;
+       void *private;  /* anything */
 } 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_bv values.v_bv
 #define value_dn values.v_dn.vdn_dn
 #define value_ndn values.v_dn.vdn_ndn
 
 typedef int (ConfigDriver)(ConfigArgs *c);
 
-#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;
-
-int config_back_init( ConfigFile *cfp, ConfigTable *ct );
+int config_register_schema(ConfigTable *ct, ConfigOCs *co);
 int config_get_vals(ConfigTable *ct, ConfigArgs *c);
+int config_add_vals(ConfigTable *ct, ConfigArgs *c);
+ConfigTable * config_find_keyword(ConfigTable *ct, ConfigArgs *c);