X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fldap.h;h=08e6abf2de4d4841f722fd7749a46ef061c24a60;hb=529e1d61f59047b6b056de0aab3fc58e2baeb501;hp=dcc4b2ac71103e200d041aa763250627d7e0bcce;hpb=93c9cbf3b86d8103b6a54a04950beb004da009d3;p=openldap diff --git a/include/ldap.h b/include/ldap.h index dcc4b2ac71..08e6abf2de 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-2004 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 @@ -196,17 +199,44 @@ typedef struct ldapcontrol { #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 */ +/* 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 */ + +/* but not yet formalized controls */ +#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" + +/* various works in progress */ #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_NOOP "1.3.6.1.4.1.4203.666.5.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" +#if 0 +/* 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 +#endif + +/* 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" + +/* Password policy Controls *//* work in progress */ +#ifdef LDAP_DEVEL +#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" +#endif + +/* 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,24 +261,14 @@ 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 -#endif - -/* controls for MSAD compatibility */ -#define LDAP_CONTROL_X_DOMAIN_SCOPE "1.2.840.113556.1.4.1339" +/* MS ActiveDirectory controls (for compatibility) */ +#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" - -/* 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 */ - -/* 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" +#define LDAP_CONTROL_X_INCREMENTAL_VALUES "1.2.840.113556.1.4.802" +#define LDAP_CONTROL_X_TREE_DELETE "1.2.840.113556.1.4.805" +#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 NCs subordinate to base */ /* LDAP Unsolicited Notifications */ #define LDAP_NOTICE_OF_DISCONNECTION "1.3.6.1.4.1.1466.20036" /* RFC 2251 */ @@ -266,6 +286,22 @@ typedef struct ldapcontrol { #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" +/* 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 */ #define LDAP_FEATURE_OBJECTCLASS_ATTRS \ @@ -273,11 +309,13 @@ 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.4.1.4203.666.8.2" +#ifdef LDAP_DEVEL #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 @@ -397,8 +435,10 @@ typedef struct ldapcontrol { #define LDAP_SCOPE_ONE LDAP_SCOPE_ONELEVEL #define LDAP_SCOPE_SUBTREE ((ber_int_t) 0x0002) #define LDAP_SCOPE_SUB LDAP_SCOPE_SUBTREE +#ifdef LDAP_DEVEL #define LDAP_SCOPE_SUBORDINATE ((ber_int_t) 0x0003) /* OpenLDAP extension */ #define LDAP_SCOPE_CHILDREN LDAP_SCOPE_SUBORDINATE +#endif /* substring filter component types */ #define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U) /* context specific */ @@ -642,6 +682,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 +752,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: */ @@ -1320,7 +1471,8 @@ ldap_explode_rdn LDAP_P(( /* deprecated */ 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, @@ -1703,6 +1855,49 @@ ldap_parse_vlv_control LDAP_P(( struct berval **contextp, int *errcodep )); +/* + * LDAP Transactions + * in txn.c + */ +#ifdef LDAP_GROUPING_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 +1954,43 @@ 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 */