]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
initialize AttributeAssertion before using
[openldap] / servers / slapd / slap.h
index c7ae76acd5baf8ed84fac4100df540dc317d91bc..568cdd2334f4f7cbccbca6fbcec59291fc67a094 100644 (file)
 
 LDAP_BEGIN_DECL
 
+#ifdef LDAP_DEVEL
+#define SLAP_ACL_HONOR_DISCLOSE        /* partially implemented */
+#define SLAP_DYNACL
+#define LDAP_COMP_MATCH                        /* experimental */
+#define LDAP_DYNAMIC_OBJECTS
+#define LDAP_SYNC_TIMESTAMP
+#define LDAP_COLLECTIVE_ATTRIBUTES
+#define SLAP_CONTROL_X_TREE_DELETE LDAP_CONTROL_X_TREE_DELETE
+#endif
+
+#if defined(LDAP_DEVEL) && defined(ENABLE_REWRITE)
+/* use librewrite for sasl-regexp */
+#define SLAP_AUTH_REWRITE      1
+#endif /* LDAP_DEVEL && ENABLE_REWRITE */
+
 /*
  * SLAPD Memory allocation macros
  *
@@ -94,8 +109,6 @@ LDAP_BEGIN_DECL
 
 #define SLAP_MAX_WORKER_THREADS                (16)
 
-#define SLAP_MAX_SYNCREPL_THREADS      (8)
-
 #define SLAP_SB_MAX_INCOMING_DEFAULT ((1<<18) - 1)
 #define SLAP_SB_MAX_INCOMING_AUTH ((1<<24) - 1)
 
@@ -324,10 +337,6 @@ typedef int slap_syntax_transform_func LDAP_P((
        struct berval * out,
        void *memctx));
 
-#ifdef LDAP_DEVEL
-#define LDAP_COMP_MATCH
-#endif
-
 #ifdef LDAP_COMP_MATCH
 typedef void* slap_component_transform_func LDAP_P((
        struct berval * in ));
@@ -894,6 +903,9 @@ struct slap_internal_schema {
 typedef struct slap_attr_assertion {
        AttributeDescription    *aa_desc;
        struct berval aa_value;
+#ifdef LDAP_COMP_MATCH
+       struct slap_component_filter *aa_cf;/* for attribute aliasing */
+#endif
 } AttributeAssertion;
 
 typedef struct slap_ss_assertion {
@@ -1168,10 +1180,6 @@ typedef struct slap_authz_info {
 } AuthorizationInformation;
 
 
-#ifdef LDAP_DEVEL
-#define SLAP_DYNACL
-#endif /* LDAP_DEVEL */
-
 #ifdef SLAP_DYNACL
 struct slap_op;
 
@@ -1382,6 +1390,7 @@ LDAP_SLAPD_V (int) slapMode;
 #define SLAP_TRUNCATE_MODE     0x0100
 #define        SLAP_TOOL_READMAIN      0x0200
 #define        SLAP_TOOL_READONLY      0x0400
+#define        SLAP_TOOL_QUICK         0x0800
 
 struct slap_replica_info {
        char *ri_host;                          /* supersedes be_replica */
@@ -1477,8 +1486,7 @@ LDAP_STAILQ_HEAD( slap_sync_cookie_s, sync_cookie );
 typedef struct syncinfo_s {
         struct slap_backend_db *si_be;
         long                           si_rid;
-        char                           *si_provideruri;
-        BerVarray                      si_provideruri_bv;
+        struct berval                  si_provideruri;
 #define SYNCINFO_TLS_OFF               0
 #define SYNCINFO_TLS_ON                        1
 #define SYNCINFO_TLS_CRITICAL  2
@@ -1520,6 +1528,10 @@ typedef struct syncinfo_s {
 
 LDAP_TAILQ_HEAD( be_pcl, slap_csn_entry );
 
+#ifndef SLAP_MAX_CIDS
+#define        SLAP_MAX_CIDS   32      /* Maximum number of supported controls */
+#endif
+
 struct slap_backend_db {
        BackendInfo     *bd_info;       /* pointer to shared backend info */
 
@@ -1544,6 +1556,7 @@ struct slap_backend_db {
 #define                be_extended     bd_info->bi_extended
 
 #define                be_chk_referrals        bd_info->bi_chk_referrals
+#define                be_chk_controls         bd_info->bi_chk_controls
 #define                be_fetch        bd_info->bi_entry_get_rw
 #define                be_release      bd_info->bi_entry_release_rw
 #define                be_group        bd_info->bi_acl_group
@@ -1557,8 +1570,6 @@ struct slap_backend_db {
  */
 #define                be_has_subordinates bd_info->bi_has_subordinates
 
-#define                be_controls     bd_info->bi_controls
-
 #define                be_connection_init      bd_info->bi_connection_init
 #define                be_connection_destroy   bd_info->bi_connection_destroy
 
@@ -1576,13 +1587,20 @@ struct slap_backend_db {
 #define                be_entry_modify bd_info->bi_tool_entry_modify
 #endif
 
+       /* supported controls */
+       /* note: set to 0 if the database does not support the control;
+        * be_ctrls[SLAP_MAX_CIDS] is set to 1 if initialized */
+       char            be_ctrls[SLAP_MAX_CIDS + 1];
+
 /* Database flags */
 #define SLAP_DBFLAG_NOLASTMOD          0x0001U
 #define SLAP_DBFLAG_NO_SCHEMA_CHECK    0x0002U
 #define        SLAP_DBFLAG_GLUE_INSTANCE       0x0010U /* a glue backend */
 #define        SLAP_DBFLAG_GLUE_SUBORDINATE    0x0020U /* child of a glue hierarchy */
 #define        SLAP_DBFLAG_GLUE_LINKED         0x0040U /* child is connected to parent */
-#define SLAP_DBFLAG_OVERLAY                    0x0080U /* this db struct is an overlay */
+#define SLAP_DBFLAG_GLUE_ADVERTISE     0x0080U /* advertise in rootDSE */
+#define SLAP_DBFLAG_OVERLAY            0x0100U /* this db struct is an overlay */
+#define        SLAP_DBFLAG_GLOBAL_OVERLAY      0x0200U /* this db struct is a global overlay */
 #define SLAP_DBFLAG_SHADOW             0x8000U /* a shadow */
 #define SLAP_DBFLAG_SYNC_SHADOW                0x1000U /* a sync shadow */
 #define SLAP_DBFLAG_SLURP_SHADOW       0x2000U /* a slurp shadow */
@@ -1599,6 +1617,8 @@ struct slap_backend_db {
        (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_SUBORDINATE)
 #define        SLAP_GLUE_LINKED(be)            \
        (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_LINKED)
+#define        SLAP_GLUE_ADVERTISE(be) \
+       (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLUE_ADVERTISE)
 #define SLAP_SHADOW(be)                                (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SHADOW)
 #define SLAP_SYNC_SHADOW(be)                   (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SYNC_SHADOW)
 #define SLAP_SLURP_SHADOW(be)                  (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SLURP_SHADOW)
@@ -1861,6 +1881,8 @@ typedef int (BI_op_extended) LDAP_P((
        struct slap_op *op, struct slap_rep *rs ));
 typedef int (BI_chk_referrals) LDAP_P((
        struct slap_op *op, struct slap_rep *rs ));
+typedef int (BI_chk_controls) LDAP_P((
+       struct slap_op *op, struct slap_rep *rs ));
 typedef int (BI_entry_release_rw)
        LDAP_P(( struct slap_op *op, Entry *e, int rw ));
 typedef int (BI_entry_get_rw) LDAP_P(( struct slap_op *op, struct berval *ndn,
@@ -1962,6 +1984,7 @@ struct slap_backend_info {
        /* Auxilary Functions */
        BI_operational          *bi_operational;
        BI_chk_referrals        *bi_chk_referrals;
+       BI_chk_controls         *bi_chk_controls;
        BI_entry_get_rw         *bi_entry_get_rw;
        BI_entry_release_rw     *bi_entry_release_rw;
 
@@ -2005,7 +2028,8 @@ struct slap_backend_info {
 #define SLAP_NOLASTMODCMD(be)  (SLAP_BFLAGS(be) & SLAP_BFLAG_NOLASTMODCMD)
 #define SLAP_LASTMODCMD(be)    (!SLAP_NOLASTMODCMD(be))
 
-       char **bi_controls;             /* supported controls */
+       char    **bi_controls;          /* supported controls */
+       char    bi_ctrls[SLAP_MAX_CIDS + 1];
 
        unsigned int bi_nDB;    /* number of databases of this type */
        void    *bi_private;    /* anything the backend type needs */
@@ -2091,10 +2115,6 @@ typedef struct slap_gacl {
        char ga_ndn[1];
 } GroupAssertion;
 
-#ifndef SLAP_MAX_CIDS
-#define        SLAP_MAX_CIDS   32      /* Maximum number of supported controls */
-#endif
-
 struct slap_control_ids {
        int sc_assert;
        int sc_preRead;
@@ -2551,8 +2571,8 @@ typedef struct slap_counters_t {
 #define SLAP_CTRL_HIDE                         0x80000000U
 #endif
 
-#define SLAP_CTRL_FRONTEND                     0x00800000U
-#define SLAP_CTRL_FRONTEND_SEARCH      0x00010000U     /* for NOOP */
+#define SLAP_CTRL_GLOBAL                       0x00800000U
+#define SLAP_CTRL_GLOBAL_SEARCH                0x00010000U     /* for NOOP */
 
 #define SLAP_CTRL_OPFLAGS                      0x0000FFFFU
 #define SLAP_CTRL_ABANDON                      0x00000001U
@@ -2582,11 +2602,6 @@ typedef int (SLAP_CTRL_PARSE_FN) LDAP_P((
 #define SLAP_ZONE_ALLOC 1
 #undef SLAP_ZONE_ALLOC
 
-#if defined(LDAP_DEVEL) && defined(ENABLE_REWRITE)
-/* use librewrite for sasl-regexp */
-#define SLAP_AUTH_REWRITE      1
-#endif /* LDAP_DEVEL && ENABLE_REWRITE */
-
 #ifdef LDAP_COMP_MATCH
 /*
  * Extensible Filter Definition