]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldap/back-ldap.h
Merge remote branch 'origin/mdb.master'
[openldap] / servers / slapd / back-ldap / back-ldap.h
index 8b7f464931d464a1f378ca05611a19eadebade1a..6bf87020c2b39320f4cb751bd51d166e2374e839 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.
@@ -61,8 +61,8 @@ enum {
        LDAP_BACK_PCONN_LAST
 };
 
-typedef struct ldapconn_t {
-       Connection              *lc_conn;
+typedef struct ldapconn_base_t {
+       Connection              *lcb_conn;
 #define        LDAP_BACK_CONN2PRIV(lc)         ((unsigned long)(lc)->lc_conn)
 #define LDAP_BACK_PCONN_ISPRIV(lc)     (((void *)(lc)->lc_conn) >= ((void *)LDAP_BACK_PCONN_FIRST) \
                                                && ((void *)(lc)->lc_conn) < ((void *)LDAP_BACK_PCONN_LAST))
@@ -94,10 +94,22 @@ typedef struct ldapconn_t {
        (BER_BVISEMPTY(&(op)->o_ndn) ? \
                LDAP_BACK_PCONN_ANON_SET((lc), (op)) : LDAP_BACK_PCONN_ROOTDN_SET((lc), (op)))
 
-       LDAP                    *lc_ld;
-       struct berval           lc_cred;
-       struct berval           lc_bound_ndn;
-       struct berval           lc_local_ndn;
+       struct berval           lcb_local_ndn;
+       unsigned                lcb_refcnt;
+       time_t                  lcb_create_time;
+       time_t                  lcb_time;
+} ldapconn_base_t;
+
+typedef struct ldapconn_t {
+       ldapconn_base_t         lc_base;
+#define        lc_conn                 lc_base.lcb_conn
+#define        lc_local_ndn            lc_base.lcb_local_ndn
+#define        lc_refcnt               lc_base.lcb_refcnt
+#define        lc_create_time          lc_base.lcb_create_time
+#define        lc_time                 lc_base.lcb_time
+
+       LDAP_TAILQ_ENTRY(ldapconn_t)    lc_q;
+
        unsigned                lc_lcflags;
 #define LDAP_BACK_CONN_ISSET_F(fp,f)   (*(fp) & (f))
 #define        LDAP_BACK_CONN_SET_F(fp,f)      (*(fp) |= (f))
@@ -162,12 +174,10 @@ typedef struct ldapconn_t {
 #define        LDAP_BACK_CONN_CACHED_SET(lc)           LDAP_BACK_CONN_SET((lc), LDAP_BACK_FCONN_CACHED)
 #define        LDAP_BACK_CONN_CACHED_CLEAR(lc)         LDAP_BACK_CONN_CLEAR((lc), LDAP_BACK_FCONN_CACHED)
 
-       unsigned                lc_refcnt;
+       LDAP                    *lc_ld;
+       struct berval           lc_cred;
+       struct berval           lc_bound_ndn;
        unsigned                lc_flags;
-       time_t                  lc_create_time;
-       time_t                  lc_time;
-
-       LDAP_TAILQ_ENTRY(ldapconn_t)    lc_q;
 } ldapconn_t;
 
 typedef struct ldap_avl_info_t {
@@ -224,10 +234,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;
 
 /*
@@ -438,10 +455,12 @@ 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 );
        int (*retry_info_unparse)( slap_retry_info_t *ri, struct berval *bvout );
+       int (*connid2str)( const ldapconn_base_t *lc, char *buf, ber_len_t buflen );
 } ldap_extra_t;
 
 LDAP_END_DECL