]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
ITS#8215 Remove a memory leak
[openldap] / servers / slapd / slap.h
index 09c1854f88ab535d30c35f4942f114d3aed249ec..b7dc833da086f5f57a80da85b49f0b3ba10854c5 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2013 The OpenLDAP Foundation.
+ * Copyright 1998-2015 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 
 LDAP_BEGIN_DECL
 
-#ifdef LDAP_DEVEL
 #define LDAP_COLLECTIVE_ATTRIBUTES
 #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
 #define SLAP_SCHEMA_EXPOSE
 #endif
-#endif
 
 #define LDAP_DYNAMIC_OBJECTS
 #define SLAP_CONTROL_X_TREE_DELETE LDAP_CONTROL_X_TREE_DELETE
@@ -1825,6 +1824,7 @@ struct BackendDB {
 #define                be_sync bd_info->bi_tool_sync
 #define                be_dn2id_get bd_info->bi_tool_dn2id_get
 #define                be_entry_modify bd_info->bi_tool_entry_modify
+#define                be_entry_delete bd_info->bi_tool_entry_delete
 #endif
 
        /* supported controls */
@@ -2184,6 +2184,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;
@@ -2202,6 +2209,8 @@ 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,
+       struct berval *text ));
 
 struct BackendInfo {
        char    *bi_type; /* type of backend */
@@ -2278,6 +2287,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;
 
@@ -2301,6 +2313,7 @@ struct BackendInfo {
        BI_tool_sync            *bi_tool_sync;
        BI_tool_dn2id_get       *bi_tool_dn2id_get;
        BI_tool_entry_modify    *bi_tool_entry_modify;
+       BI_tool_entry_delete    *bi_tool_entry_delete;
 
 #define SLAP_INDEX_ADD_OP              0x0001
 #define SLAP_INDEX_DELETE_OP   0x0002
@@ -2372,10 +2385,14 @@ 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;
+       slap_writewait *sc_writewait;
        void *sc_private;
 } slap_callback;
 
@@ -2396,6 +2413,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;
 
@@ -2485,6 +2505,9 @@ struct slap_control_ids {
 #ifdef SLAP_CONTROL_X_WHATFAILED
        int sc_whatFailed;
 #endif
+#ifdef LDAP_CONTROL_X_LAZY_COMMIT
+       int sc_lazyCommit;
+#endif
 };
 
 /*
@@ -2760,6 +2783,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;
@@ -2910,6 +2938,7 @@ struct Connection {
        void    *c_sasl_authctx;        /* SASL authentication context */
        void    *c_sasl_sockctx;        /* SASL security layer context */
        void    *c_sasl_extra;          /* SASL session extra stuff */
+       void    *c_sasl_cbind;          /* SASL channel binding */
        Operation       *c_sasl_bindop; /* set to current op if it's a bind */
 
 #ifdef LDAP_X_TXN
@@ -2993,9 +3022,7 @@ struct Listener {
        ber_socket_t sl_sd;
        Sockaddr sl_sa;
 #define sl_addr        sl_sa.sa_in_addr
-#ifdef LDAP_DEVEL
 #define LDAP_TCP_BUFFER
-#endif
 #ifdef LDAP_TCP_BUFFER
        int     sl_tcp_rmem;    /* custom TCP read buffer size */
        int     sl_tcp_wmem;    /* custom TCP write buffer size */