]> git.sur5r.net Git - openldap/blobdiff - include/ldap.h
ITS#6831 don't push stack unless needed
[openldap] / include / ldap.h
index 7021146c2a16f4f1a9129960dc0ef696f60c3d2d..9d7ae014ca8d1d97c5a58db774e7e2682a8d1666 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  * 
- * Copyright 1998-2010 The OpenLDAP Foundation.
+ * Copyright 1998-2011 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -59,7 +59,9 @@ LDAP_BEGIN_DECL
                defined( LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE ) )
        /* -lldap may or may not be thread safe */
        /* -lldap_r, if available, is always thread safe */
-#      define  LDAP_API_FEATURE_THREAD_SAFE 1
+#      define  LDAP_API_FEATURE_THREAD_SAFE            1
+#      define  LDAP_API_FEATURE_SESSION_THREAD_SAFE    1
+#      define  LDAP_API_FEATURE_OPERATION_THREAD_SAFE  1
 #endif
 #if defined( LDAP_THREAD_SAFE ) && \
        defined( LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE )
@@ -135,6 +137,7 @@ LDAP_BEGIN_DECL
 #define LDAP_OPT_DEFBASE               0x5009  /* searchbase */
 #define        LDAP_OPT_CONNECT_ASYNC          0x5010  /* create connections asynchronously */
 #define        LDAP_OPT_CONNECT_CB                     0x5011  /* connection callbacks */
+#define        LDAP_OPT_SESSION_REFCNT         0x5012  /* session reference count */
 
 /* OpenLDAP TLS options */
 #define LDAP_OPT_X_TLS                         0x6000
@@ -187,6 +190,7 @@ LDAP_BEGIN_DECL
 #define LDAP_OPT_X_SASL_MECHLIST               0x610a /* read-only */
 #define LDAP_OPT_X_SASL_NOCANON                        0x610b
 #define LDAP_OPT_X_SASL_USERNAME               0x610c /* read-only */
+#define LDAP_OPT_X_SASL_GSS_CREDS              0x610d
 
 /* OpenLDAP GSSAPI options */
 #define LDAP_OPT_X_GSSAPI_DO_NOT_FREE_CONTEXT      0x6200
@@ -260,6 +264,9 @@ typedef struct ldapcontrol {
 /*     non-standard track controls */
 #define LDAP_CONTROL_PAGEDRESULTS      "1.2.840.113556.1.4.319"   /* RFC 2696 */
 
+#define LDAP_CONTROL_AUTHZID_REQUEST   "2.16.840.1.113730.4.16"   /* RFC 3829 */
+#define LDAP_CONTROL_AUTHZID_RESPONSE   "2.16.840.1.113730.4.15"   /* RFC 3829 */
+
 /* LDAP Content Synchronization Operation -- RFC 4533 */
 #define LDAP_SYNC_OID                  "1.3.6.1.4.1.4203.1.9.1"
 #define LDAP_CONTROL_SYNC              LDAP_SYNC_OID ".1"
@@ -291,6 +298,8 @@ typedef struct ldapcontrol {
 #define LDAP_SYNC_DELETE                               3
 #define LDAP_SYNC_NEW_COOKIE                   4
 
+/* LDAP Don't Use Copy Control (RFC 6171) */
+#define LDAP_CONTROL_DONTUSECOPY               "1.3.6.1.1.22"
 
 /* Password policy Controls *//* work in progress */
 /* ITS#3458: released; disabled by default */
@@ -304,7 +313,6 @@ typedef struct ldapcontrol {
 #define LDAP_CONTROL_MANAGEDIT                 LDAP_CONTROL_RELAX
 #define LDAP_CONTROL_SLURP                             "1.3.6.1.4.1.4203.666.5.13"
 #define LDAP_CONTROL_VALSORT                   "1.3.6.1.4.1.4203.666.5.14"
-#define LDAP_CONTROL_DONTUSECOPY               "1.3.6.1.4.1.4203.666.5.15"
 #define        LDAP_CONTROL_X_DEREF                    "1.3.6.1.4.1.4203.666.5.16"
 #define        LDAP_CONTROL_X_WHATFAILED               "1.3.6.1.4.1.4203.666.5.17"
 
@@ -381,6 +389,13 @@ typedef struct ldapcontrol {
 #define        LDAP_TAG_EXOP_REFRESH_REQ_TTL   ((ber_tag_t) 0x81U)
 #define        LDAP_TAG_EXOP_REFRESH_RES_TTL   ((ber_tag_t) 0x80U)
 
+#define LDAP_EXOP_VERIFY_CREDENTIALS   "1.3.6.1.4.1.4203.666.6.5"
+#define LDAP_EXOP_X_VERIFY_CREDENTIALS LDAP_EXOP_VERIFY_CREDENTIALS
+
+#define LDAP_TAG_EXOP_VERIFY_CREDENTIALS_COOKIE         ((ber_tag_t) 0x80U)
+#define LDAP_TAG_EXOP_VERIFY_CREDENTIALS_SCREDS         ((ber_tag_t) 0x81U)
+#define LDAP_TAG_EXOP_VERIFY_CREDENTIALS_CONTROLS ((ber_tag_t) 0xa2U) /* context specific + constructed + 2 */
+
 #define LDAP_EXOP_WHO_AM_I             "1.3.6.1.4.1.4203.1.11.3"               /* RFC 4532 */
 #define LDAP_EXOP_X_WHO_AM_I   LDAP_EXOP_WHO_AM_I
 
@@ -1185,6 +1200,26 @@ ldap_sasl_bind LDAP_P((
 typedef int (LDAP_SASL_INTERACT_PROC) LDAP_P((
        LDAP *ld, unsigned flags, void* defaults, void *interact ));
 
+LDAP_F( int )
+ldap_sasl_interactive_bind LDAP_P((
+       LDAP *ld,
+       LDAP_CONST char *dn, /* usually NULL */
+       LDAP_CONST char *saslMechanism,
+       LDAPControl **serverControls,
+       LDAPControl **clientControls,
+
+       /* should be client controls */
+       unsigned flags,
+       LDAP_SASL_INTERACT_PROC *proc,
+       void *defaults,
+       
+       /* as obtained from ldap_result() */
+       LDAPMessage *result,
+
+       /* returned during bind processing */
+       const char **rmech,
+       int *msgid ));
+
 LDAP_F( int )
 ldap_sasl_interactive_bind_s LDAP_P((
        LDAP *ld,
@@ -1331,7 +1366,7 @@ ldap_parse_result LDAP_P((
        LDAPMessage             *res,
        int                             *errcodep,
        char                    **matcheddnp,
-       char                    **errmsgp,
+       char                    **diagmsgp,
        char                    ***referralsp,
        LDAPControl             ***serverctrls,
        int                             freeit ));
@@ -1498,6 +1533,10 @@ ldap_initialize LDAP_P((
        LDAP **ldp,
        LDAP_CONST char *url ));
 
+LDAP_F( LDAP * )
+ldap_dup LDAP_P((
+       LDAP *old ));
+
 /*
  * in tls.c
  */
@@ -1910,6 +1949,10 @@ ldap_unbind_ext_s LDAP_P((
        LDAPControl             **serverctrls,
        LDAPControl             **clientctrls));
 
+LDAP_F( int )
+ldap_destroy LDAP_P((
+       LDAP                    *ld));
+
 #if LDAP_DEPRECATED
 LDAP_F( int )
 ldap_unbind LDAP_P(( /* deprecated, use ldap_unbind_ext */
@@ -2182,6 +2225,76 @@ ldap_parse_vlvresponse_control LDAP_P((
        struct berval **contextp,
        int           *errcodep ));
 
+/*
+ * LDAP Verify Credentials
+ */
+#define LDAP_API_FEATURE_VERIFY_CREDENTIALS 1000
+
+LDAP_F( int )
+ldap_verify_credentials LDAP_P((
+       LDAP            *ld,
+       struct berval   *cookie,
+       LDAP_CONST char *dn,
+       LDAP_CONST char *mechanism,
+       struct berval   *cred,
+       LDAPControl     **ctrls,
+       LDAPControl     **serverctrls,
+       LDAPControl     **clientctrls,
+       int             *msgidp ));
+
+LDAP_F( int )
+ldap_verify_credentials_s LDAP_P((
+       LDAP            *ld,
+       struct berval   *cookie,
+       LDAP_CONST char *dn,
+       LDAP_CONST char *mechanism,
+       struct berval   *cred,
+       LDAPControl     **vcictrls,
+       LDAPControl     **serverctrls,
+       LDAPControl     **clientctrls,
+       int                             *code,
+       char                    **diagmsgp,
+       struct berval   **scookie,
+       struct berval   **servercredp,
+       LDAPControl     ***vcoctrls));
+       
+
+LDAP_F( int )
+ldap_parse_verify_credentials LDAP_P((
+       LDAP            *ld,
+       LDAPMessage     *res,
+       int                     *code,
+       char                    **diagmsgp,
+       struct berval   **cookie,
+       struct berval   **servercredp,
+       LDAPControl     ***vcctrls));
+
+/* not yet implemented */
+/* #define LDAP_API_FEATURE_VERIFY_CREDENTIALS_INTERACTIVE 1000 */
+#ifdef LDAP_API_FEATURE_VERIFY_CREDENTIALS_INTERACTIVE
+LDAP_F( int )
+ldap_verify_credentials_interactive LDAP_P((
+       LDAP *ld,
+       LDAP_CONST char *dn, /* usually NULL */
+       LDAP_CONST char *saslMechanism,
+       LDAPControl **vcControls,
+       LDAPControl **serverControls,
+       LDAPControl **clientControls,
+
+       /* should be client controls */
+       unsigned flags,
+       LDAP_SASL_INTERACT_PROC *proc,
+       void *defaults,
+       void *context,
+       
+       /* as obtained from ldap_result() */
+       LDAPMessage *result,
+
+       /* returned during bind processing */
+       const char **rmech,
+       int *msgid ));
+#endif
+
 /*
  * LDAP Who Am I?
  *     in whoami.c