Diff for /servers/slapd/config.h between versions 1.2 and 1.2.2.12

version 1.2, 2004/12/08 18:07:24 version 1.2.2.12, 2006/01/03 22:16:14
Line 1 Line 1
 /* config.h - configuration abstraction structure */  /* config.h - configuration abstraction structure */
   /* $OpenLDAP: pkg/ldap/servers/slapd/config.h,v 1.2.2.11 2005/12/20 19:00:00 kurt Exp $ */
 /* $OpenLDAP: pkg/ldap/servers/slapd/config.h,v 1.1 2004/11/05 05:22:04 hyc Exp $ */  
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 1998-2004 The OpenLDAP Foundation.   * Copyright 1998-2006 The OpenLDAP Foundation.
  * All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
Line 15 Line 14
  * <http://www.OpenLDAP.org/license.html>.   * <http://www.OpenLDAP.org/license.html>.
  */   */
   
 typedef struct config_table_s {  #ifndef CONFIG_H
   #define CONFIG_H
   
   typedef struct ConfigTable {
         char *name;          char *name;
           char *what;
         int min_args;          int min_args;
         int max_args;          int max_args;
         int length;          int length;
         char *what;          unsigned int arg_type;
         unsigned long arg_type;  
         void *arg_item;          void *arg_item;
         char *attribute;          char *attribute;
         AttributeDescription *ad;          AttributeDescription *ad;
         void *notify;          void *notify;
 } ConfigTable;  } ConfigTable;
   
 #define ARGS_USERLAND   0x0000ffffL  typedef enum {
 #define ARGS_TYPES      0x00ff0000L          Cft_Abstract = 0,
 #define ARGS_POINTER    0x001f0000L          Cft_Global,
 #define ARGS_NUMERIC    0x000f0000L          Cft_Schema,
 #define ARG_INT         0x00010000L          Cft_Backend,
 #define ARG_LONG        0x00020000L          Cft_Database,
 #define ARG_BER_LEN_T   0x00040000L          Cft_Overlay,
 #define ARG_ON_OFF      0x00080000L          Cft_Include,
 #define ARG_STRING      0x00100000L          Cft_Module,
 #define ARG_BERVAL      0x00200000L     /* XXX not yet */          Cft_Misc        /* backend/overlay defined */
 #define ARG_EXISTS      0x00400000L     /* XXX not yet */  } ConfigType;
 #define ARG_IGNORED     0x00800000L  
   #define ARGS_USERLAND   0x00000fff
 #define ARGS_SYNTAX     0xff000000L  #define ARGS_TYPES      0x000ff000
 #define ARG_DB          0x01000000L  #define ARGS_POINTER    0x0003f000
 #define ARG_PRE_DB      0x02000000L  #define ARGS_NUMERIC    0x0000f000
 #define ARG_PAREN       0x04000000L  #define ARG_INT         0x00001000
 #define ARG_NONZERO     0x08000000L  #define ARG_LONG        0x00002000
 #define ARG_UNIQUE      0x10000000L     /* XXX not yet */  #define ARG_BER_LEN_T   0x00004000
 #define ARG_SPECIAL     0x20000000L     /* one special case */  #define ARG_ON_OFF      0x00008000
 #define ARG_OFFSET      0x40000000L  #define ARG_STRING      0x00010000
 #define ARG_MAGIC       0x80000000L  #define ARG_BERVAL      0x00020000
   #define ARG_DN          0x00040000
   #define ARG_IGNORED     0x00080000
   
   #define ARGS_SYNTAX     0xfff00000
   #define ARG_PRE_BI      0x00100000
   #define ARG_PRE_DB      0x00200000
   #define ARG_DB          0x00400000      /* Only applies to DB */
   #define ARG_MAY_DB      0x00800000      /* May apply to DB */
   #define ARG_PAREN       0x01000000
   #define ARG_NONZERO     0x02000000
   #define ARG_NO_INSERT   0x04000000      /* no arbitrary inserting */
   #define ARG_NO_DELETE   0x08000000      /* no runtime deletes */
   #define ARG_UNIQUE      0x10000000
   #define ARG_QUOTE       0x20000000      /* wrap with quotes before parsing */
   #define ARG_OFFSET      0x40000000
   #define ARG_MAGIC       0x80000000
   
   #define ARG_BAD_CONF    0xdead0000      /* overload return values */
   
   /* This is a config entry's e_private data */
   typedef struct CfEntryInfo {
           struct CfEntryInfo *ce_parent;
           struct CfEntryInfo *ce_sibs;
           struct CfEntryInfo *ce_kids;
           Entry *ce_entry;
           ConfigType ce_type;
           BackendInfo *ce_bi;
           BackendDB *ce_be;
           void *ce_private;
   } CfEntryInfo;
   
   struct config_args_s;
   
   /* Check if the child is allowed to be LDAPAdd'd to the parent */
   typedef int (ConfigLDAPadd)(
           CfEntryInfo *parent, Entry *child, struct config_args_s *ca);
   
   /* Let the object create children out of slapd.conf */
   typedef int (ConfigCfAdd)(
           Operation *op, SlapReply *rs, Entry *parent, struct config_args_s *ca );
   
   typedef struct ConfigOCs {
           char *co_def;
           ConfigType co_type;
           ConfigTable *co_table;
           ConfigLDAPadd *co_ldadd;
           ConfigCfAdd *co_cfadd;
           ObjectClass *co_oc;
           struct berval *co_name;
   } ConfigOCs;
   
 #define ARG_BAD_CONF    0xdead0000L     /* overload return values */  typedef int (ConfigDriver)(struct config_args_s *c);
 #define ARG_UNKNOWN     0xc0de0000L  
   
 typedef struct config_args_s {  typedef struct config_args_s {
         int argc;          int argc;
         char **argv;          char **argv;
         int argv_size;          int argv_size;
         char *line;          char *line;
           char *tline;
         const char *fname;          const char *fname;
         unsigned long lineno;          int lineno;
         char log[PATH_MAX + STRLENOF(": line 18446744073709551615") + 1];          char log[MAXPATHLEN + STRLENOF(": line 18446744073709551615") + 1];
           char msg[SLAP_TEXT_BUFLEN];
         int depth;          int depth;
         int value_int;   /* parsed first val */          int valx;       /* multi-valued value index */
         long value_long; /* for simple cases */          /* parsed first val for simple cases */
         ber_len_t value_ber_t;          union {
         char *value_string;                  int v_int;
         int emit;       /* emit instead of setting */                  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;
                   } v_dn;
           } values;
           /* return values for emit mode */
           BerVarray rvalue_vals;
           BerVarray rvalue_nvals;
   #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 */          int type;       /* ConfigTable.arg_type & ARGS_USERLAND */
         BackendDB *be;          BackendDB *be;
         BackendInfo *bi;          BackendInfo *bi;
           Entry *ca_entry;        /* entry being modified */
           void *private;  /* anything */
           ConfigDriver *cleanup;
 } ConfigArgs;  } ConfigArgs;
   
 typedef int (ConfigDriver)(ConfigArgs *c);  /* If lineno is zero, we have an actual LDAP Add request from a client.
    * Otherwise, we're reading a config file or a config dir.
    */
   #define CONFIG_ONLINE_ADD(ca)   (!((ca)->lineno))
   
   #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
   
   int config_register_schema(ConfigTable *ct, ConfigOCs *co);
   int config_del_vals(ConfigTable *cf, ConfigArgs *c);
   int config_get_vals(ConfigTable *ct, ConfigArgs *c);
   int config_add_vals(ConfigTable *ct, ConfigArgs *c);
   
   void init_config_argv( ConfigArgs *c );
   int init_config_attrs(ConfigTable *ct);
   int init_config_ocs( ConfigOCs *ocs );
   int config_parse_vals(ConfigTable *ct, ConfigArgs *c, int valx);
   int config_parse_add(ConfigTable *ct, ConfigArgs *c);
   int read_config_file(const char *fname, int depth, ConfigArgs *cf,
           ConfigTable *cft );
   
   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 ) );
   
   #define SLAP_X_ORDERED_FMT      "{%d}"
   
   #endif /* CONFIG_H */

Removed from v.1.2  
changed lines
  Added in v.1.2.2.12


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org