]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldap/back-ldap.h
Merge remote-tracking branch 'origin/mdb.master'
[openldap] / servers / slapd / back-ldap / back-ldap.h
index e5d43d107e776cd2b7f0d98d8b27ccbd8c501c25..78c11c3179894c2c468840986574a604d57d7161 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2009 The OpenLDAP Foundation.
+ * Copyright 1999-2012 The OpenLDAP Foundation.
  * Portions Copyright 2000-2003 Pierangelo Masarati.
  * Portions Copyright 1999-2003 Howard Chu.
  * All rights reserved.
@@ -32,16 +32,11 @@ struct ldapinfo_t;
 
 /* stuff required for monitoring */
 typedef struct ldap_monitor_info_t {
-       monitor_subsys_t        lmi_mss;
-       struct ldapinfo_t       *lmi_li;
-
-       struct berval           lmi_rdn;
-       struct berval           lmi_nrdn;
-       monitor_callback_t      *lmi_cb;
-       struct berval           lmi_base;
-       int                     lmi_scope;
-       struct berval           lmi_filter;
-       struct berval           lmi_more_filter;
+       monitor_subsys_t        lmi_mss[2];
+
+       struct berval           lmi_ndn;
+       struct berval           lmi_conn_rdn;
+       struct berval           lmi_ops_rdn;
 } ldap_monitor_info_t;
 
 enum {
@@ -175,6 +170,7 @@ typedef struct ldapconn_t {
 #define        LDAP_BACK_CONN_CACHED_CLEAR(lc)         LDAP_BACK_CONN_CLEAR((lc), LDAP_BACK_FCONN_CACHED)
 
        LDAP                    *lc_ld;
+       unsigned long           lc_connid;
        struct berval           lc_cred;
        struct berval           lc_bound_ndn;
        unsigned                lc_flags;
@@ -234,10 +230,17 @@ typedef struct slap_idassert_t {
 #define        LDAP_BACK_AUTH_OBSOLETE_PROXY_AUTHZ             (0x08U)
 #define        LDAP_BACK_AUTH_OBSOLETE_ENCODING_WORKAROUND     (0x10U)
 #define        LDAP_BACK_AUTH_AUTHZ_ALL                        (0x20U)
+#define        LDAP_BACK_AUTH_PROXYAUTHZ_CRITICAL              (0x40U)
+#define LDAP_BACK_AUTH_DN_AUTHZID                      (0x100U)
+#define LDAP_BACK_AUTH_DN_WHOAMI                       (0x200U)
+#define LDAP_BACK_AUTH_DN_MASK                         (LDAP_BACK_AUTH_DN_AUTHZID|LDAP_BACK_AUTH_DN_WHOAMI)
 #define        li_idassert_flags       li_idassert.si_flags
 
        BerVarray       si_authz;
 #define        li_idassert_authz       li_idassert.si_authz
+
+       BerVarray       si_passthru;
+#define        li_idassert_passthru    li_idassert.si_passthru
 } slap_idassert_t;
 
 /*
@@ -372,6 +375,8 @@ typedef struct ldapinfo_t {
 
        int                     li_version;
 
+       unsigned long           li_conn_nextid;
+
        /* cached connections; 
         * special conns are in tailq rather than in tree */
        ldap_avl_info_t         li_conninfo;
@@ -402,6 +407,9 @@ typedef struct ldapinfo_t {
        time_t                  li_conn_ttl;
        time_t                  li_idle_timeout;
        time_t                  li_timeout[ SLAP_OP_LAST ];
+
+       ldap_pvt_thread_mutex_t li_counter_mutex;
+       ldap_pvt_mp_t           li_ops_completed[SLAP_OP_LAST];
 } ldapinfo_t;
 
 #define        LDAP_ERR_OK(err) ((err) == LDAP_SUCCESS || (err) == LDAP_COMPARE_FALSE || (err) == LDAP_COMPARE_TRUE)
@@ -448,6 +456,7 @@ typedef struct ldap_extra_t {
                int version, slap_idassert_t *si, LDAPControl   *ctrl );
        int (*controls_free)( Operation *op, SlapReply *rs, LDAPControl ***pctrls );
        int (*idassert_authzfrom_parse_cf)( const char *fname, int lineno, const char *arg, slap_idassert_t *si );
+       int (*idassert_passthru_parse_cf)( const char *fname, int lineno, const char *arg, slap_idassert_t *si );
        int (*idassert_parse_cf)( const char *fname, int lineno, int argc, char *argv[], slap_idassert_t *si );
        void (*retry_info_destroy)( slap_retry_info_t *ri );
        int (*retry_info_parse)( char *in, slap_retry_info_t *ri, char *buf, ber_len_t buflen );