Repository URL to install this package:
|
Version:
3.2.0 ▾
|
(* $OpenLDAP: pkg/ldap/include/ldap.h,v 1.168.2.16 2003/03/05 23:48:31 kurt Exp $ *)
(*
* Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted only as authorized by the OpenLDAP
* Public License. A copy of this license is available at
* http://www.OpenLDAP.org/license.html or in file LICENSE in the
* top-level directory of the distribution.
*)
(* Portions
* Copyright (c) 1990 Regents of the University of Michigan.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted
* provided that this notice is preserved and that due credit is given
* to the University of Michigan at Ann Arbor. The name of the University
* may not be used to endorse or promote products derived from this
* software without specific prior written permission. This software
* is provided ``as is'' without express or implied warranty.
*)
const
LDAP_VERSION1 = 1;
LDAP_VERSION2 = 2;
LDAP_VERSION3 = 3;
LDAP_VERSION_MIN = LDAP_VERSION2;
LDAP_VERSION = LDAP_VERSION2;
LDAP_VERSION_MAX = LDAP_VERSION3;
(*
* We'll use 2000+draft revision for our API version number
* As such, the number will be above the old RFC but below
* whatever number does finally get assigned
*)
const
LDAP_API_VERSION = 3001;
LDAP_VENDOR_NAME = 'OpenLDAP';
(* OpenLDAP API Features *)
LDAP_API_FEATURE_X_OPENLDAP = LDAP_VENDOR_VERSION;
{$IF defined(LDAP_API_FEATURE_X_OPENLDAP_REENTRANT) or (defined(LDAP_THREAD_SAFE) and 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}
{$IFEND}
{$IF defined(LDAP_THREAD_SAFE) and defined(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE)}
//{$DEFINE LDAP_API_FEATURE_SESSION_SAFE}
//{$DEFINE LDAP_API_OPERATION_SESSION_SAFE}
{$IFEND}
LDAP_PORT = 389; (* ldap:/// default LDAP port *)
LDAPS_PORT = 636; (* ldaps:/// default LDAP over TLS port *)
LDAP_ROOT_DSE = '';
LDAP_NO_ATTRS = '1.1';
LDAP_ALL_USER_ATTRIBUTES = '*';
LDAP_ALL_OPERATIONAL_ATTRIBUTES = '+'; (* OpenLDAP extension *)
LDAP_MAXINT = 2147483647;
(*
* LDAP_OPTions defined by draft-ldapext-ldap-c-api-02
* 0x0000 - 0x0fff reserved for api options
* 0x1000 - 0x3fff reserved for api extended options
* 0x4000 - 0x7fff reserved for private and experimental options
*)
LDAP_OPT_API_INFO = $0000;
LDAP_OPT_DESC = $0001; (* deprecated *)
LDAP_OPT_DEREF = $0002;
LDAP_OPT_SIZELIMIT = $0003;
LDAP_OPT_TIMELIMIT = $0004;
(* $05 - $07 not defined by current draft *)
LDAP_OPT_REFERRALS = $0008;
LDAP_OPT_RESTART = $0009;
(* $0a - $10 not defined by current draft *)
LDAP_OPT_PROTOCOL_VERSION = $0011;
LDAP_OPT_SERVER_CONTROLS = $0012;
LDAP_OPT_CLIENT_CONTROLS = $0013;
(* $14 not defined by current draft *)
LDAP_OPT_API_FEATURE_INFO = $0015;
(* $16 - $2f not defined by current draft *)
LDAP_OPT_HOST_NAME = $0030;
LDAP_OPT_RESULT_CODE = $0031;
LDAP_OPT_ERROR_NUMBER = LDAP_OPT_RESULT_CODE;
LDAP_OPT_ERROR_STRING = $0032;
LDAP_OPT_MATCHED_DN = $0033;
(* $34 - $0fff not defined by current draft *)
(* private and experimental options *)
(* OpenLDAP specific options *)
LDAP_OPT_DEBUG_LEVEL = $5001; (* debug level *)
LDAP_OPT_TIMEOUT = $5002; (* default timeout *)
LDAP_OPT_REFHOPLIMIT = $5003; (* ref hop limit *)
LDAP_OPT_NETWORK_TIMEOUT = $5005; (* socket level timeout *)
LDAP_OPT_URI = $5006;
LDAP_OPT_REFERRAL_URLS = $5007; (* Referral URLs *)
(* OpenLDAP TLS options *)
LDAP_OPT_X_TLS = $6000;
LDAP_OPT_X_TLS_CTX = $6001; (* SSL CTX *)
LDAP_OPT_X_TLS_CACERTFILE = $6002;
LDAP_OPT_X_TLS_CACERTDIR = $6003;
LDAP_OPT_X_TLS_CERTFILE = $6004;
LDAP_OPT_X_TLS_KEYFILE = $6005;
LDAP_OPT_X_TLS_REQUIRE_CERT = $6006;
(* LDAP_OPT_X_TLS_PROTOCOL = $6007; *)
LDAP_OPT_X_TLS_CIPHER_SUITE = $6008;
LDAP_OPT_X_TLS_RANDOM_FILE = $6009;
LDAP_OPT_X_TLS_SSL_CTX = $600a;
LDAP_OPT_X_TLS_CRLCHECK = $600b;
LDAP_OPT_X_TLS_CONNECT_CB = $6600c;
LDAP_OPT_X_TLS_CONNECT_ARG = $6600d;
LDAP_OPT_X_TLS_DHFILE = $6600e;
LDAP_OPT_X_TLS_NEVER = 0;
LDAP_OPT_X_TLS_HARD = 1;
LDAP_OPT_X_TLS_DEMAND = 2;
LDAP_OPT_X_TLS_ALLOW = 3;
LDAP_OPT_X_TLS_TRY = 4;
(* OpenLDAP SASL options *)
LDAP_OPT_X_SASL_MECH = $6100;
LDAP_OPT_X_SASL_REALM = $6101;
LDAP_OPT_X_SASL_AUTHCID = $6102;
LDAP_OPT_X_SASL_AUTHZID = $6103;
LDAP_OPT_X_SASL_SSF = $6104; (* read-only *)
LDAP_OPT_X_SASL_SSF_EXTERNAL = $6105; (* write-only *)
LDAP_OPT_X_SASL_SECPROPS = $6106; (* write-only *)
LDAP_OPT_X_SASL_SSF_MIN = $6107;
LDAP_OPT_X_SASL_SSF_MAX = $6108;
LDAP_OPT_X_SASL_MAXBUFSIZE = $6109;
(* Private API Extensions -- reserved for application use *)
LDAP_OPT_PRIVATE_EXTENSION_BASE = $7000; (* Private API inclusive *)
(*
* ldap_get_option() and ldap_set_option() return values.
* As later versions may return other values indicating
* failure, current applications should only compare returned
* value against LDAP_OPT_SUCCESS.
*)
LDAP_OPT_SUCCESS = 0;
LDAP_OPT_ERROR = -1;
(* on/off values *)
LDAP_OPT_OFF = Pointer(0);
function LDAP_OPT_ON: Pointer;
const
LDAP_API_INFO_VERSION = 1;
type
PLDAPAPIInfo = ^LDAPAPIInfo;
LDAPAPIInfo = record
ldapai_info_version : cint; (* version of LDAPAPIInfo (1) *)
ldapai_api_version : cint; (* revision of API supported *)
ldapai_protocol_version : cint; (* highest LDAP version supported *)
ldapai_extensions : ppcchar; (* names of API extensions *)
ldapai_vendor_name : pcchar; (* name of supplier *)
ldapai_vendor_version : cint; (* supplier-specific version * 100 *)
end;
const
LDAP_FEATURE_INFO_VERSION = 1; (* version of api feature structure *)
type
pldap_apifeature_info = ^ldap_apifeature_info;
ldap_apifeature_info = record
ldapaif_info_version : cint; (* version of this struct (1) *)
ldapaif_name : pcchar; (* matches LDAP_API_FEATURE_... less the prefix *)
ldapaif_version : cint; (* matches the value LDAP_API_FEATURE_... *)
end;
PLDAPAPIFeatureInfo = ^LDAPAPIFeatureInfo;
LDAPAPIFeatureInfo = ldap_apifeature_info;
PPPLDAPControl = ^PPLDAPControl;
PPLDAPControl = ^PLDAPControl;
PLDAPControl = ^LDAPControl;
LDAPControl = record
ldctl_oid : pcchar;
ldctl_value : berval;
ldctl_iscritical : cchar;
end;
const
(* LDAP Controls *)
(* standard track controls *)
LDAP_CONTROL_MANAGEDSAIT = '2.16.840.1.113730.3.4.2'; (* RFC 3296 *)
LDAP_CONTROL_SUBENTRIES = '1.3.6.1.4.1.4203.1.10.1'; (* RFC 3672 *)
LDAP_CONTROL_PAGEDRESULTS = '1.2.840.113556.1.4.319'; (* RFC 2696 *)
LDAP_CONTROL_VALUESRETURNFILTER = '1.2.826.0.1.3344810.2.3'; (* RFC 3876 *)
LDAP_CONTROL_X_VALUESRETURNFILTER = '1.2.826.0.1.334810.2.3'; (* bad OID *)
LDAP_CONTROL_ASSERT = '1.3.6.1.1.12';
LDAP_CONTROL_PRE_READ = '1.3.6.1.1.13.1';
LDAP_CONTROL_POST_READ = '1.3.6.1.1.13.2';
(* standard track - not implemented in slapd(8) *)
LDAP_CONTROL_SORTREQUEST = '1.2.840.113556.1.4.473'; (* RFC 2891 *)
LDAP_CONTROL_SORTRESPONSE = '1.2.840.113556.1.4.474'; (* RFC 2891 *)
(* but not yet formalized controls *)
LDAP_CONTROL_PROXY_AUTHZ = '2.16.840.1.113730.3.4.18';
(* various works in progress *)
LDAP_CONTROL_NOOP = '1.3.6.1.4.1.4203.666.5.2';
(* LDAP VLV *)(* not implemented in slapd(8) *)
LDAP_CONTROL_VLVREQUEST = '2.16.840.1.113730.3.4.9';
LDAP_CONTROL_VLVRESPONSE = '2.16.840.1.113730.3.4.10';
(* LDAP Sync -- draft-zeilenga-ldup-sync *)(* submitted for publication *)
LDAP_SYNC_OID = '1.3.6.1.4.1.4203.1.9.1';
LDAP_CONTROL_SYNC = LDAP_SYNC_OID + '.1';
LDAP_CONTROL_SYNC_STATE = LDAP_SYNC_OID + '.2';
LDAP_CONTROL_SYNC_DONE = LDAP_SYNC_OID + '.3';
LDAP_SYNC_INFO = LDAP_SYNC_OID + '.4';
LDAP_SYNC_NONE = $00;
LDAP_SYNC_REFRESH_ONLY = $01;
LDAP_SYNC_RESERVED = $02;
LDAP_SYNC_REFRESH_AND_PERSIST = $03;
LDAP_SYNC_REFRESH_PRESENTS = 0;
LDAP_SYNC_REFRESH_DELETES = 1;
LDAP_TAG_SYNC_NEW_COOKIE = ber_tag_t($80);
LDAP_TAG_SYNC_REFRESH_DELETE = ber_tag_t($a1);
LDAP_TAG_SYNC_REFRESH_PRESENT = ber_tag_t($a2);
LDAP_TAG_SYNC_ID_SET = ber_tag_t($a3);
LDAP_TAG_SYNC_COOKIE = ber_tag_t($04);
LDAP_TAG_REFRESHDELETES = ber_tag_t($01);
LDAP_TAG_REFRESHDONE = ber_tag_t($01);
LDAP_TAG_RELOAD_HINT = ber_tag_t($01);
LDAP_SYNC_PRESENT = 0;
LDAP_SYNC_ADD = 1;
LDAP_SYNC_MODIFY = 2;
LDAP_SYNC_DELETE = 3;
(* MS ActiveDirectory controls (for compatibility) *)
LDAP_CONTROL_X_DOMAIN_SCOPE = '1.2.840.113556.1.4.1339';
LDAP_CONTROL_X_PERMISSIVE_MODIFY = '1.2.840.113556.1.4.1413';
(* LDAP Unsolicited Notifications *)
LDAP_NOTICE_OF_DISCONNECTION = '1.3.6.1.4.1.1466.20036'; (* RFC 2251 *)
LDAP_NOTICE_DISCONNECT = LDAP_NOTICE_OF_DISCONNECTION;
(* LDAP Extended Operations *)
LDAP_EXOP_START_TLS = '1.3.6.1.4.1.1466.20037'; (* RFC 2830 *)
LDAP_EXOP_MODIFY_PASSWD = '1.3.6.1.4.1.4203.1.11.1'; (* RFC 3062 *)
LDAP_TAG_EXOP_MODIFY_PASSWD_ID = ber_tag_t($80);
LDAP_TAG_EXOP_MODIFY_PASSWD_OLD = ber_tag_t($81);
LDAP_TAG_EXOP_MODIFY_PASSWD_NEW = ber_tag_t($82);
LDAP_TAG_EXOP_MODIFY_PASSWD_GEN = ber_tag_t($80);
LDAP_EXOP_X_WHO_AM_I = '1.3.6.1.4.1.4203.1.11.3';
LDAP_EXOP_X_CANCEL = '1.3.6.1.4.1.4203.666.6.3';
(* LDAP Features *)
LDAP_FEATURE_ALL_OP_ATTRS = '1.3.6.1.4.1.4203.1.5.1'; (* RFC 3673 *)
LDAP_FEATURE_OBJECTCLASS_ATTRS = '1.3.6.1.4.1.4203.1.5.2'; (* @objectClass - new number to be assigned *)
LDAP_FEATURE_ABSOLUTE_FILTERS = '1.3.6.1.4.1.4203.1.5.3'; (* (&) (|) *)
LDAP_FEATURE_LANGUAGE_TAG_OPTIONS = '1.3.6.1.4.1.4203.1.5.4';
LDAP_FEATURE_LANGUAGE_RANGE_OPTIONS = '1.3.6.1.4.1.4203.1.5.5';
LDAP_FEATURE_MODIFY_INCREMENT = '1.3.6.1.1.14';
(*
* specific LDAP instantiations of BER types we know about
*)
(* Overview of LBER tag construction
*
* Bits
* ______
* 8 7 | CLASS
* 0 0 = UNIVERSAL
* 0 1 = APPLICATION
* 1 0 = CONTEXT-SPECIFIC
* 1 1 = PRIVATE
* _____
* | 6 | DATA-TYPE
* 0 = PRIMITIVE
* 1 = CONSTRUCTED
* ___________
* | 5 ... 1 | TAG-NUMBER
*)
(* general stuff *)
LDAP_TAG_MESSAGE = ber_tag_t($30); (* constructed + 16 *)
LDAP_TAG_MSGID = ber_tag_t($02); (* integer *)
LDAP_TAG_LDAPDN = ber_tag_t($04); (* octet string *)
LDAP_TAG_LDAPCRED = ber_tag_t($04); (* octet string *)
LDAP_TAG_CONTROLS = ber_tag_t($a0); (* context specific + constructed + 0 *)
LDAP_TAG_REFERRAL = ber_tag_t($a3); (* context specific + constructed + 3 *)
LDAP_TAG_NEWSUPERIOR = ber_tag_t($80); (* context-specific + primitive + 0 *)
LDAP_TAG_EXOP_REQ_OID = ber_tag_t($80); (* context specific + primitive *)
LDAP_TAG_EXOP_REQ_VALUE = ber_tag_t($81); (* context specific + primitive *)
LDAP_TAG_EXOP_RES_OID = ber_tag_t($8a); (* context specific + primitive *)
LDAP_TAG_EXOP_RES_VALUE = ber_tag_t($8b); (* context specific + primitive *)
LDAP_TAG_IM_RES_OID = ber_tag_t($80); (* context specific + primitive *)
LDAP_TAG_IM_RES_VALUE = ber_tag_t($81); (* context specific + primitive *)
LDAP_TAG_SASL_RES_CREDS = ber_tag_t($87); (* context specific + primitive *)
(* possible operations a client can invoke *)
LDAP_REQ_BIND = ber_tag_t($60); (* application + constructed *)
LDAP_REQ_UNBIND = ber_tag_t($42); (* application + primitive *)
LDAP_REQ_SEARCH = ber_tag_t($63); (* application + constructed *)
LDAP_REQ_MODIFY = ber_tag_t($66); (* application + constructed *)
LDAP_REQ_ADD = ber_tag_t($68); (* application + constructed *)
LDAP_REQ_DELETE = ber_tag_t($4a); (* application + primitive *)
LDAP_REQ_MODDN = ber_tag_t($6c); (* application + constructed *)
LDAP_REQ_MODRDN = LDAP_REQ_MODDN;
LDAP_REQ_RENAME = LDAP_REQ_MODDN;
LDAP_REQ_COMPARE = ber_tag_t($6e); (* application + constructed *)
LDAP_REQ_ABANDON = ber_tag_t($50); (* application + primitive *)
LDAP_REQ_EXTENDED = ber_tag_t($77); (* application + constructed *)
(* possible result types a server can return *)
LDAP_RES_BIND = ber_tag_t($61); (* application + constructed *)
LDAP_RES_SEARCH_ENTRY = ber_tag_t($64); (* application + constructed *)
LDAP_RES_SEARCH_REFERENCE = ber_tag_t($73); (* V3: application + constructed *)
LDAP_RES_SEARCH_RESULT = ber_tag_t($65); (* application + constructed *)
LDAP_RES_MODIFY = ber_tag_t($67); (* application + constructed *)
LDAP_RES_ADD = ber_tag_t($69); (* application + constructed *)
LDAP_RES_DELETE = ber_tag_t($6b); (* application + constructed *)
LDAP_RES_MODDN = ber_tag_t($6d); (* application + constructed *)
LDAP_RES_MODRDN = LDAP_RES_MODDN; (* application + constructed *)
LDAP_RES_RENAME = LDAP_RES_MODDN; (* application + constructed *)
LDAP_RES_COMPARE = ber_tag_t($6f); (* application + constructed *)
LDAP_RES_EXTENDED = ber_tag_t($78); (* V3: application + constructed *)
LDAP_RES_INTERMEDIATE = ber_tag_t($79); (* V3+: application + constructed *)
LDAP_RES_ANY = -1;
LDAP_RES_UNSOLICITED = 0;
(* sasl methods *)
LDAP_SASL_SIMPLE = pcchar(0);
LDAP_SASL_NULL = '';
(* authentication methods available *)
LDAP_AUTH_NONE = ber_tag_t($00); (* no authentication *)
LDAP_AUTH_SIMPLE = ber_tag_t($80); (* context specific + primitive *)
LDAP_AUTH_SASL = ber_tag_t($a3); (* context specific + constructed *)
LDAP_AUTH_KRBV4 = ber_tag_t($ff); (* means do both of the following *)
LDAP_AUTH_KRBV41 = ber_tag_t($81); (* context specific + primitive *)
LDAP_AUTH_KRBV42 = ber_tag_t($82); (* context specific + primitive *)
(* filter types *)
LDAP_FILTER_AND = ber_tag_t($a0); (* context specific + constructed *)
LDAP_FILTER_OR = ber_tag_t($a1); (* context specific + constructed *)
LDAP_FILTER_NOT = ber_tag_t($a2); (* context specific + constructed *)
LDAP_FILTER_EQUALITY = ber_tag_t($a3); (* context specific + constructed *)
LDAP_FILTER_SUBSTRINGS = ber_tag_t($a4); (* context specific + constructed *)
LDAP_FILTER_GE = ber_tag_t($a5); (* context specific + constructed *)
LDAP_FILTER_LE = ber_tag_t($a6); (* context specific + constructed *)
LDAP_FILTER_PRESENT = ber_tag_t($87); (* context specific + primitive *)
LDAP_FILTER_APPROX = ber_tag_t($a8); (* context specific + constructed *)
LDAP_FILTER_EXT = ber_tag_t($a9); (* context specific + constructed *)
(* extended filter component types *)
LDAP_FILTER_EXT_OID = ber_tag_t($81); (* context specific *)
LDAP_FILTER_EXT_TYPE = ber_tag_t($82); (* context specific *)
LDAP_FILTER_EXT_VALUE = ber_tag_t($83); (* context specific *)
LDAP_FILTER_EXT_DNATTRS = ber_tag_t($84); (* context specific *)
(* substring filter component types *)
LDAP_SUBSTRING_INITIAL = ber_tag_t($80); (* context specific *)
LDAP_SUBSTRING_ANY = ber_tag_t($81); (* context specific *)
LDAP_SUBSTRING_FINAL = ber_tag_t($82); (* context specific *)
(* search scopes *)
LDAP_SCOPE_DEFAULT = ber_int_t(-1); (* OpenLDAP extension *)
LDAP_SCOPE_BASE = ber_int_t($0000);
LDAP_SCOPE_BASEOBJECT = LDAP_SCOPE_BASE;
LDAP_SCOPE_ONELEVEL = ber_int_t($0001);
LDAP_SCOPE_ONE = LDAP_SCOPE_ONELEVEL;
LDAP_SCOPE_SUBTREE = ber_int_t($0002);
LDAP_SCOPE_SUB = LDAP_SCOPE_SUBTREE;
(*
* possible error codes we can return
*)
function LDAP_RANGE(n, x, y: ber_int_t): Boolean;
const
LDAP_SUCCESS = $00;
LDAP_OPERATIONS_ERROR = $01;
LDAP_PROTOCOL_ERROR = $02;
LDAP_TIMELIMIT_EXCEEDED = $03;
LDAP_SIZELIMIT_EXCEEDED = $04;
LDAP_COMPARE_FALSE = $05;
LDAP_COMPARE_TRUE = $06;
LDAP_AUTH_METHOD_NOT_SUPPORTED = $07;
LDAP_STRONG_AUTH_NOT_SUPPORTED = LDAP_AUTH_METHOD_NOT_SUPPORTED;
LDAP_STRONG_AUTH_REQUIRED = $08;
LDAP_PARTIAL_RESULTS = $09; (* LDAPv2+ (not LDAPv3) *)
LDAP_REFERRAL = $0a; (* LDAPv3 *)
LDAP_ADMINLIMIT_EXCEEDED = $0b; (* LDAPv3 *)
LDAP_UNAVAILABLE_CRITICAL_EXTENSION = $0c; (* LDAPv3 *)
LDAP_CONFIDENTIALITY_REQUIRED = $0d; (* LDAPv3 *)
LDAP_SASL_BIND_IN_PROGRESS = $0e; (* LDAPv3 *)
function LDAP_ATTR_ERROR(n: ber_int_t): Boolean;
const
LDAP_NO_SUCH_ATTRIBUTE = $10;
LDAP_UNDEFINED_TYPE = $11;
LDAP_INAPPROPRIATE_MATCHING = $12;
LDAP_CONSTRAINT_VIOLATION = $13;
LDAP_TYPE_OR_VALUE_EXISTS = $14;
LDAP_INVALID_SYNTAX = $15;
function LDAP_NAME_ERROR(n: ber_int_t): Boolean;
const
LDAP_NO_SUCH_OBJECT = $20;
LDAP_ALIAS_PROBLEM = $21;
LDAP_INVALID_DN_SYNTAX = $22;
LDAP_IS_LEAF = $23; (* not LDAPv3 *)
LDAP_ALIAS_DEREF_PROBLEM = $24;
function LDAP_SECURITY_ERROR(n: ber_int_t): Boolean;
const
LDAP_PROXY_AUTHZ_FAILURE = $2F; (* LDAPv3 proxy authorization *)
LDAP_INAPPROPRIATE_AUTH = $30;
LDAP_INVALID_CREDENTIALS = $31;
LDAP_INSUFFICIENT_ACCESS = $32;
function LDAP_SERVICE_ERROR(n: ber_int_t): Boolean;
const
LDAP_BUSY = $33;
LDAP_UNAVAILABLE = $34;
LDAP_UNWILLING_TO_PERFORM = $35;
LDAP_LOOP_DETECT = $36;
function LDAP_UPDATE_ERROR(n: ber_int_t): Boolean;
const
LDAP_NAMING_VIOLATION = $40;
LDAP_OBJECT_CLASS_VIOLATION = $41;
LDAP_NOT_ALLOWED_ON_NONLEAF = $42;
LDAP_NOT_ALLOWED_ON_RDN = $43;
LDAP_ALREADY_EXISTS = $44;
LDAP_NO_OBJECT_CLASS_MODS = $45;
LDAP_RESULTS_TOO_LARGE = $46; (* CLDAP *)
LDAP_AFFECTS_MULTIPLE_DSAS = $47; (* LDAPv3 *)
LDAP_OTHER = $50;
(* for the LDAP Sync operation *)
LDAP_SYNC_REFRESH_REQUIRED = $4100;
(* for the LDAP No-Op control *)
LDAP_NO_OPERATION = $410e;
(* for the Assertion control *)
LDAP_ASSERTION_FAILED = $410f;
(* for the Cancel operation *)
LDAP_CANCELLED = $4110;
LDAP_NO_SUCH_OPERATION = $4111;
LDAP_TOO_LATE = $4112;
LDAP_CANNOT_CANCEL = $4113;
(* API Error Codes
*
* Based on draft-ietf-ldap-c-api-xx
* but with new negative code values
*)
function LDAP_API_ERROR(n: ber_int_t): Boolean;
function LDAP_API_RESULT(n: ber_int_t): Boolean;
const
LDAP_SERVER_DOWN = -1;
LDAP_LOCAL_ERROR = -2;
LDAP_ENCODING_ERROR = -3;
LDAP_DECODING_ERROR = -4;
LDAP_TIMEOUT = -5;
LDAP_AUTH_UNKNOWN = -6;
LDAP_FILTER_ERROR = -7;
LDAP_USER_CANCELLED = -8;
LDAP_PARAM_ERROR = -9;
LDAP_NO_MEMORY = -10;
LDAP_CONNECT_ERROR = -11;
LDAP_NOT_SUPPORTED = -12;
LDAP_CONTROL_NOT_FOUND = -13;
LDAP_NO_RESULTS_RETURNED = -14;
LDAP_MORE_RESULTS_TO_RETURN = -15;
LDAP_CLIENT_LOOP = -16;
LDAP_REFERRAL_LIMIT_EXCEEDED = -17;
(*
* This structure represents both ldap messages and ldap responses.
* These are really the same, except in the case of search responses,
* where a response has multiple messages.
*)
type
//typedef struct ldapmsg LDAPMessage;
pldapmsg = Pointer;
PPLDAPMessage = ^PLDAPMessage;
PLDAPMessage = pldapmsg;
(* for modifications *)
const
LDAP_MOD_OP = $0007;
LDAP_MOD_ADD = $0000;
LDAP_MOD_DELETE = $0001;
LDAP_MOD_REPLACE = $0002;
LDAP_MOD_INCREMENT = $0003; (* OpenLDAP extension *)
LDAP_MOD_BVALUES = $0080;
type
PPPLDAPMod = ^PPLDAPMod;
PPLDAPMod = ^PLDAPMod;
PLDAPMod = ^LDAPMod;
LDAPMod = record
mod_op : cint;
(* IMPORTANT: do not use code 0x1000 (or above),
* it is used internally by the backends!
* (see ldap/servers/slapd/slap.h)
*)
mod_type : pcchar;
case cint of
0: (mod_vals : record
case cint of
0: (modv_strvals : ppcchar);
1: (modv_bvals : PPBerval);
end);
1: (case cint of
0: (mod_values : ppcchar);
1: (mod_bvalues : PPBerval));
end;
(*
* structure representing an ldap session which can
* encompass connections to multiple servers (in the
* face of referrals).
*)
PLDAP = Pointer;
const
LDAP_DEREF_NEVER = $00;
LDAP_DEREF_SEARCHING = $01;
LDAP_DEREF_FINDING = $02;
LDAP_DEREF_ALWAYS = $03;
LDAP_NO_LIMIT = 0;
(* how many messages to retrieve results for *)
LDAP_MSG_ONE = $00;
LDAP_MSG_ALL = $01;
LDAP_MSG_RECEIVED = $02;
(*
* types for ldap URL handling
*)
type
pldap_url_desc = ^ldap_url_desc;
ldap_url_desc = record
lud_next : pldap_url_desc;
lud_scheme : pcchar;
lud_host : pcchar;
lud_port : cint;
lud_dn : pcchar;
lud_attrs : ppcchar;
lud_scope : cint;
lud_filter : pcchar;
lud_exts : pcchar;
lud_crit_exts : cint;
end;
PLDAPURLDesc = ^LDAPURLDesc;
LDAPURLDesc = ldap_url_desc;
const
LDAP_URL_SUCCESS = $00; (* Success *)
LDAP_URL_ERR_MEM = $01; (* can't allocate memory space *)
LDAP_URL_ERR_PARAM = $02; (* parameter is bad *)
LDAP_URL_ERR_BADSCHEME = $03; (* URL doesn't begin with "ldap[si]://" *)
LDAP_URL_ERR_BADENCLOSURE = $04; (* URL is missing trailing ">" *)
LDAP_URL_ERR_BADURL = $05; (* URL is bad *)
LDAP_URL_ERR_BADHOST = $06; (* host port is bad *)
LDAP_URL_ERR_BADATTRS = $07; (* bad (or missing) attributes *)
LDAP_URL_ERR_BADSCOPE = $08; (* scope string is invalid (or missing) *)
LDAP_URL_ERR_BADFILTER = $09; (* bad or missing filter *)
LDAP_URL_ERR_BADEXTS = $0a; (* bad or missing extensions *)
(*
* The API draft spec says we should declare (or cause to be declared)
* 'struct timeval'. We don't. See IETF LDAPext discussions.
*)
type
ptimeval = Pointer;
(*
* in options.c:
*)
function ldap_get_option(
ld : PLDAP;
option : cint;
outvalue : Pointer
): cint; cdecl; external;
function ldap_set_option(
ld : PLDAP;
option : cint;
const invalue : Pointer
): cint; cdecl; external;
(* V3 REBIND Function Callback Prototype *)
type
LDAP_REBIND_PROC = function(ld: PLDAP; const url: pcchar; request: ber_tag_t; msgid: ber_int_t; params: Pointer): cint; cdecl;
function ldap_set_rebind_proc(
ld : PLDAP;
rebind_proc : LDAP_REBIND_PROC;
params : Pointer
): cint; cdecl; external;
(* V3 referral selection Function Callback Prototype *)
type
LDAP_NEXTREF_PROC = function(ld: PLDAP; refsp: pppcchar; cntp: pcint; params: Pointer): cint; cdecl;
function ldap_set_nextref_proc(
ld : PLDAP;
nextref_proc : LDAP_NEXTREF_PROC;
params : Pointer
): cint; cdecl; external;
(*
* in controls.c:
*)
function ldap_create_control(
const requestOID: pcchar;
ber : PBerElement;
iscritical : cint;
var ctrlp : PLDAPControl
): cint; cdecl; external;
function ldap_find_control(
const oid : pcchar;
ctrls : PPLDAPControl
): PLDAPControl; cdecl; external;
procedure ldap_control_free(
ctrl : PLDAPControl
); cdecl; external;
procedure ldap_controls_free(
ctrls : PPLDAPControl
); cdecl; external;
(*
* in dnssrv.c:
*)
function ldap_domain2dn(
const domain : pcchar;
var dn : pcchar
): cint; cdecl; external;
function ldap_dn2domain(
const dn : pcchar;
var domain : pcchar
): cint; cdecl; external;
function ldap_domain2hostlist(
const domain : pcchar;
var hostlist : pcchar
): cint; cdecl; external;
(*
* in extended.c:
*)
function ldap_extended_operation(
ld : PLDAP;
const reqoid : pcchar;
reqdata : PBerval;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_extended_operation_s(
ld : PLDAP;
const reqoid : pcchar;
reqdata : PBerval;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
var retoidp : pcchar;
var retdatap : PBerval
): cint; cdecl; external;
function ldap_parse_extended_result(
ld : PLDAP;
res : PLDAPMessage;
var retoidp : pcchar;
var retdatap : PBerval;
freeit : cbool
): cint; cdecl; external;
function ldap_parse_intermediate(
ld : PLDAP;
res : PLDAPMessage;
var retoidp : pcchar;
var retdatap : PBerval;
serverctrls : PPPLDAPControl;
freeit : cbool
): cint; cdecl; external;
(*
* in groupings.c:
*)
(*#ifdef LDAP_EXOP_GROUPING_CREATE
LDAP_F( int )
ldap_grouping_create LDAP_P((
LDAP *ld,
LDAP_CONST cchar *grpoid,
struct berval *grpdata,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp ));
LDAP_F( int )
ldap_grouping_create_s LDAP_P((
LDAP *ld,
LDAP_CONST cchar *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 cchar *grpoid,
struct berval *grpdata,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp ));
LDAP_F( int )
ldap_grouping_end_s LDAP_P((
LDAP *ld,
LDAP_CONST cchar *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 cchar *grpoid,
struct berval *grpdata,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp ));
LDAP_F( int )
ldap_grouping_action_operation_s LDAP_P((
LDAP *ld,
LDAP_CONST cchar *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:
*)
function ldap_abandon_ext(
ld : PLDAP;
msgid : cint;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in add.c:
*)
function ldap_add_ext(
ld : PLDAP;
const dn : pcchar;
attrs : PPLDAPMod;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_add_ext_s(
ld : PLDAP;
const dn : pcchar;
attrs : PPLDAPMod;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in sasl.c:
*)
function ldap_sasl_bind(
ld : PLDAP;
const dn : pcchar;
const mechanism : pcchar;
cred : PBerval;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_sasl_bind_s(
ld : PLDAP;
const dn : pcchar;
const mechanism : pcchar;
cred : PBerval;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
servercredp : PPBerval
): cint; cdecl; external;
(* Interaction flags (should be passed about in a control)
* Automatic (default): use defaults, prompt otherwise
* Interactive: prompt always
* Quiet: never prompt
*)
const
LDAP_SASL_AUTOMATIC = 0;
LDAP_SASL_INTERACTIVE = 1;
LDAP_SASL_QUIET = 2;
(*
* V3 SASL Interaction Function Callback Prototype
* when using Cyrus SASL, interact is pointer to sasl_interact_t
* should likely passed in a control (and provided controls)
*)
type
LDAP_SASL_INTERACT_PROC = function(ld: PLDAP; flags: cuint; defaults, interact: Pointer): cint; cdecl;
function ldap_sasl_interactive_bind_s(
ld : PLDAP;
const dn : pcchar;
const mechanism : pcchar;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
flags : cuint;
proc : LDAP_SASL_INTERACT_PROC;
defaults : Pointer
): cint; cdecl; external;
function ldap_parse_sasl_bind_result(
ld : PLDAP;
res : PLDAPMessage;
var servercredp : PBerval;
freeit : cbool
): cint; cdecl; external;
(*
* in compare.c:
*)
function ldap_compare_ext(
ld : PLDAP;
const dn : pcchar;
const attr : pcchar;
bvalue : PBerval;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_compare_ext_s(
ld : PLDAP;
const dn : pcchar;
const attr : pcchar;
bvalue : PBerval;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in delete.c:
*)
function ldap_delete_ext(
ld : PLDAP;
const dn : pcchar;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_delete_ext_s(
ld : PLDAP;
const dn : pcchar;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in error.c:
*)
function ldap_parse_result(
ld : PLDAP;
res : PLDAPMessage;
errcodep : pcint;
matcheddnp : ppcchar;
errmsgp : ppcchar;
referralsp : pppcchar;
serverctrls : PPPLDAPControl;
freeit : cbool
): cint; cdecl; external;
function ldap_err2string(
err : cint
): pcchar; cdecl; external;
(*
* in modify.c:
*)
function ldap_modify_ext(
ld : PLDAP;
const dn : pcchar;
mods : PPLDAPMod;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_modify_ext_s(
ld : PLDAP;
const dn : pcchar;
mods : PPLDAPMod;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in modrdn.c:
*)
function ldap_rename(
ld : PLDAP;
const dn : pcchar;
const newrdn : pcchar;
const newSuperior: pcchar;
deleteoldrdn : cbool;
sctrls : PPLDAPControl;
cctrls : PPPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_rename_s(
ld : PLDAP;
const dn : pcchar;
const newrdn : pcchar;
const newSuperior: pcchar;
deleteoldrdn : cbool;
sctrls : PPLDAPControl;
cctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in open.c:
*)
function ldap_create(
var ld : PLDAP
): cint; cdecl; external;
function ldap_initialize(
var ld : PLDAP;
const url : pcchar
): cint; cdecl; external;
(*
* in tls.c
*)
function ldap_tls_inplace(
ld : PLDAP
): cint; cdecl; external;
function ldap_install_tls(
ld : PLDAP
): cint; cdecl; external;
function ldap_start_tls(
ld : PLDAP;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_start_tls_s(
ld : PLDAP;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in messages.c:
*)
function ldap_first_message(
ld : PLDAP;
chain : PLDAPMessage
): PLDAPMessage; cdecl; external;
function ldap_next_message(
ld : PLDAP;
msg : PLDAPMessage
): PLDAPMessage; cdecl; external;
function ldap_count_messages(
ld : PLDAP;
chain : PLDAPMessage
): cint; cdecl; external;
(*
* in references.c:
*)
function ldap_first_reference(
ld : PLDAP;
chain : PLDAPMessage
): PLDAPMessage; cdecl; external;
function ldap_next_reference(
ld : PLDAP;
ref : PLDAPMessage
): PLDAPMessage; cdecl; external;
function ldap_count_references(
ld : PLDAP;
chain : PLDAPMessage
): cint; cdecl; external;
function ldap_parse_reference(
ld : PLDAP;
ref : PLDAPMessage;
var referralsp : ppcchar;
serverctrls : PPPLDAPControl;
freeit : cbool
): cint; cdecl; external;
(*
* in getentry.c:
*)
function ldap_first_entry(
ld : PLDAP;
chain : PLDAPMessage
): PLDAPMessage; cdecl; external;
function ldap_next_entry(
ld : PLDAP;
entry : PLDAPMessage
): PLDAPMessage; cdecl; external;
function ldap_count_entries(
ld : PLDAP;
chain : PLDAPMessage
): cint; cdecl; external;
function ldap_get_entry_controls(
ld : PLDAP;
entry : PLDAPMessage;
var serverctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in addentry.c
*)
function ldap_delete_result_entry(
list : PPLDAPMessage;
e : PLDAPMessage
): PLDAPMessage; cdecl; external;
procedure ldap_add_result_entry(
list : PPLDAPMessage;
e : PLDAPMessage
); cdecl; external;
(*
* in getdn.c
*)
function ldap_get_dn(
ld : PLDAP;
entry : PLDAPMessage
): pcchar; cdecl; external;
const
LDAP_AVA_NULL = $0000;
LDAP_AVA_STRING = $0001;
LDAP_AVA_BINARY = $0002;
LDAP_AVA_NONPRINTABLE = $0004;
LDAP_AVA_FREE_ATTR = $0010;
LDAP_AVA_FREE_VALUE = $0020;
type
pldap_ava = ^ldap_ava;
ldap_ava = record
la_attr : berval;
la_value : berval;
la_flags : cuint;
la_private : Pointer;
end;
PLDAPAVA = ^LDAPAVA;
LDAPAVA = ldap_ava;
PLDAPRDN = ^LDAPRDN;
LDAPRDN = ^PLDAPAVA;
PLDAPDN = ^LDAPDN;
LDAPDN = ^LDAPRDN;
const
(* DN formats *)
LDAP_DN_FORMAT_LDAP = $0000;
LDAP_DN_FORMAT_LDAPV3 = $0010;
LDAP_DN_FORMAT_LDAPV2 = $0020;
LDAP_DN_FORMAT_DCE = $0030;
LDAP_DN_FORMAT_UFN = $0040; (* dn2str only *)
LDAP_DN_FORMAT_AD_CANONICAL = $0050; (* dn2str only *)
LDAP_DN_FORMAT_LBER = $00F0; (* for testing only *)
LDAP_DN_FORMAT_MASK = $00F0;
(* DN flags *)
LDAP_DN_PRETTY = $0100;
LDAP_DN_SKIP = $0200;
LDAP_DN_P_NOLEADTRAILSPACES = $1000;
LDAP_DN_P_NOSPACEAFTERRDN = $2000;
LDAP_DN_PEDANTIC = $F000;
procedure ldap_rdnfree(rdn: LDAPRDN); cdecl; external;
procedure ldap_dnfree(rdn: LDAPDN); cdecl; external;
function ldap_bv2dn(
bv : PBerval;
var dn : LDAPDN;
flags : cuint
): cint; cdecl; external;
function ldap_str2dn(
const str : pcchar;
var dn : LDAPDN;
flags : cuint
): cint; cdecl; external;
function ldap_dn2bv(
dn : LDAPDN;
bv : PBerval;
flags : cuint
): cint; cdecl; external;
function ldap_dn2str(
dn : LDAPDN;
var str : pcchar;
flags : cuint
): cint; cdecl; external;
function ldap_bv2rdn(
bv : PBerval;
var rdn : LDAPRDN;
var next : pcchar;
flags : cuint
): cint; cdecl; external;
function ldap_str2rdn(
const str : pcchar;
var rdn : LDAPRDN;
var next : pcchar;
flags : cuint
): cint; cdecl; external;
function ldap_rdn2bv(
rdn : LDAPRDN;
bv : PBerval;
flags : cuint
): cint; cdecl; external;
function ldap_rdn2str(
rdn : LDAPRDN;
var str : pcchar;
flags : cuint
): cint; cdecl; external;
function ldap_dn_normalize(
const _in : pcchar;
iflags : cuint;
var _out : pcchar;
oflags : cuint
): cint; cdecl; external;
type
LDAPDN_rewrite_func = function(dn: LDAPDN; flags: cuint; ctx: Pointer): cint; cdecl;
function ldap_X509dn2bv(
x509_name : Pointer;
dn : PBerval;
func : LDAPDN_rewrite_func;
flags : cuint
): cint; cdecl; external;
function ldap_get_dn_ber(
ld : PLDAP;
e : PLDAPMessage;
var berout : PBerElement;
dn : PBerval
): cint; cdecl; external;
function ldap_get_attribute_ber(
ld : PLDAP;
e : PLDAPMessage;
ber : PBerElement;
attr : PBerval;
var vals : PBerval
): cint; cdecl; external;
(*
* in getattr.c
*)
function ldap_first_attribute(
ld : PLDAP;
entry : PLDAPMessage;
var ber : PBerElement
): pcchar; cdecl; external;
function ldap_next_attribute(
ld : PLDAP;
entry : PLDAPMessage;
ber : PBerElement
): pcchar; cdecl; external;
(*
* in getvalues.c
*)
function ldap_get_values_len(
ld : PLDAP;
entry : PLDAPMessage;
const target : pcchar
): PPBerval; cdecl; external;
function ldap_count_values_len(
vals : PPBerval
): cint; cdecl; external;
procedure ldap_value_free_len(
vals : PPBerval
); cdecl; external;
(*
* in result.c:
*)
function ldap_result(
ld : PLDAP;
msgid : cint;
all : cint;
timeout : ptimeval;
var result : PLDAPMessage
): cint; cdecl; external;
function ldap_msgtype(
lm : PLDAPMessage
): cint; cdecl; external;
function ldap_msgid(
lm : PLDAPMessage
): cint; cdecl; external;
function ldap_msgfree(
lm : PLDAPMessage
): cint; cdecl; external;
function ldap_msgdelete(
ld : PLDAP;
msgid : cint
): cint; cdecl; external;
(*
* in search.c:
*)
function ldap_search_ext(
ld : PLDAP;
const base : pcchar;
scope : cint;
const filter : pcchar;
attrs : ppcchar;
attrsonly : cbool;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
timout : ptimeval;
sizelimit : cint;
var msgidp : cint
): cint; cdecl; external;
function ldap_search_ext_s(
ld : PLDAP;
const base : pcchar;
scope : cint;
const filter : pcchar;
attrs : ppcchar;
attrsonly : cbool;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl;
timout : ptimeval;
sizelimit : cint;
var res : PLDAPMessage
): cint; cdecl; external;
(*
* in unbind.c
*)
function ldap_unbind_ext(
ld : PLDAP;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl
): cint; cdecl; external;
function ldap_unbind_ext_s(
ld : PLDAP;
serverctrls : PPLDAPControl;
clientctrls : PPLDAPControl
): cint; cdecl; external;
(*
* in filter.c
*)
function ldap_put_vrFilter(
ber : PBerElement;
const vrf : pcchar
): cint; cdecl; external;
(*
* in free.c
*)
function ldap_memalloc(
s : ber_len_t
): Pointer; cdecl; external;
function ldap_memrealloc(
p : Pointer;
s : ber_len_t
): Pointer; cdecl; external;
function ldap_memcalloc(
n : ber_len_t;
s : ber_len_t
): Pointer; cdecl; external;
procedure ldap_memfree(
p : Pointer
); cdecl; external;
procedure ldap_memvfree(
v : PPointer
); cdecl; external;
function ldap_strdup(
const str : pcchar
): pcchar; cdecl; external;
procedure ldap_mods_free(
mods : PPLDAPMod;
freemods : cbool
); cdecl; external;
(*
* in url.c
*)
function ldap_is_ldap_url(
const url : pcchar
): cint; cdecl; external;
function ldap_is_ldaps_url(
const url : pcchar
): cint; cdecl; external;
function ldap_is_ldapi_url(
const url : pcchar
): cint; cdecl; external;
function ldap_url_parse(
const url : pcchar;
var ludpp : PLDAPURLDesc
): cint; cdecl; external;
function ldap_url_desc2str(
ludpp : PLDAPURLDesc
): pcchar; cdecl; external;
procedure ldap_free_urldesc(
ludpp : PLDAPURLDesc
); cdecl; external;
(*
* LDAP Cancel Extended Operation <draft-zeilenga-ldap-cancel-xx.txt>
* in cancel.c
*)
const
LDAP_API_FEATURE_CANCEL = 1000;
function ldap_cancel(
ld : PLDAP;
cancelid : cint;
sctrl : PPLDAPControl;
cctrl : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_cancel_s(
ld : PLDAP;
cancelid : cint;
sctrl : PPLDAPControl;
cctrl : PPLDAPControl
): cint; cdecl; external;
(*
* LDAP Server Side Sort
* in sortctrl.c
*)
const
LDAP_API_FEATURE_SERVER_SIDE_SORT = 1000;
(* structure for a sort-key *)
type
PPLDAPSortKey = ^PLDAPSortKey;
PLDAPSortKey = ^LDAPSortKey;
LDAPSortKey = record
attributeType : pcchar;
orderingRule : pcchar;
reverseOrder : cbool;
end;
function ldap_create_sort_keylist(
var sortKeyList : PPLDAPSortKey;
keyString : pcchar
): cint; cdecl; external;
procedure ldap_free_sort_keylist(
sortKeyList : PPLDAPSortKey
); cdecl; external;
function ldap_create_sort_control(
ld : PLDAP;
keyList : PPLDAPSortKey;
ctl_iscritical : cbool;
var ctrlp : PLDAPControl
): cint; cdecl; external;
function ldap_parse_sort_control(
ld : PLDAP;
ctrlp : PPLDAPControl;
var result : culong;
var attribute : pcchar
): cint; cdecl; external;
(*
* LDAP Virtual List View
* in vlvctrl.c
*)
const
LDAP_API_FEATURE_VIRTUAL_LIST_VIEW = 1000;
(* structure for virtual list *)
type
PLDAPVLVInfo = ^LDAPVLVInfo;
LDAPVLVInfo = record
ldvlv_version : cint;
ldvlv_before_count : culong;
ldvlv_after_count : culong;
ldvlv_offset : culong;
ldvlv_count : culong;
ldvlv_attrvalue : PBerval;
ldvlv_context : PBerval;
ldvlv_extradata : Pointer;
end;
function ldap_create_vlv_control(
ld : PLDAP;
ldvlistp : PLDAPVLVInfo;
var ctrlp : PLDAPControl
): cint; cdecl; external;
function ldap_parse_vlv_control(
ld : PLDAP;
ctrls : PPLDAPControl;
var target_posp : culong;
var list_countp : culong;
var contextp : PBerval;
var errcodep : cint
): cint; cdecl; external;
(*
* 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
*)
const
LDAP_API_FEATURE_WHOAMI = 1000;
function ldap_parse_whoami(
ld : PLDAP;
res : PLDAPMessage;
var authzid : PBerval
): cint; cdecl; external;
function ldap_whoami(
ld : PLDAP;
sctrl : PPLDAPControl;
cctrl : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_whoami_s(
ld : PLDAP;
var authzid : PBerval;
sctrl : PPLDAPControl;
cctrl : PPLDAPControl
): cint; cdecl; external;
(*
* LDAP Password Modify
* in passwd.c
*)
const
LDAP_API_FEATURE_PASSWD_MODIFY = 1000;
function ldap_parse_passwd(
ld : PLDAP;
res : PLDAPMessage;
newpasswd : PBerval
): cint; cdecl; external;
function ldap_passwd(
ld : PLDAP;
user : PBerval;
oldpw : PBerval;
newpw : PBerval;
sctrl : PPLDAPControl;
cctrl : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_passwd_s(
ld : PLDAP;
user : PBerval;
oldpw : PBerval;
newpw : PBerval;
newpasswd : PBerval;
sctrl : PPLDAPControl;
cctrl : PPLDAPControl
): cint; cdecl; external;
(*
* LDAP Password Policy controls
* in ppolicy.c
*)
(*
#ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST
#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 cchar * )
ldap_passwordpolicy_err2txt LDAP_P(( LDAPPasswordPolicyError ));
#endif*)
(*
* hacks for NTLM
*)
const
LDAP_AUTH_NTLM_REQUEST = ber_tag_t($8a);
LDAP_AUTH_NTLM_RESPONSE = ber_tag_t($8b);
function ldap_ntlm_bind(
ld : PLDAP;
const dn : pcchar;
tag : ber_tag_t;
cred : PBerval;
sctrl : PPLDAPControl;
cctrl : PPLDAPControl;
var msgidp : cint
): cint; cdecl; external;
function ldap_parse_ntlm_bind_result(
ld : PLDAP;
res : PLDAPMessage;
challenge : PBerval
): cint; cdecl; external;