]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
Experimental code that uses one locker ID per thread. Seems to work OK,
[openldap] / servers / slapd / slap.h
index ca7967cba1472e9c527959e07da42ff7e24d3d0e..96f7747cdc61507b7078e96ddab5161b98aae9c7 100644 (file)
@@ -307,6 +307,18 @@ typedef struct slap_syntax {
 #define slap_syntax_is_ber(s)          slap_syntax_is_flag((s),SLAP_SYNTAX_BER)
 #define slap_syntax_is_hidden(s)       slap_syntax_is_flag((s),SLAP_SYNTAX_HIDE)
 
+typedef struct slap_syntax_defs_rec {
+       char *sd_desc;
+       int sd_flags;
+       slap_syntax_validate_func *sd_validate;
+       slap_syntax_transform_func *sd_normalize;
+       slap_syntax_transform_func *sd_pretty;
+#ifdef SLAPD_BINARY_CONVERSION
+       slap_syntax_transform_func *sd_ber2str;
+       slap_syntax_transform_func *sd_str2ber;
+#endif
+} slap_syntax_defs_rec;
+
 /* X -> Y Converter */
 typedef int slap_mr_convert_func LDAP_P((
        struct berval * in,
@@ -414,6 +426,18 @@ typedef struct slap_matching_rule {
 #define smr_extensions         smr_mrule.mr_extensions
 } MatchingRule;
 
+typedef struct slap_mrule_defs_rec {
+       char *                                          mrd_desc;
+       slap_mask_t                                     mrd_usage;
+       slap_mr_convert_func *          mrd_convert;
+       slap_mr_normalize_func *        mrd_normalize;
+       slap_mr_match_func *            mrd_match;
+       slap_mr_indexer_func *          mrd_indexer;
+       slap_mr_filter_func *           mrd_filter;
+
+       char *                                          mrd_associated;
+} slap_mrule_defs_rec;
+
 struct slap_backend_db;
 struct slap_entry;
 struct slap_attr;
@@ -598,6 +622,7 @@ struct slap_internal_schema {
        AttributeDescription *si_ad_supportedLDAPVersion;
        AttributeDescription *si_ad_supportedSASLMechanisms;
        AttributeDescription *si_ad_supportedFeatures;
+       AttributeDescription *si_ad_monitorContext;
        AttributeDescription *si_ad_vendorName;
        AttributeDescription *si_ad_vendorVersion;
 
@@ -1196,6 +1221,10 @@ struct slap_backend_db {
        BerVarray       be_suffix;      /* the DN suffixes of data in this backend */
        BerVarray       be_nsuffix;     /* the normalized DN suffixes in this backend */
        BerVarray       be_suffixAlias; /* pairs of DN suffix aliases and deref values */
+#ifdef SLAPD_SCHEMA_DN
+       struct berval be_schemadn;      /* per-backend subschema subentry DN */
+       struct berval be_schemandn;     /* normalized subschema DN */
+#endif
        struct berval be_rootdn;        /* the magic "root" name (DN) for this db */
        struct berval be_rootndn;       /* the magic "root" normalized name (DN) for this db */
        struct berval be_rootpw;        /* the magic "root" password for this db        */
@@ -1489,6 +1518,8 @@ typedef struct slap_op {
 
        volatile sig_atomic_t o_abandon;        /* abandon flag */
 
+       char o_do_not_cache;    /* don't cache from this op */
+
 #define SLAP_NO_CONTROL 0
 #define SLAP_NONCRITICAL_CONTROL 1
 #define SLAP_CRITICAL_CONTROL 2
@@ -1511,6 +1542,7 @@ typedef struct slap_op {
        slap_callback   *o_callback;    /* callback pointers */
        LDAPControl     **o_ctrls;       /* controls */
 
+       void    *o_threadctx;           /* thread pool thread context */
        void    *o_private;     /* anything the backend needs */
 
        LDAP_STAILQ_ENTRY(slap_op)      o_next; /* next operation in list         */
@@ -1586,6 +1618,8 @@ typedef struct slap_conn {
        int             c_sasl_layers;   /* true if we need to install SASL i/o handlers */
        void    *c_sasl_context;        /* SASL session context */
        void    *c_sasl_extra;          /* SASL session extra stuff */
+       struct slap_op  *c_sasl_bindop; /* set to current op if it's a bind */
+       ldap_pvt_thread_mutex_t c_sasl_bindmutex;       /* lock for bindop */
 
        PagedResultsState c_pagedresults_state; /* paged result state */