]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
ITS#4667 in connection_closing, release c_mutex to allow waiters
[openldap] / servers / slapd / slap.h
index 5ed8fedd5812be499e333cf7890ac49e9d46a795..14537159da342c4e3417702e2968dda534bd7f5b 100644 (file)
@@ -67,8 +67,6 @@ LDAP_BEGIN_DECL
 #define LDAP_COLLECTIVE_ATTRIBUTES
 #define LDAP_COMP_MATCH
 #define LDAP_SYNC_TIMESTAMP
-
-#define SLAP_DONTUSECOPY
 #define SLAP_SORTEDRESULTS
 #endif
 
@@ -1104,6 +1102,8 @@ typedef struct slap_attr {
        unsigned a_flags;
 #define SLAP_ATTR_IXADD                0x1U
 #define SLAP_ATTR_IXDEL                0x2U
+#define SLAP_ATTR_DONT_FREE_DATA       0x4U
+#define SLAP_ATTR_DONT_FREE_VALS       0x8U
 } Attribute;
 
 
@@ -1136,6 +1136,7 @@ typedef struct slap_entry {
        slap_mask_t     e_ocflags;
 
        struct berval   e_bv;           /* For entry_encode/entry_decode */
+       struct berval   *e_abv;
 
        /* for use by the backend for any purpose */
        void*   e_private;
@@ -1706,6 +1707,7 @@ struct slap_backend_db {
 #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_DYNAMIC            0x0400U /* this db allows dynamicObjects */
+#define        SLAP_DBFLAG_MONITORING          0x0800U /* custom monitoring enabled */
 #define SLAP_DBFLAG_SHADOW             0x8000U /* a shadow */
 #define SLAP_DBFLAG_SINGLE_SHADOW      0x4000U /* a single-master shadow */
 #define SLAP_DBFLAG_SYNC_SHADOW                0x1000U /* a sync shadow */
@@ -1717,6 +1719,7 @@ struct slap_backend_db {
 #define SLAP_DBHIDDEN(be)                      (SLAP_DBFLAGS(be) & SLAP_DBFLAG_HIDDEN)
 #define SLAP_ISOVERLAY(be)                     (SLAP_DBFLAGS(be) & SLAP_DBFLAG_OVERLAY)
 #define SLAP_ISGLOBALOVERLAY(be)               (SLAP_DBFLAGS(be) & SLAP_DBFLAG_GLOBAL_OVERLAY)
+#define SLAP_DBMONITORING(be)                  (SLAP_DBFLAGS(be) & SLAP_DBFLAG_MONITORING)
 #define SLAP_NO_SCHEMA_CHECK(be)       \
        (SLAP_DBFLAGS(be) & SLAP_DBFLAG_NO_SCHEMA_CHECK)
 #define        SLAP_GLUE_INSTANCE(be)          \
@@ -2297,7 +2300,6 @@ struct slap_control_ids {
        int sc_assert;
        int sc_domainScope;
        int sc_dontUseCopy;
-       int sc_manageDIT;
        int sc_manageDSAit;
        int sc_modifyIncrement;
        int sc_noOp;
@@ -2306,6 +2308,7 @@ struct slap_control_ids {
        int sc_postRead;
        int sc_preRead;
        int sc_proxyAuthz;
+       int sc_relax;
        int sc_searchOptions;
 #ifdef SLAP_SORTEDRESULTS
        int sc_sortedResults;
@@ -2468,8 +2471,8 @@ typedef struct slap_op {
 #define o_dontUseCopy                  o_ctrlflag[slap_cids.sc_dontUseCopy]
 #define get_dontUseCopy(op)            _SCM((op)->o_dontUseCopy)
 
-#define o_managedit                            o_ctrlflag[slap_cids.sc_manageDIT]
-#define get_manageDIT(op)              _SCM((op)->o_managedit)
+#define o_relax                                o_ctrlflag[slap_cids.sc_relax]
+#define get_relax(op)          _SCM((op)->o_relax)
 
 #define o_managedsait  o_ctrlflag[slap_cids.sc_manageDSAit]
 #define get_manageDSAit(op)                            _SCM((op)->o_managedsait)
@@ -2732,7 +2735,7 @@ struct slap_listener {
 /*
  * Operation indices
  */
-enum {
+typedef enum {
        SLAP_OP_BIND = 0,
        SLAP_OP_UNBIND,
        SLAP_OP_ADD,
@@ -2744,7 +2747,7 @@ enum {
        SLAP_OP_ABANDON,
        SLAP_OP_EXTENDED,
        SLAP_OP_LAST
-};
+} slap_op_t;
 
 typedef struct slap_counters_t {
        ldap_pvt_thread_mutex_t sc_sent_mutex;
@@ -2777,7 +2780,7 @@ typedef struct slap_counters_t {
 #define SLAP_CTRL_HIDE                         0x80000000U
 #endif
 
-#define SLAP_CTRL_REQUIRES_ROOT                0x40000000U /* for ManageDIT */
+#define SLAP_CTRL_REQUIRES_ROOT                0x40000000U /* for Relax */
 
 #define SLAP_CTRL_GLOBAL                       0x00800000U
 #define SLAP_CTRL_GLOBAL_SEARCH                0x00010000U     /* for NOOP */