]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
Tweaks for OpenSSL 1.1 API deprecations
[openldap] / servers / slapd / slap.h
index 6ba87ca5d357ccbd787b8f0b3e2bd90406449732..e401650a868889ade5d835c73487df28698cba27 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2014 The OpenLDAP Foundation.
+ * Copyright 1998-2017 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -62,6 +62,7 @@ LDAP_BEGIN_DECL
 #define LDAP_COMP_MATCH
 #define LDAP_SYNC_TIMESTAMP
 #define SLAP_CONTROL_X_WHATFAILED
+#define SLAP_CONTROL_X_LAZY_COMMIT
 #define SLAP_CONFIG_DELETE
 #define SLAP_AUXPROP_DONTUSECOPY
 #ifndef SLAP_SCHEMA_EXPOSE
@@ -73,6 +74,10 @@ LDAP_BEGIN_DECL
 #define SLAP_CONTROL_X_SESSION_TRACKING
 #define SLAP_DISTPROC
 
+#ifndef SLAP_STATS_ETIME
+#define SLAP_STATS_ETIME       1 /* microsecond op timing */
+#endif
+
 #ifdef ENABLE_REWRITE
 #define SLAP_AUTH_REWRITE      1 /* use librewrite for sasl-regexp */
 #endif
@@ -974,6 +979,9 @@ struct slap_internal_schema {
        AttributeDescription *si_ad_description;
        AttributeDescription *si_ad_seeAlso;
 
+       /* privateKeys */
+       AttributeDescription *si_ad_x509PrivateKey;
+
        /* Undefined Attribute Type */
        AttributeType   *si_at_undefined;
 
@@ -1162,10 +1170,11 @@ struct Attribute {
 #define SLAP_ATTR_DONT_FREE_DATA       0x4U
 #define SLAP_ATTR_DONT_FREE_VALS       0x8U
 #define        SLAP_ATTR_SORTED_VALS           0x10U   /* values are sorted */
+#define        SLAP_ATTR_BIG_MULTI             0x20U   /* for backends */
 
 /* These flags persist across an attr_dup() */
 #define        SLAP_ATTR_PERSISTENT_FLAGS \
-       SLAP_ATTR_SORTED_VALS
+       (SLAP_ATTR_SORTED_VALS|SLAP_ATTR_BIG_MULTI)
 
        Attribute               *a_next;
 #ifdef LDAP_COMP_MATCH
@@ -2183,6 +2192,13 @@ typedef int (BI_acl_group) LDAP_P(( Operation *op, Entry *target,
 typedef int (BI_acl_attribute) LDAP_P(( Operation *op, Entry *target,
        struct berval *entry_ndn, AttributeDescription *entry_at,
        BerVarray *vals, slap_access_t access ));
+#ifdef LDAP_X_TXN
+struct OpExtra;
+typedef int (BI_op_txn) LDAP_P(( Operation *op, int txnop, struct OpExtra **ptr ));
+#define SLAP_TXN_BEGIN 1
+#define SLAP_TXN_COMMIT        2
+#define SLAP_TXN_ABORT 3
+#endif
 
 typedef int (BI_conn_func) LDAP_P(( BackendDB *bd, Connection *c ));
 typedef BI_conn_func BI_connection_init;
@@ -2201,7 +2217,7 @@ typedef int (BI_tool_sync) LDAP_P(( BackendDB *be ));
 typedef ID (BI_tool_dn2id_get) LDAP_P(( BackendDB *be, struct berval *dn ));
 typedef ID (BI_tool_entry_modify) LDAP_P(( BackendDB *be, Entry *e, 
        struct berval *text ));
-typedef int (BI_tool_entry_delete) LDAP_P(( BackendDB *be, ID id,
+typedef int (BI_tool_entry_delete) LDAP_P(( BackendDB *be, struct berval *ndn,
        struct berval *text ));
 
 struct BackendInfo {
@@ -2279,6 +2295,9 @@ struct BackendInfo {
        BI_operational          *bi_operational;
        BI_chk_referrals        *bi_chk_referrals;
        BI_chk_controls         *bi_chk_controls;
+#ifdef LDAP_X_TXN
+       BI_op_txn                       *bi_op_txn;
+#endif
        BI_entry_get_rw         *bi_entry_get_rw;
        BI_entry_release_rw     *bi_entry_release_rw;
 
@@ -2374,11 +2393,15 @@ struct BackendInfo {
 
 typedef int (slap_response)( Operation *, SlapReply * );
 
+struct slap_callback;
+typedef void (slap_writewait)( Operation *, struct slap_callback * );
+
 typedef struct slap_callback {
        struct slap_callback *sc_next;
        slap_response *sc_response;
        slap_response *sc_cleanup;
        void *sc_private;
+       slap_writewait *sc_writewait;
 } slap_callback;
 
 struct slap_overinfo;
@@ -2398,6 +2421,9 @@ typedef enum slap_operation_e {
        op_aux_operational,
        op_aux_chk_referrals,
        op_aux_chk_controls,
+#ifdef LDAP_X_TXN
+       op_txn,
+#endif
        op_last
 } slap_operation_t;
 
@@ -2487,6 +2513,9 @@ struct slap_control_ids {
 #ifdef SLAP_CONTROL_X_WHATFAILED
        int sc_whatFailed;
 #endif
+#ifdef LDAP_CONTROL_X_LAZY_COMMIT
+       int sc_lazyCommit;
+#endif
 };
 
 /*
@@ -2599,6 +2628,8 @@ struct Operation {
        ber_tag_t       o_tag;          /* tag of the request */
        time_t          o_time;         /* time op was initiated */
        int                     o_tincr;        /* counter for multiple ops with same o_time */
+       int                     o_tusec;        /* microsecond timestamp */
+       struct timeval o_qtime; /* time spent in queues before execution */
 
        BackendDB       *o_bd;  /* backend DB processing this op */
        struct berval   o_req_dn;       /* DN of target of request */
@@ -2762,6 +2793,11 @@ struct Operation {
 #define get_whatFailed(op)                             _SCM((op)->o_whatFailed)
 #endif
 
+#ifdef SLAP_CONTROL_X_LAZY_COMMIT
+#define o_lazyCommit o_ctrlflag[slap_cids.sc_lazyCommit]
+#define get_lazyCommit(op)                             _SCM((op)->o_lazyCommit)
+#endif
+
 #define o_sync                 o_ctrlflag[slap_cids.sc_LDAPsync]
 
        AuthorizationInformation o_authz;
@@ -2964,6 +3000,10 @@ struct Connection {
 
 #define Statslog( level, fmt, connid, opid, arg1, arg2, arg3 ) \
        Log5( (level), ldap_syslog_level, (fmt), (connid), (opid), (arg1), (arg2), (arg3) )
+#define Statslog6( level, fmt, a1, a2, a3, a4, a5, a6 )                                \
+       Log6( (level), ldap_syslog_level, (fmt), (a1), (a2), (a3), (a4), (a5), (a6) )
+#define Statslog7( level, fmt, a1, a2, a3, a4, a5, a6, a7 )                            \
+       Log7( (level), ldap_syslog_level, (fmt), (a1), (a2), (a3), (a4), (a5), (a6), (a7) )
 #define StatslogTest( level ) ((ldap_debug | ldap_syslog) & (level))
 #else /* !LDAP_SYSLOG */
 #define Statslog( level, fmt, connid, opid, arg1, arg2, arg3 ) \
@@ -2971,10 +3011,22 @@ struct Connection {
                if ( ldap_debug & (level) ) \
                        lutil_debug( ldap_debug, (level), (fmt), (connid), (opid), (arg1), (arg2), (arg3) );\
        } while (0)
+#define Statslog6( level, fmt, a1, a2, a3, a4, a5, a6 )                                \
+       do { \
+               if ( ldap_debug & (level) ) \
+                       lutil_debug( ldap_debug, (level), (fmt), (a1), (a2), (a3), (a4), (a5), (a6) ); \
+       } while (0)
+#define Statslog7( level, fmt, a1, a2, a3, a4, a5, a6, a7 )                            \
+       do { \
+               if ( ldap_debug & (level) ) \
+                       lutil_debug( ldap_debug, (level), (fmt), (a1), (a2), (a3), (a4), (a5), (a6), (a7) ); \
+       } while (0)
 #define StatslogTest( level ) (ldap_debug & (level))
 #endif /* !LDAP_SYSLOG */
 #else /* !LDAP_DEBUG */
 #define Statslog( level, fmt, connid, opid, arg1, arg2, arg3 ) ((void) 0)
+#define Statslog6( level, fmt, a1, a2, a3, a4, a5, a6 ) ((void) 0)
+#define Statslog7( level, fmt, a1, a2, a3, a4, a5, a6, a7 ) ((void) 0)
 #define StatslogTest( level ) (0)
 #endif /* !LDAP_DEBUG */