]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
Add IDL debugging code from SuSE.
[openldap] / servers / slapd / slap.h
index 1a0d72bfe65220c8b397f36b0c47761693535146..aaefe20868799398c619daabda0641c32ad03128 100644 (file)
@@ -71,12 +71,10 @@ LDAP_BEGIN_DECL
 
 /* We assume "C" locale, that is US-ASCII */
 #define ASCII_SPACE(c) ( (c) == ' ' )
-#define ASCII_WHITESPACE(c)    ( (c) == ' ' || (c) == '\f' || (c) == '\n' || (c) == '\r' || (c) == '\t' || (c) == '\v' )
 #define ASCII_LOWER(c) ( (c) >= 'a' && (c) <= 'z' )
 #define ASCII_UPPER(c) ( (c) >= 'A' && (c) <= 'Z' )
 #define ASCII_ALPHA(c) ( ASCII_LOWER(c) || ASCII_UPPER(c) )
 #define ASCII_DIGIT(c) ( (c) >= '0' && (c) <= '9' )
-#define        ASCII_XDIGIT(c) ( ASCII_DIGIT(c) || ( (c) >= 'A' && (c) <= 'F') || ( (c) >= 'a' && (c) <= 'f' ) )
 #define ASCII_ALNUM(c) ( ASCII_ALPHA(c) || ASCII_DIGIT(c) )
 #define ASCII_PRINTABLE(c) ( (c) >= ' ' && (c) <= '~' )
 
@@ -92,7 +90,6 @@ LDAP_BEGIN_DECL
 #define RDN_ATTRTYPEANDVALUE_SEPARATOR(c) ((c) == '+') /* RFC 2253 */
 #define RDN_SEPARATOR(c) (DN_SEPARATOR(c) || RDN_ATTRTYPEANDVALUE_SEPARATOR(c))
 #define RDN_NEEDSESCAPE(c)     ((c) == '\\' || (c) == '"')
-#define RDN_SPECIAL(c) ( (c) == ',' || (c) == '+' || (c) == '<' || (c) == '>' || (c) == ';' )
 
 #define DESC_LEADCHAR(c)       ( ASCII_ALPHA(c) )
 #define DESC_CHAR(c)   ( ASCII_ALNUM(c) || (c) == '-' )
@@ -113,7 +110,6 @@ LDAP_BEGIN_DECL
        (c) == '-' || (c) == '.' || (c) == '/' || (c) == ':' || \
        (c) == '?' || (c) == ' ' || (c) == '=' )
 #define SLAP_PRINTABLES(c)     ( SLAP_PRINTABLE(c) || (c) == '$' )
-#define        SLAP_IA5(c)             ( (c) <= 127 )
 
 /* must match in schema_init.c */
 #define SLAPD_DN_SYNTAX                        "1.3.6.1.4.1.1466.115.121.1.12"
@@ -813,6 +809,32 @@ LDAP_SLAPD_F (int) slapMode;
 
 #define SLAP_TRUNCATE_MODE     0x0100
 
+struct slap_replica_info {
+       char   *ri_host;        /* supersedes be_replica */
+       char  **ri_nsuffix;     /* array of suffixes this replica accepts */
+};
+
+struct slap_limits_set {
+       /* time limits */
+       int     lms_t_soft;
+       int     lms_t_hard;
+
+       /* size limits */
+       int     lms_s_soft;
+       int     lms_s_hard;
+       int     lms_s_unchecked;
+};
+
+struct slap_limits {
+       int     lm_type;        /* type of pattern */
+#define SLAP_LIMITS_UNDEFINED  0x0000
+#define SLAP_LIMITS_EXACT      0x0001
+#define SLAP_LIMITS_REGEX      0x0002
+       regex_t lm_dn_regex;    /* regex-based size and time limits */
+       char   *lm_dn_pat;      /* ndn for EXACT; pattern for REGEX */
+       struct slap_limits_set  lm_limits;
+};
+
 /* temporary aliases */
 typedef BackendDB Backend;
 #define nbackends nBackendDB
@@ -908,11 +930,13 @@ struct slap_backend_db {
        char    *be_root_ndn;   /* the magic "root" normalized dn for this db   */
        struct berval be_root_pw;       /* the magic "root" password for this db        */
        unsigned int be_max_deref_depth;       /* limit for depth of an alias deref  */
-       int     be_sizelimit;   /* size limit for this backend             */
-       int     be_timelimit;   /* time limit for this backend             */
+#define be_sizelimit   be_def_limit.lms_s_soft
+#define be_timelimit   be_def_limit.lms_t_soft
+       struct slap_limits_set be_def_limit; /* default limits */
+       struct slap_limits **be_limits; /* regex-based size and time limits */
        AccessControl *be_acl;  /* access control list for this backend    */
        slap_access_t   be_dfltaccess;  /* access given if no acl matches          */
-       char    **be_replica;   /* replicas of this backend (in master)    */
+       struct slap_replica_info **be_replica;  /* replicas of this backend (in master) */
        char    *be_replogfile; /* replication log file (in master)        */
        char    *be_update_ndn; /* allowed to make changes (in replicas) */
        struct berval **be_update_refs; /* where to refer modifying clients to */