X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=include%2Fldap.h;h=a8135cb99a465899e73aab10fefc1df8dfb9ce5b;hb=33326eb116098e898917d810b3c1f278a81665b3;hp=dcc4b2ac71103e200d041aa763250627d7e0bcce;hpb=93c9cbf3b86d8103b6a54a04950beb004da009d3;p=openldap diff --git a/include/ldap.h b/include/ldap.h index dcc4b2ac71..a8135cb99a 100644 --- a/include/ldap.h +++ b/include/ldap.h @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2003 The OpenLDAP Foundation. + * Copyright 1998-2008 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -76,6 +76,9 @@ LDAP_BEGIN_DECL #define LDAP_ALL_USER_ATTRIBUTES "*" #define LDAP_ALL_OPERATIONAL_ATTRIBUTES "+" /* RFC 3673 */ +/* RFC 2251: maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -- */ +#define LDAP_MAXINT (2147483647) + /* * LDAP_OPTions * 0x0000 - 0x0fff reserved for api options @@ -116,6 +119,7 @@ LDAP_BEGIN_DECL #define LDAP_OPT_NETWORK_TIMEOUT 0x5005 /* socket level timeout */ #define LDAP_OPT_URI 0x5006 #define LDAP_OPT_REFERRAL_URLS 0x5007 /* Referral URLs */ +#define LDAP_OPT_SOCKBUF 0x5008 /* sockbuf */ /* OpenLDAP TLS options */ #define LDAP_OPT_X_TLS 0x6000 @@ -129,6 +133,10 @@ LDAP_BEGIN_DECL #define LDAP_OPT_X_TLS_CIPHER_SUITE 0x6008 #define LDAP_OPT_X_TLS_RANDOM_FILE 0x6009 #define LDAP_OPT_X_TLS_SSL_CTX 0x600a +#define LDAP_OPT_X_TLS_CRLCHECK 0x600b +#define LDAP_OPT_X_TLS_CONNECT_CB 0x600c +#define LDAP_OPT_X_TLS_CONNECT_ARG 0x600d +#define LDAP_OPT_X_TLS_DHFILE 0x600e #define LDAP_OPT_X_TLS_NEVER 0 #define LDAP_OPT_X_TLS_HARD 1 @@ -136,6 +144,10 @@ LDAP_BEGIN_DECL #define LDAP_OPT_X_TLS_ALLOW 3 #define LDAP_OPT_X_TLS_TRY 4 +#define LDAP_OPT_X_TLS_CRL_NONE 0 +#define LDAP_OPT_X_TLS_CRL_PEER 1 +#define LDAP_OPT_X_TLS_CRL_ALL 2 + /* OpenLDAP SASL options */ #define LDAP_OPT_X_SASL_MECH 0x6100 #define LDAP_OPT_X_SASL_REALM 0x6101 @@ -192,21 +204,42 @@ typedef struct ldapcontrol { /* LDAP Controls */ /* standard track controls */ -#define LDAP_CONTROL_MANAGEDSAIT "2.16.840.1.113730.3.4.2" /* RFC 3296 */ -#define LDAP_CONTROL_SUBENTRIES "1.3.6.1.4.1.4203.1.10.1" /* RFC 3672 */ -#define LDAP_CONTROL_PAGEDRESULTS "1.2.840.113556.1.4.319" /* RFC 2696 */ - -#define LDAP_CONTROL_ASSERT "1.3.6.1.4.1.4203.666.5.9" -#define LDAP_CONTROL_NOOP "1.3.6.1.4.1.4203.1.10.2" -#define LDAP_CONTROL_PRE_READ "1.3.6.1.4.1.4203.666.5.10.1" -#define LDAP_CONTROL_POST_READ "1.3.6.1.4.1.4203.666.5.10.2" -#define LDAP_CONTROL_PROXY_AUTHZ "2.16.840.1.113730.3.4.18" -#define LDAP_CONTROL_VALUESRETURNFILTER "1.2.826.0.1.334810.2.3" - -#define LDAP_CONTROL_SYNC "1.3.6.1.4.1.4203.666.5.6" -#define LDAP_CONTROL_SYNC_STATE "1.3.6.1.4.1.4203.666.5.7" -#define LDAP_CONTROL_SYNC_DONE "1.3.6.1.4.1.4203.666.5.8" -#define LDAP_SYNC_INFO "1.3.6.1.4.1.4203.666.10.2" +#define LDAP_CONTROL_MANAGEDSAIT "2.16.840.1.113730.3.4.2" /* RFC 3296 */ +#define LDAP_CONTROL_PROXY_AUTHZ "2.16.840.1.113730.3.4.18" /* RFC 4370 */ +#define LDAP_CONTROL_SUBENTRIES "1.3.6.1.4.1.4203.1.10.1" /* RFC 3672 */ + +#define LDAP_CONTROL_VALUESRETURNFILTER "1.2.826.0.1.3344810.2.3"/* RFC 3876 */ +#define LDAP_CONTROL_X_VALUESRETURNFILTER "1.2.826.0.1.334810.2.3"/* bad OID */ + +#define LDAP_CONTROL_ASSERT "1.3.6.1.1.12" /* RFC TBD */ +#define LDAP_CONTROL_PRE_READ "1.3.6.1.1.13.1" /* RFC TBD */ +#define LDAP_CONTROL_POST_READ "1.3.6.1.1.13.2" /* RFC TBD */ + +/* standard track - not implemented in slapd(8) */ +#define LDAP_CONTROL_SORTREQUEST "1.2.840.113556.1.4.473" /* RFC 2891 */ +#define LDAP_CONTROL_SORTRESPONSE "1.2.840.113556.1.4.474" /* RFC 2891 */ + +/* non-standard track controls */ +#define LDAP_CONTROL_PAGEDRESULTS "1.2.840.113556.1.4.319" /* RFC 2696 */ + +/* Password policy Controls *//* work in progress */ +/* ITS#3458: released; disabled by default */ +#define LDAP_CONTROL_PASSWORDPOLICYREQUEST "1.3.6.1.4.1.42.2.27.8.5.1" +#define LDAP_CONTROL_PASSWORDPOLICYRESPONSE "1.3.6.1.4.1.42.2.27.8.5.1" + +/* various works in progress */ +#define LDAP_CONTROL_NOOP "1.3.6.1.4.1.4203.666.5.2" +#define LDAP_CONTROL_NO_SUBORDINATES "1.3.6.1.4.1.4203.666.5.11" +#define LDAP_CONTROL_MANAGEDIT "1.3.6.1.4.1.4203.666.5.12" +#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" + +/* LDAP Sync -- draft-zeilenga-ldup-sync *//* submitted for publication */ +#define LDAP_SYNC_OID "1.3.6.1.4.1.4203.1.9.1" +#define LDAP_CONTROL_SYNC LDAP_SYNC_OID ".1" +#define LDAP_CONTROL_SYNC_STATE LDAP_SYNC_OID ".2" +#define LDAP_CONTROL_SYNC_DONE LDAP_SYNC_OID ".3" +#define LDAP_SYNC_INFO LDAP_SYNC_OID ".4" #define LDAP_SYNC_NONE 0x00 #define LDAP_SYNC_REFRESH_ONLY 0x01 @@ -231,25 +264,50 @@ typedef struct ldapcontrol { #define LDAP_SYNC_MODIFY 2 #define LDAP_SYNC_DELETE 3 -#if 0 -#define LDAP_CONTROL_DUPENT_REQUEST "2.16.840.1.113719.1.27.101.1" -#define LDAP_CONTROL_DUPENT_RESPONSE "2.16.840.1.113719.1.27.101.2" -#define LDAP_CONTROL_DUPENT_ENTRY "2.16.840.1.113719.1.27.101.3" -#define LDAP_CONTROL_DUPENT LDAP_CONTROL_DUPENT_REQUEST +/* LDAP Chaining Behavior Control *//* work in progress */ +/* ; + * see also LDAP_NO_REFERRALS_FOUND, LDAP_CANNOT_CHAIN */ +#ifdef LDAP_DEVEL +#define LDAP_CONTROL_X_CHAINING_BEHAVIOR "1.3.6.1.4.1.4203.666.11.3" + +#define LDAP_CHAINING_PREFERRED 0 +#define LDAP_CHAINING_REQUIRED 1 +#define LDAP_REFERRALS_PREFERRED 2 +#define LDAP_REFERRALS_REQUIRED 3 #endif -/* controls for MSAD compatibility */ +/* MS Active Directory controls (for compatibility) */ +#define LDAP_CONTROL_X_INCREMENTAL_VALUES "1.2.840.113556.1.4.802" #define LDAP_CONTROL_X_DOMAIN_SCOPE "1.2.840.113556.1.4.1339" #define LDAP_CONTROL_X_PERMISSIVE_MODIFY "1.2.840.113556.1.4.1413" +#define LDAP_CONTROL_X_SEARCH_OPTIONS "1.2.840.113556.1.4.1340" +#define LDAP_SEARCH_FLAG_DOMAIN_SCOPE 1 /* do not generate referrals */ +#define LDAP_SEARCH_FLAG_PHANTOM_ROOT 2 /* search all subordinate NCs */ -/* not implemented in slapd(8) */ -#define LDAP_CONTROL_SORTREQUEST "1.2.840.113556.1.4.473" /* RFC 2891 */ -#define LDAP_CONTROL_SORTRESPONSE "1.2.840.113556.1.4.474" /* RFC 2891 */ +/* MS Active Directory controls - not implemented in slapd(8) */ +#define LDAP_CONTROL_X_TREE_DELETE "1.2.840.113556.1.4.805" +#define LDAP_CONTROL_X_EXTENDED_DN "1.2.840.113556.1.4.529" + +/* various expired works */ +/* LDAP Duplicated Entry Control Extension *//* not implemented in slapd(8) */ +#define LDAP_CONTROL_DUPENT_REQUEST "2.16.840.1.113719.1.27.101.1" +#define LDAP_CONTROL_DUPENT_RESPONSE "2.16.840.1.113719.1.27.101.2" +#define LDAP_CONTROL_DUPENT_ENTRY "2.16.840.1.113719.1.27.101.3" +#define LDAP_CONTROL_DUPENT LDAP_CONTROL_DUPENT_REQUEST -/* not implemented in slapd(8) */ +/* LDAP Persistent Search Control *//* not implemented in slapd(8) */ +#define LDAP_CONTROL_PERSIST_REQUEST "2.16.840.1.113730.3.4.3" +#define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_NOTICE "2.16.840.1.113730.3.4.7" +#define LDAP_CONTROL_PERSSIT_ENTRY_CHANGE_ADD 0x1 +#define LDAP_CONTROL_PERSSIT_ENTRY_CHANGE_DELETE 0x2 +#define LDAP_CONTROL_PERSSIT_ENTRY_CHANGE_MODIFY 0x4 +#define LDAP_CONTROL_PERSSIT_ENTRY_CHANGE_RENAME 0x8 + +/* LDAP VLV *//* not implemented in slapd(8) */ #define LDAP_CONTROL_VLVREQUEST "2.16.840.1.113730.3.4.9" #define LDAP_CONTROL_VLVRESPONSE "2.16.840.1.113730.3.4.10" + /* LDAP Unsolicited Notifications */ #define LDAP_NOTICE_OF_DISCONNECTION "1.3.6.1.4.1.1466.20036" /* RFC 2251 */ #define LDAP_NOTICE_DISCONNECT LDAP_NOTICE_OF_DISCONNECTION @@ -263,8 +321,30 @@ typedef struct ldapcontrol { #define LDAP_TAG_EXOP_MODIFY_PASSWD_NEW ((ber_tag_t) 0x82U) #define LDAP_TAG_EXOP_MODIFY_PASSWD_GEN ((ber_tag_t) 0x80U) -#define LDAP_EXOP_X_WHO_AM_I "1.3.6.1.4.1.4203.1.11.3" -#define LDAP_EXOP_X_CANCEL "1.3.6.1.4.1.4203.666.6.3" +#define LDAP_EXOP_CANCEL "1.3.6.1.1.8" /* RFC 3909 */ +#define LDAP_EXOP_X_CANCEL LDAP_EXOP_CANCEL + +/* various works in progress */ +#define LDAP_EXOP_WHO_AM_I "1.3.6.1.4.1.4203.1.11.3" +#define LDAP_EXOP_X_WHO_AM_I LDAP_EXOP_WHO_AM_I + +#define LDAP_EXOP_X_TURN "1.3.6.1.4.1.4203.666.6.4" + +/* LDAP Grouping of Related Operations *//* a work in progress */ +#ifdef LDAP_DEVEL +#define LDAP_X_GROUPING_BASE "1.3.6.1.4.1.4203.666.10.3" +#define LDAP_EXOP_GROUPING_CREATE LDAP_X_GROUPING_BASE ".1" +#define LDAP_EXOP_GROUPING_END LDAP_X_GROUPING_BASE ".2" +#define LDAP_NOTICE_GROUPING_END LDAP_X_GROUPING_BASE ".3" +#define LDAP_EXOP_GROUPING_ACTION LDAP_X_GROUPING_BASE ".4" +#define LDAP_NOTICE_GROUPING_INFO LDAP_X_GROUPING_BASE ".5" +#define LDAP_CONTROL_GROUPING LDAP_X_GROUPING_BASE ".6" +#endif + +/* LDAP Grouping Types *//* a work in progress */ +#ifdef LDAP_DEVEL +#define LDAP_GROUP_TRANSACTION "1.3.6.1.4.1.4203.666.10.4" +#endif /* LDAP Features */ #define LDAP_FEATURE_ALL_OP_ATTRS "1.3.6.1.4.1.4203.1.5.1" /* RFC 3673 */ @@ -273,11 +353,14 @@ typedef struct ldapcontrol { #define LDAP_FEATURE_ABSOLUTE_FILTERS "1.3.6.1.4.1.4203.1.5.3" /* (&) (|) */ #define LDAP_FEATURE_LANGUAGE_TAG_OPTIONS "1.3.6.1.4.1.4203.1.5.4" #define LDAP_FEATURE_LANGUAGE_RANGE_OPTIONS "1.3.6.1.4.1.4203.1.5.5" +#define LDAP_FEATURE_MODIFY_INCREMENT "1.3.6.1.1.14" +#ifdef LDAP_DEVEL +/* LDAP Experimental (works in progress) Features */ #define LDAP_FEATURE_SUBORDINATE_SCOPE \ "1.3.6.1.4.1.4203.666.8.1" /* "children" */ #define LDAP_FEATURE_CHILDREN_SCOPE LDAP_FEATURE_SUBORDINATE_SCOPE -#define LDAP_FEATURE_MODIFY_INCREMENT "1.3.6.1.4.1.4203.666.8.2" +#endif /* * specific LDAP instantiations of BER types we know about @@ -317,6 +400,9 @@ typedef struct ldapcontrol { #define LDAP_TAG_EXOP_RES_OID ((ber_tag_t) 0x8aU) /* context specific + primitive */ #define LDAP_TAG_EXOP_RES_VALUE ((ber_tag_t) 0x8bU) /* context specific + primitive */ +#define LDAP_TAG_IM_RES_OID ((ber_tag_t) 0x80U) /* context specific + primitive */ +#define LDAP_TAG_IM_RES_VALUE ((ber_tag_t) 0x81U) /* context specific + primitive */ + #define LDAP_TAG_SASL_RES_CREDS ((ber_tag_t) 0x87U) /* context specific + primitive */ /* LDAP Request Messages */ @@ -390,7 +476,6 @@ typedef struct ldapcontrol { #define LDAP_SUBSTRING_FINAL ((ber_tag_t) 0x82U) /* context specific */ /* search scopes */ -#define LDAP_SCOPE_DEFAULT ((ber_int_t) -1) /* OpenLDAP extension */ #define LDAP_SCOPE_BASE ((ber_int_t) 0x0000) #define LDAP_SCOPE_BASEOBJECT LDAP_SCOPE_BASE #define LDAP_SCOPE_ONELEVEL ((ber_int_t) 0x0001) @@ -399,6 +484,7 @@ typedef struct ldapcontrol { #define LDAP_SCOPE_SUB LDAP_SCOPE_SUBTREE #define LDAP_SCOPE_SUBORDINATE ((ber_int_t) 0x0003) /* OpenLDAP extension */ #define LDAP_SCOPE_CHILDREN LDAP_SCOPE_SUBORDINATE +#define LDAP_SCOPE_DEFAULT ((ber_int_t) -1) /* OpenLDAP extension */ /* substring filter component types */ #define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U) /* context specific */ @@ -421,6 +507,7 @@ typedef struct ldapcontrol { #define LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07 #define LDAP_STRONG_AUTH_NOT_SUPPORTED LDAP_AUTH_METHOD_NOT_SUPPORTED #define LDAP_STRONG_AUTH_REQUIRED 0x08 +#define LDAP_STRONGER_AUTH_REQUIRED LDAP_STRONG_AUTH_REQUIRED #define LDAP_PARTIAL_RESULTS 0x09 /* LDAPv2+ (not LDAPv3) */ #define LDAP_REFERRAL 0x0a /* LDAPv3 */ @@ -469,28 +556,50 @@ typedef struct ldapcontrol { #define LDAP_ALREADY_EXISTS 0x44 #define LDAP_NO_OBJECT_CLASS_MODS 0x45 #define LDAP_RESULTS_TOO_LARGE 0x46 /* CLDAP */ -#define LDAP_AFFECTS_MULTIPLE_DSAS 0x47 /* LDAPv3 */ +#define LDAP_AFFECTS_MULTIPLE_DSAS 0x47 + +#define LDAP_OTHER 0x50 + +/* LCUP operation codes (113-117) - not implemented */ +#define LDAP_CUP_RESOURCES_EXHAUSTED 0x71 +#define LDAP_CUP_SECURITY_VIOLATION 0x72 +#define LDAP_CUP_INVALID_DATA 0x73 +#define LDAP_CUP_UNSUPPORTED_SCHEME 0x74 +#define LDAP_CUP_RELOAD_REQUIRED 0x75 + +/* Cancel operation codes (118-121) */ +#define LDAP_CANCELLED 0x76 +#define LDAP_NO_SUCH_OPERATION 0x77 +#define LDAP_TOO_LATE 0x78 +#define LDAP_CANNOT_CANCEL 0x79 + +/* Assertion control (122) */ +#define LDAP_ASSERTION_FAILED 0x7A -#define LDAP_OTHER 0x50 /* Experimental result codes */ -#define LDAP_E_ERROR(n) LDAP_RANGE((n),0x1000,0x3FFF) /* experimental */ -#define LDAP_X_ERROR(n) LDAP_RANGE((n),0x4000,0xFFFF) /* private use */ +#define LDAP_E_ERROR(n) LDAP_RANGE((n),0x1000,0x3FFF) + +/* LDAP Sync (4096) */ +#define LDAP_SYNC_REFRESH_REQUIRED 0x1000 + -/* for the LDAP Sync operation */ -#define LDAP_SYNC_REFRESH_REQUIRED 0x4100 +/* Private Use result codes */ +#define LDAP_X_ERROR(n) LDAP_RANGE((n),0x4000,0xFFFF) + +#define LDAP_X_SYNC_REFRESH_REQUIRED 0x4100 /* defunct */ +#define LDAP_X_ASSERTION_FAILED 0x410f /* defunct */ /* for the LDAP No-Op control */ -#define LDAP_NO_OPERATION 0x410e +#define LDAP_X_NO_OPERATION 0x410e -/* for the Assertion control */ -#define LDAP_ASSERTION_FAILED 0x410f +/* for the Chaining Behavior control (consecutive result codes requested; + * see ) */ +#ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR +#define LDAP_X_NO_REFERRALS_FOUND 0x4110 +#define LDAP_X_CANNOT_CHAIN 0x4111 +#endif -/* for the Cancel operation */ -#define LDAP_CANCELLED 0x4110 -#define LDAP_NO_SUCH_OPERATION 0x4111 -#define LDAP_TOO_LATE 0x4112 -#define LDAP_CANNOT_CANCEL 0x4113 /* API Error Codes * @@ -514,7 +623,7 @@ typedef struct ldapcontrol { #define LDAP_NOT_SUPPORTED (-12) #define LDAP_CONTROL_NOT_FOUND (-13) #define LDAP_NO_RESULTS_RETURNED (-14) -#define LDAP_MORE_RESULTS_TO_RETURN (-15) +#define LDAP_MORE_RESULTS_TO_RETURN (-15) /* Obsolete */ #define LDAP_CLIENT_LOOP (-16) #define LDAP_REFERRAL_LIMIT_EXCEEDED (-17) @@ -632,6 +741,17 @@ ldap_set_rebind_proc LDAP_P(( LDAP_REBIND_PROC *rebind_proc, void *params )); +/* V3 referral selection Function Callback Prototype */ +typedef int (LDAP_NEXTREF_PROC) LDAP_P(( + LDAP *ld, char ***refsp, int *cntp, + void *params )); + +LDAP_F( int ) +ldap_set_nextref_proc LDAP_P(( + LDAP *ld, + LDAP_NEXTREF_PROC *nextref_proc, + void *params )); + /* * in controls.c: */ @@ -642,6 +762,11 @@ ldap_create_control LDAP_P(( int iscritical, LDAPControl **ctrlp )); +LDAP_F( LDAPControl * ) +ldap_find_control LDAP_P(( + LDAP_CONST char *oid, + LDAPControl **ctrls )); + LDAP_F( void ) ldap_control_free LDAP_P(( LDAPControl *ctrl )); @@ -707,6 +832,112 @@ ldap_parse_intermediate LDAP_P(( LDAPControl ***serverctrls, int freeit )); +/* + * in groupings.c: + */ +#ifdef LDAP_EXOP_GROUPING_CREATE + +LDAP_F( int ) +ldap_grouping_create LDAP_P(( + LDAP *ld, + LDAP_CONST char *grpoid, + struct berval *grpdata, + LDAPControl **serverctrls, + LDAPControl **clientctrls, + int *msgidp )); + +LDAP_F( int ) +ldap_grouping_create_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *grpoid, + struct berval *grpdata, + LDAPControl **serverctrls, + LDAPControl **clientctrls, + struct berval **retgrpcookiep, + struct berval **retgrpdatap )); + +LDAP_F( int ) +ldap_parse_grouping_create_result LDAP_P(( + LDAP *ld, + LDAPMessage *res, + struct berval **retgrpcookiep, + struct berval **retgrpdatap, + LDAPControl ***serverctrls, + int freeit )); + +LDAP_F( int ) +ldap_grouping_end LDAP_P(( + LDAP *ld, + LDAP_CONST char *grpoid, + struct berval *grpdata, + LDAPControl **serverctrls, + LDAPControl **clientctrls, + int *msgidp )); + +LDAP_F( int ) +ldap_grouping_end_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *grpoid, + struct berval *grpdata, + LDAPControl **serverctrls, + LDAPControl **clientctrls, + struct berval **retgrpdatap )); + +LDAP_F( int ) +ldap_parse_grouping_end_result LDAP_P(( + LDAP *ld, + LDAPMessage *res, + struct berval **retgrpdatap, + LDAPControl ***serverctrls, + int freeit )); + +LDAP_F( int ) +ldap_grouping_action_operation LDAP_P(( + LDAP *ld, + LDAP_CONST char *grpoid, + struct berval *grpdata, + LDAPControl **serverctrls, + LDAPControl **clientctrls, + int *msgidp )); + +LDAP_F( int ) +ldap_grouping_action_operation_s LDAP_P(( + LDAP *ld, + LDAP_CONST char *grpoid, + struct berval *grpdata, + LDAPControl **serverctrls, + LDAPControl **clientctrls, + struct berval **retgrpcookiep, + struct berval **retgrpdatap )); + +LDAP_F( int ) +ldap_parse_grouping_action_result LDAP_P(( + LDAP *ld, + LDAPMessage *res, + struct berval **retgrpcookiep, + struct berval **retgrpdatap, + LDAPControl ***serverctrls, + int freeit )); + +LDAP_F( int ) +ldap_parse_grouping_end_notice LDAP_P(( + LDAP *ld, + LDAPMessage *res, + struct berval **retdatap, + struct berval **retgrpcookiep, + struct berval **retgrpdatap, + int freeit )); + +LDAP_F( int ) +ldap_parse_grouping_info_notice LDAP_P(( + LDAP *ld, + LDAPMessage *res, + struct berval **retdatap, + struct berval **retgrpcookiep, + struct berval **retgrpdatap, + int freeit )); +#endif + /* * in abandon.c: */ @@ -717,9 +948,9 @@ ldap_abandon_ext LDAP_P(( LDAPControl **serverctrls, LDAPControl **clientctrls )); -#if LDAP_DEPRECATED +#if LDAP_DEPRECATED LDAP_F( int ) -ldap_abandon LDAP_P(( /* deprecated */ +ldap_abandon LDAP_P(( /* deprecated, use ldap_abandon_ext */ LDAP *ld, int msgid )); #endif @@ -747,13 +978,13 @@ ldap_add_ext_s LDAP_P(( #if LDAP_DEPRECATED LDAP_F( int ) -ldap_add LDAP_P(( /* deprecated */ +ldap_add LDAP_P(( /* deprecated, use ldap_add_ext */ LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs )); LDAP_F( int ) -ldap_add_s LDAP_P(( /* deprecated */ +ldap_add_s LDAP_P(( /* deprecated, use ldap_add_ext_s */ LDAP *ld, LDAP_CONST char *dn, LDAPMod **attrs )); @@ -826,14 +1057,14 @@ ldap_parse_sasl_bind_result LDAP_P(( * (deprecated) */ LDAP_F( int ) -ldap_bind LDAP_P(( /* deprecated */ +ldap_bind LDAP_P(( /* deprecated, use ldap_sasl_bind */ LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *passwd, int authmethod )); LDAP_F( int ) -ldap_bind_s LDAP_P(( /* deprecated */ +ldap_bind_s LDAP_P(( /* deprecated, use ldap_sasl_bind_s */ LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *cred, @@ -843,13 +1074,13 @@ ldap_bind_s LDAP_P(( /* deprecated */ * in sbind.c: */ LDAP_F( int ) -ldap_simple_bind LDAP_P(( /* deprecated */ +ldap_simple_bind LDAP_P(( /* deprecated, use ldap_sasl_bind */ LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *passwd )); LDAP_F( int ) -ldap_simple_bind_s LDAP_P(( /* deprecated */ +ldap_simple_bind_s LDAP_P(( /* deprecated, use ldap_sasl_bind_s */ LDAP *ld, LDAP_CONST char *who, LDAP_CONST char *passwd )); @@ -857,7 +1088,7 @@ ldap_simple_bind_s LDAP_P(( /* deprecated */ /* * in kbind.c: - * (deprecated) + * (deprecated - use SASL instead) */ LDAP_F( int ) ldap_kerberos_bind_s LDAP_P(( /* deprecated */ @@ -910,14 +1141,14 @@ ldap_compare_ext_s LDAP_P(( #if LDAP_DEPRECATED LDAP_F( int ) -ldap_compare LDAP_P(( /* deprecated */ +ldap_compare LDAP_P(( /* deprecated, use ldap_compare_ext */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *attr, LDAP_CONST char *value )); LDAP_F( int ) -ldap_compare_s LDAP_P(( /* deprecated */ +ldap_compare_s LDAP_P(( /* deprecated, use ldap_compare_ext_s */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *attr, @@ -945,12 +1176,12 @@ ldap_delete_ext_s LDAP_P(( #if LDAP_DEPRECATED LDAP_F( int ) -ldap_delete LDAP_P(( /* deprecated */ +ldap_delete LDAP_P(( /* deprecated, use ldap_delete_ext */ LDAP *ld, LDAP_CONST char *dn )); LDAP_F( int ) -ldap_delete_s LDAP_P(( /* deprecated */ +ldap_delete_s LDAP_P(( /* deprecated, use ldap_delete_ext_s */ LDAP *ld, LDAP_CONST char *dn )); #endif @@ -976,13 +1207,13 @@ ldap_err2string LDAP_P(( #if LDAP_DEPRECATED LDAP_F( int ) -ldap_result2error LDAP_P(( /* deprecated */ +ldap_result2error LDAP_P(( /* deprecated, use ldap_parse_result */ LDAP *ld, LDAPMessage *r, int freeit )); LDAP_F( void ) -ldap_perror LDAP_P(( /* deprecated */ +ldap_perror LDAP_P(( /* deprecated, use ldap_err2string */ LDAP *ld, LDAP_CONST char *s )); #endif @@ -1010,13 +1241,13 @@ ldap_modify_ext_s LDAP_P(( #if LDAP_DEPRECATED LDAP_F( int ) -ldap_modify LDAP_P(( /* deprecated */ +ldap_modify LDAP_P(( /* deprecated, use ldap_modify_ext */ LDAP *ld, LDAP_CONST char *dn, LDAPMod **mods )); LDAP_F( int ) -ldap_modify_s LDAP_P(( /* deprecated */ +ldap_modify_s LDAP_P(( /* deprecated, use ldap_modify_ext_s */ LDAP *ld, LDAP_CONST char *dn, LDAPMod **mods )); @@ -1049,7 +1280,7 @@ ldap_rename_s LDAP_P(( #if LDAP_DEPRECATED LDAP_F( int ) -ldap_rename2 LDAP_P(( /* deprecated */ +ldap_rename2 LDAP_P(( /* deprecated, use ldap_rename */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, @@ -1057,7 +1288,7 @@ ldap_rename2 LDAP_P(( /* deprecated */ int deleteoldrdn )); LDAP_F( int ) -ldap_rename2_s LDAP_P(( /* deprecated */ +ldap_rename2_s LDAP_P(( /* deprecated, use ldap_rename_s */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, @@ -1065,26 +1296,26 @@ ldap_rename2_s LDAP_P(( /* deprecated */ int deleteoldrdn )); LDAP_F( int ) -ldap_modrdn LDAP_P(( /* deprecated */ +ldap_modrdn LDAP_P(( /* deprecated, use ldap_rename */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn )); LDAP_F( int ) -ldap_modrdn_s LDAP_P(( /* deprecated */ +ldap_modrdn_s LDAP_P(( /* deprecated, use ldap_rename_s */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn )); LDAP_F( int ) -ldap_modrdn2 LDAP_P(( /* deprecated */ +ldap_modrdn2 LDAP_P(( /* deprecated, use ldap_rename */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, int deleteoldrdn )); LDAP_F( int ) -ldap_modrdn2_s LDAP_P(( /* deprecated */ +ldap_modrdn2_s LDAP_P(( /* deprecated, use ldap_rename_s */ LDAP *ld, LDAP_CONST char *dn, LDAP_CONST char *newrdn, @@ -1097,12 +1328,12 @@ ldap_modrdn2_s LDAP_P(( /* deprecated */ */ #if LDAP_DEPRECATED LDAP_F( LDAP * ) -ldap_init LDAP_P(( /* deprecated */ +ldap_init LDAP_P(( /* deprecated, use ldap_create or ldap_initialize */ LDAP_CONST char *host, int port )); LDAP_F( LDAP * ) -ldap_open LDAP_P(( /* deprecated */ +ldap_open LDAP_P(( /* deprecated, use ldap_create or ldap_initialize */ LDAP_CONST char *host, int port )); #endif @@ -1116,6 +1347,25 @@ ldap_initialize LDAP_P(( LDAP **ldp, LDAP_CONST char *url )); +/* + * in tls.c + */ + +LDAP_F( int ) +ldap_tls_inplace LDAP_P(( + LDAP *ld )); + +LDAP_F( int ) +ldap_start_tls LDAP_P(( + LDAP *ld, + LDAPControl **serverctrls, + LDAPControl **clientctrls, + int *msgidp )); + +LDAP_F( int ) +ldap_install_tls LDAP_P(( + LDAP *ld )); + LDAP_F( int ) ldap_start_tls_s LDAP_P(( LDAP *ld, @@ -1307,33 +1557,37 @@ ldap_dn_normalize LDAP_P(( char **out, unsigned oflags )); LDAP_F( char * ) -ldap_dn2ufn LDAP_P(( /* deprecated */ +ldap_dn2ufn LDAP_P(( /* deprecated, use ldap_str2dn/dn2str */ LDAP_CONST char *dn )); LDAP_F( char ** ) -ldap_explode_dn LDAP_P(( /* deprecated */ +ldap_explode_dn LDAP_P(( /* deprecated, ldap_str2dn */ LDAP_CONST char *dn, int notypes )); LDAP_F( char ** ) -ldap_explode_rdn LDAP_P(( /* deprecated */ +ldap_explode_rdn LDAP_P(( /* deprecated, ldap_str2rdn */ LDAP_CONST char *rdn, int notypes )); -typedef int LDAPDN_rewrite_func LDAP_P(( LDAPDN dn, unsigned flags, void *ctx )); +typedef int LDAPDN_rewrite_func + LDAP_P(( LDAPDN dn, unsigned flags, void *ctx )); LDAP_F( int ) ldap_X509dn2bv LDAP_P(( void *x509_name, struct berval *dn, LDAPDN_rewrite_func *func, unsigned flags )); LDAP_F( char * ) -ldap_dn2dcedn LDAP_P(( LDAP_CONST char *dn )); /* deprecated */ +ldap_dn2dcedn LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ + LDAP_CONST char *dn )); LDAP_F( char * ) -ldap_dcedn2dn LDAP_P(( LDAP_CONST char *dce )); /* deprecated */ +ldap_dcedn2dn LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ + LDAP_CONST char *dce )); LDAP_F( char * ) -ldap_dn2ad_canonical LDAP_P(( LDAP_CONST char *dn )); /* deprecated */ +ldap_dn2ad_canonical LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ + LDAP_CONST char *dn )); LDAP_F( int ) ldap_get_dn_ber LDAP_P(( @@ -1379,17 +1633,17 @@ ldap_value_free_len LDAP_P(( #if LDAP_DEPRECATED LDAP_F( char ** ) -ldap_get_values LDAP_P(( /* deprecated */ +ldap_get_values LDAP_P(( /* deprecated, use ldap_get_values_len */ LDAP *ld, LDAPMessage *entry, LDAP_CONST char *target )); LDAP_F( int ) -ldap_count_values LDAP_P(( /* deprecated */ +ldap_count_values LDAP_P(( /* deprecated, use ldap_count_values_len */ char **vals )); LDAP_F( void ) -ldap_value_free LDAP_P(( /* deprecated */ +ldap_value_free LDAP_P(( /* deprecated, use ldap_values_free_len */ char **vals )); #endif @@ -1426,6 +1680,11 @@ ldap_msgdelete LDAP_P(( * in search.c: */ LDAP_F( int ) +ldap_bv2escaped_filter_value LDAP_P(( + struct berval *in, + struct berval *out )); + +LDAP_F( int ) ldap_search_ext LDAP_P(( LDAP *ld, LDAP_CONST char *base, @@ -1455,7 +1714,7 @@ ldap_search_ext_s LDAP_P(( #if LDAP_DEPRECATED LDAP_F( int ) -ldap_search LDAP_P(( /* deprecated */ +ldap_search LDAP_P(( /* deprecated, use ldap_search_ext */ LDAP *ld, LDAP_CONST char *base, int scope, @@ -1464,7 +1723,7 @@ ldap_search LDAP_P(( /* deprecated */ int attrsonly )); LDAP_F( int ) -ldap_search_s LDAP_P(( /* deprecated */ +ldap_search_s LDAP_P(( /* deprecated, use ldap_search_ext_s */ LDAP *ld, LDAP_CONST char *base, int scope, @@ -1474,7 +1733,7 @@ ldap_search_s LDAP_P(( /* deprecated */ LDAPMessage **res )); LDAP_F( int ) -ldap_search_st LDAP_P(( /* deprecated */ +ldap_search_st LDAP_P(( /* deprecated, use ldap_search_ext_s */ LDAP *ld, LDAP_CONST char *base, int scope, @@ -1502,11 +1761,11 @@ ldap_unbind_ext_s LDAP_P(( #if LDAP_DEPRECATED LDAP_F( int ) -ldap_unbind LDAP_P(( /* deprecated */ +ldap_unbind LDAP_P(( /* deprecated, use ldap_unbind_ext */ LDAP *ld )); LDAP_F( int ) -ldap_unbind_s LDAP_P(( /* deprecated */ +ldap_unbind_s LDAP_P(( /* deprecated, use ldap_unbind_ext_s */ LDAP *ld )); #endif @@ -1556,7 +1815,7 @@ ldap_mods_free LDAP_P(( #if LDAP_DEPRECATED /* - * in sort.c (deprecated) + * in sort.c (deprecated, use custom code instead) */ typedef int (LDAP_SORT_AD_CMP_PROC) LDAP_P(( /* deprecated */ LDAP_CONST char *left, @@ -1627,12 +1886,32 @@ ldap_cancel LDAP_P(( LDAP *ld, int *msgidp )); LDAP_F( int ) -ldap_cancel_s LDAP_P(( - LDAP *ld, +ldap_cancel_s LDAP_P(( LDAP *ld, int cancelid, LDAPControl **sctrl, LDAPControl **cctrl )); +/* + * LDAP Turn Extended Operation + * in turn.c + */ +#define LDAP_API_FEATURE_TURN 1000 + +LDAP_F( int ) +ldap_turn LDAP_P(( LDAP *ld, + int mutual, + LDAP_CONST char* identifier, + LDAPControl **sctrls, + LDAPControl **cctrls, + int *msgidp )); + +LDAP_F( int ) +ldap_turn_s LDAP_P(( LDAP *ld, + int mutual, + LDAP_CONST char* identifier, + LDAPControl **sctrl, + LDAPControl **cctrl )); + /* * LDAP Server Side Sort * in sortctrl.c @@ -1703,6 +1982,49 @@ ldap_parse_vlv_control LDAP_P(( struct berval **contextp, int *errcodep )); +/* + * LDAP Transactions + * in txn.c + */ +#ifdef LDAP_GROUP_TRANSACTION +LDAP_F( int ) +ldap_parse_txn_create LDAP_P(( + LDAP *ld, + LDAPMessage *res, + struct berval **cookie )); + +LDAP_F( int ) +ldap_txn_create LDAP_P(( + LDAP *ld, + LDAPControl **sctrls, + LDAPControl **cctrls, + int *msgidp )); + +LDAP_F( int ) +ldap_txn_create_s LDAP_P(( + LDAP *ld, + struct berval **cookie, + LDAPControl **sctrls, + LDAPControl **cctrls )); + +LDAP_F( int ) +ldap_txn_end LDAP_P(( + LDAP *ld, + struct berval *cookie, + int commit, + LDAPControl **sctrls, + LDAPControl **cctrls, + int *msgidp )); + +LDAP_F( int ) +ldap_txn_end_s LDAP_P(( + LDAP *ld, + struct berval *cookie, + int commit, + LDAPControl **sctrls, + LDAPControl **cctrls )); +#endif + /* * LDAP Who Am I? * in whoami.c @@ -1759,6 +2081,42 @@ ldap_passwd_s LDAP_P(( LDAPControl **sctrls, LDAPControl **cctrls )); +#ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST +/* + * LDAP Password Policy controls + * in ppolicy.c + */ +#define LDAP_API_FEATURE_PASSWORD_POLICY 1000 + +typedef enum passpolicyerror_enum { + PP_passwordExpired = 0, + PP_accountLocked = 1, + PP_changeAfterReset = 2, + PP_passwordModNotAllowed = 3, + PP_mustSupplyOldPassword = 4, + PP_insufficientPasswordQuality = 5, + PP_passwordTooShort = 6, + PP_passwordTooYoung = 7, + PP_passwordInHistory = 8, + PP_noError = 65535 +} LDAPPasswordPolicyError; + +LDAP_F( int ) +ldap_create_passwordpolicy_control LDAP_P(( + LDAP *ld, + LDAPControl **ctrlp )); + +LDAP_F( int ) +ldap_parse_passwordpolicy_control LDAP_P(( + LDAP *ld, + LDAPControl *ctrl, + int *expirep, + int *gracep, + LDAPPasswordPolicyError *errorp )); + +LDAP_F( const char * ) +ldap_passwordpolicy_err2txt LDAP_P(( LDAPPasswordPolicyError )); +#endif /* LDAP_CONTROL_PASSWORDPOLICYREQUEST */ LDAP_END_DECL #endif /* _LDAP_H */