blob: 78578dd51dd2708b74464ecbda11ccea01362e4a [file] [log] [blame]
/**
* Windows API header module
*
* Translated from MinGW Windows headers
*
* Authors: Stewart Gordon
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(DRUNTIMESRC src/core/sys/windows/_winldap.d)
*/
module core.sys.windows.winldap;
version (Windows):
@system:
version (ANSI) {} else version = Unicode;
/* Comment from MinGW
winldap.h - Header file for the Windows LDAP API
Written by Filip Navara <xnavara@volny.cz>
References:
The C LDAP Application Program Interface
http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt
Lightweight Directory Access Protocol Reference
http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
import core.sys.windows.schannel, core.sys.windows.winber;
import core.sys.windows.wincrypt, core.sys.windows.windef;
//align(4):
enum {
LDAP_VERSION1 = 1,
LDAP_VERSION2 = 2,
LDAP_VERSION3 = 3,
LDAP_VERSION = LDAP_VERSION2,
LDAP_VERSION_MIN = LDAP_VERSION2,
LDAP_VERSION_MAX = LDAP_VERSION3
}
/* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and
* LDAP_VENDOR_NAME_W respectively; similarly with other string constants
* defined in this module.
*/
const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation.";
enum LDAP_API_VERSION = 2004;
enum LDAP_VENDOR_VERSION = 510;
enum LDAP_API_INFO_VERSION = 1;
enum LDAP_FEATURE_INFO_VERSION = 1;
enum {
LDAP_SUCCESS = 0x00,
LDAP_OPT_SUCCESS = LDAP_SUCCESS,
LDAP_OPERATIONS_ERROR,
LDAP_PROTOCOL_ERROR,
LDAP_TIMELIMIT_EXCEEDED,
LDAP_SIZELIMIT_EXCEEDED,
LDAP_COMPARE_FALSE,
LDAP_COMPARE_TRUE,
LDAP_STRONG_AUTH_NOT_SUPPORTED,
LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED,
LDAP_STRONG_AUTH_REQUIRED,
LDAP_REFERRAL_V2,
LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2,
LDAP_REFERRAL,
LDAP_ADMIN_LIMIT_EXCEEDED,
LDAP_UNAVAILABLE_CRIT_EXTENSION,
LDAP_CONFIDENTIALITY_REQUIRED,
LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e
LDAP_NO_SUCH_ATTRIBUTE = 0x10,
LDAP_UNDEFINED_TYPE,
LDAP_INAPPROPRIATE_MATCHING,
LDAP_CONSTRAINT_VIOLATION,
LDAP_TYPE_OR_VALUE_EXISTS,
LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS,
LDAP_INVALID_SYNTAX, // = 0x15
LDAP_NO_SUCH_OBJECT = 0x20,
LDAP_ALIAS_PROBLEM,
LDAP_INVALID_DN_SYNTAX,
LDAP_IS_LEAF,
LDAP_ALIAS_DEREF_PROBLEM, // = 0x24
LDAP_INAPPROPRIATE_AUTH = 0x30,
LDAP_INVALID_CREDENTIALS,
LDAP_INSUFFICIENT_ACCESS,
LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS,
LDAP_BUSY,
LDAP_UNAVAILABLE,
LDAP_UNWILLING_TO_PERFORM,
LDAP_LOOP_DETECT, // = 0x36
LDAP_NAMING_VIOLATION = 0x40,
LDAP_OBJECT_CLASS_VIOLATION,
LDAP_NOT_ALLOWED_ON_NONLEAF,
LDAP_NOT_ALLOWED_ON_RDN,
LDAP_ALREADY_EXISTS,
LDAP_NO_OBJECT_CLASS_MODS,
LDAP_RESULTS_TOO_LARGE,
LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47
LDAP_OTHER = 0x50,
LDAP_SERVER_DOWN,
LDAP_LOCAL_ERROR,
LDAP_ENCODING_ERROR,
LDAP_DECODING_ERROR,
LDAP_TIMEOUT,
LDAP_AUTH_UNKNOWN,
LDAP_FILTER_ERROR,
LDAP_USER_CANCELLED,
LDAP_PARAM_ERROR,
LDAP_NO_MEMORY,
LDAP_CONNECT_ERROR,
LDAP_NOT_SUPPORTED,
LDAP_CONTROL_NOT_FOUND,
LDAP_NO_RESULTS_RETURNED,
LDAP_MORE_RESULTS_TO_RETURN,
LDAP_CLIENT_LOOP,
LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61
}
enum {
LDAP_PORT = 389,
LDAP_SSL_PORT = 636,
LDAP_GC_PORT = 3268,
LDAP_SSL_GC_PORT = 3269
}
enum void*
LDAP_OPT_OFF = null,
LDAP_OPT_ON = cast(void*) 1;
enum {
LDAP_OPT_API_INFO = 0x00,
LDAP_OPT_DESC,
LDAP_OPT_DEREF,
LDAP_OPT_SIZELIMIT,
LDAP_OPT_TIMELIMIT,
LDAP_OPT_THREAD_FN_PTRS,
LDAP_OPT_REBIND_FN,
LDAP_OPT_REBIND_ARG,
LDAP_OPT_REFERRALS,
LDAP_OPT_RESTART,
LDAP_OPT_SSL,
LDAP_OPT_TLS = LDAP_OPT_SSL,
LDAP_OPT_IO_FN_PTRS, // = 0x0b
LDAP_OPT_CACHE_FN_PTRS = 0x0d,
LDAP_OPT_CACHE_STRATEGY,
LDAP_OPT_CACHE_ENABLE,
LDAP_OPT_REFERRAL_HOP_LIMIT,
LDAP_OPT_PROTOCOL_VERSION,
LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION,
LDAP_OPT_SERVER_CONTROLS,
LDAP_OPT_CLIENT_CONTROLS, // = 0x13
LDAP_OPT_API_FEATURE_INFO = 0x15,
LDAP_OPT_HOST_NAME = 0x30,
LDAP_OPT_ERROR_NUMBER,
LDAP_OPT_ERROR_STRING,
LDAP_OPT_SERVER_ERROR,
LDAP_OPT_SERVER_EXT_ERROR, // = 0x34
LDAP_OPT_PING_KEEP_ALIVE = 0x36,
LDAP_OPT_PING_WAIT_TIME,
LDAP_OPT_PING_LIMIT, // = 0x38
LDAP_OPT_DNSDOMAIN_NAME = 0x3b,
LDAP_OPT_GETDSNAME_FLAGS = 0x3d,
LDAP_OPT_HOST_REACHABLE,
LDAP_OPT_PROMPT_CREDENTIALS,
LDAP_OPT_TCP_KEEPALIVE, // = 0x40
LDAP_OPT_REFERRAL_CALLBACK = 0x70,
LDAP_OPT_CLIENT_CERTIFICATE = 0x80,
LDAP_OPT_SERVER_CERTIFICATE, // = 0x81
LDAP_OPT_AUTO_RECONNECT = 0x91,
LDAP_OPT_SSPI_FLAGS,
LDAP_OPT_SSL_INFO,
LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO,
LDAP_OPT_REF_DEREF_CONN_PER_MSG,
LDAP_OPT_SIGN,
LDAP_OPT_ENCRYPT,
LDAP_OPT_SASL_METHOD,
LDAP_OPT_AREC_EXCLUSIVE,
LDAP_OPT_SECURITY_CONTEXT,
LDAP_OPT_ROOTDSE_CACHE // = 0x9a
}
enum {
LDAP_DEREF_NEVER,
LDAP_DEREF_SEARCHING,
LDAP_DEREF_FINDING,
LDAP_DEREF_ALWAYS
}
enum LDAP_NO_LIMIT = 0;
const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616";
// FIXME: check type (declared with U suffix in MinGW)
enum : uint {
LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20,
LDAP_CHASE_EXTERNAL_REFERRALS = 0x40
}
enum {
LDAP_SCOPE_DEFAULT = -1,
LDAP_SCOPE_BASE,
LDAP_SCOPE_ONELEVEL,
LDAP_SCOPE_SUBTREE
}
enum {
LDAP_MOD_ADD,
LDAP_MOD_DELETE,
LDAP_MOD_REPLACE,
LDAP_MOD_BVALUES = 0x80
}
enum : int {
LDAP_RES_BIND = 0x61,
LDAP_RES_SEARCH_ENTRY = 0x64,
LDAP_RES_SEARCH_RESULT = 0x65,
LDAP_RES_MODIFY = 0x67,
LDAP_RES_ADD = 0x69,
LDAP_RES_DELETE = 0x6b,
LDAP_RES_MODRDN = 0x6d,
LDAP_RES_COMPARE = 0x6f,
LDAP_RES_SEARCH_REFERENCE = 0x73,
LDAP_RES_EXTENDED = 0x78,
LDAP_RES_ANY = -1
}
enum {
LDAP_MSG_ONE,
LDAP_MSG_ALL,
LDAP_MSG_RECEIVED
}
const TCHAR[]
LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473",
LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474",
LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319",
LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9",
LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10",
LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037",
LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1";
enum {
LDAP_AUTH_NONE = 0x00U,
LDAP_AUTH_SIMPLE = 0x80U,
LDAP_AUTH_SASL = 0x83U,
LDAP_AUTH_OTHERKIND = 0x86U,
LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U,
LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U,
LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U,
LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U,
LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U,
LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U,
LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U,
LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE
}
enum {
LDAP_FILTER_AND = 0xa0,
LDAP_FILTER_OR,
LDAP_FILTER_NOT,
LDAP_FILTER_EQUALITY,
LDAP_FILTER_SUBSTRINGS,
LDAP_FILTER_GE,
LDAP_FILTER_LE, // = 0xa6
LDAP_FILTER_APPROX = 0xa8,
LDAP_FILTER_EXTENSIBLE,
LDAP_FILTER_PRESENT = 0x87
}
enum {
LDAP_SUBSTRING_INITIAL = 0x80,
LDAP_SUBSTRING_ANY,
LDAP_SUBSTRING_FINAL
}
// should be opaque structure
struct LDAP {
struct _ld_sp {
UINT_PTR sb_sd;
UCHAR[(10*ULONG.sizeof)+1] Reserved1;
ULONG_PTR sb_naddr;
UCHAR[(6*ULONG.sizeof)] Reserved2;
}
_ld_sp ld_sp;
PCHAR ld_host;
ULONG ld_version;
UCHAR ld_lberoptions;
int ld_deref;
int ld_timelimit;
int ld_sizelimit;
int ld_errno;
PCHAR ld_matched;
PCHAR ld_error;
}
alias LDAP* PLDAP;
// should be opaque structure
struct LDAPMessage {
ULONG lm_msgid;
ULONG lm_msgtype;
BerElement* lm_ber;
LDAPMessage* lm_chain;
LDAPMessage* lm_next;
ULONG lm_time;
}
alias LDAPMessage* PLDAPMessage;
struct LDAP_TIMEVAL {
LONG tv_sec;
LONG tv_usec;
}
alias LDAP_TIMEVAL* PLDAP_TIMEVAL;
struct LDAPAPIInfoA {
int ldapai_info_version;
int ldapai_api_version;
int ldapai_protocol_version;
char** ldapai_extensions;
char* ldapai_vendor_name;
int ldapai_vendor_version;
}
alias LDAPAPIInfoA* PLDAPAPIInfoA;
struct LDAPAPIInfoW {
int ldapai_info_version;
int ldapai_api_version;
int ldapai_protocol_version;
PWCHAR* ldapai_extensions;
PWCHAR ldapai_vendor_name;
int ldapai_vendor_version;
}
alias LDAPAPIInfoW* PLDAPAPIInfoW;
struct LDAPAPIFeatureInfoA {
int ldapaif_info_version;
char* ldapaif_name;
int ldapaif_version;
}
alias LDAPAPIFeatureInfoA* PLDAPAPIFeatureInfoA;
struct LDAPAPIFeatureInfoW {
int ldapaif_info_version;
PWCHAR ldapaif_name;
int ldapaif_version;
}
alias LDAPAPIFeatureInfoW* PLDAPAPIFeatureInfoW;
struct LDAPControlA {
PCHAR ldctl_oid;
BerValue ldctl_value;
BOOLEAN ldctl_iscritical;
}
alias LDAPControlA* PLDAPControlA;
struct LDAPControlW {
PWCHAR ldctl_oid;
BerValue ldctl_value;
BOOLEAN ldctl_iscritical;
}
alias LDAPControlW* PLDAPControlW;
/* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type
* and mod_vals, and macros are used to simulate anonymous unions in those
* structures.
*/
union mod_vals_u_tA {
PCHAR* modv_strvals;
BerValue** modv_bvals;
}
union mod_vals_u_tW {
PWCHAR* modv_strvals;
BerValue** modv_bvals;
}
struct LDAPModA {
ULONG mod_op;
PCHAR mod_type;
union {
mod_vals_u_tA mod_vals;
// The following members are defined as macros in MinGW.
PCHAR* mod_values;
BerValue** mod_bvalues;
}
}
alias LDAPModA* PLDAPModA;
struct LDAPModW {
ULONG mod_op;
PWCHAR mod_type;
union {
mod_vals_u_tW mod_vals;
// The following members are defined as macros in MinGW.
PWCHAR* mod_values;
BerValue** mod_bvalues;
}
}
alias LDAPModW* PLDAPModW;
/* Opaque structure
* http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp
*/
struct LDAPSearch;
alias LDAPSearch* PLDAPSearch;
struct LDAPSortKeyA {
PCHAR sk_attrtype;
PCHAR sk_matchruleoid;
BOOLEAN sk_reverseorder;
}
alias LDAPSortKeyA* PLDAPSortKeyA;
struct LDAPSortKeyW {
PWCHAR sk_attrtype;
PWCHAR sk_matchruleoid;
BOOLEAN sk_reverseorder;
}
alias LDAPSortKeyW* PLDAPSortKeyW;
/* MinGW defines these as immediate function typedefs, which don't translate
* well into D.
*/
extern (C) {
alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID,
PLDAP*) QUERYFORCONNECTION;
alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID,
PVOID, ULONG) NOTIFYOFNEWCONNECTION;
alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION;
alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx,
PCCERT_CONTEXT*) QUERYCLIENTCERT;
}
struct LDAP_REFERRAL_CALLBACK {
ULONG SizeOfCallbacks;
QUERYFORCONNECTION* QueryForConnection;
NOTIFYOFNEWCONNECTION* NotifyRoutine;
DEREFERENCECONNECTION* DereferenceRoutine;
}
alias LDAP_REFERRAL_CALLBACK* PLDAP_REFERRAL_CALLBACK;
struct LDAPVLVInfo {
int ldvlv_version;
uint ldvlv_before_count;
uint ldvlv_after_count;
uint ldvlv_offset;
uint ldvlv_count;
BerValue* ldvlv_attrvalue;
BerValue* ldvlv_context;
void* ldvlv_extradata;
}
/*
* Under Microsoft WinLDAP the function ldap_error is only stub.
* This macro uses LDAP structure to get error string and pass it to the user.
*/
private extern (C) int printf(const scope char* format, ...);
int ldap_perror(LDAP* handle, char* message) {
return printf("%s: %s\n", message, handle.ld_error);
}
/* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage
* attribute?
*/
extern (C) {
PLDAP ldap_initA(PCHAR, ULONG);
PLDAP ldap_initW(PWCHAR, ULONG);
PLDAP ldap_openA(PCHAR, ULONG);
PLDAP ldap_openW(PWCHAR, ULONG);
PLDAP cldap_openA(PCHAR, ULONG);
PLDAP cldap_openW(PWCHAR, ULONG);
ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*);
PLDAP ldap_sslinitA(PCHAR, ULONG, int);
PLDAP ldap_sslinitW(PWCHAR, ULONG, int);
ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*);
ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*);
BOOLEAN ldap_stop_tls_s(LDAP*);
ULONG ldap_get_optionA(LDAP*, int, void*);
ULONG ldap_get_optionW(LDAP*, int, void*);
ULONG ldap_set_optionA(LDAP*, int, void*);
ULONG ldap_set_optionW(LDAP*, int, void*);
ULONG ldap_control_freeA(LDAPControlA*);
ULONG ldap_control_freeW(LDAPControlW*);
ULONG ldap_controls_freeA(LDAPControlA**);
ULONG ldap_controls_freeW(LDAPControlW**);
ULONG ldap_free_controlsA(LDAPControlA**);
ULONG ldap_free_controlsW(LDAPControlW**);
ULONG ldap_sasl_bindA(LDAP*, PCSTR, PCSTR, BERVAL*, PLDAPControlA*,
PLDAPControlA*, int*);
ULONG ldap_sasl_bindW(LDAP*, PCWSTR, PCWSTR, BERVAL*, PLDAPControlW*,
PLDAPControlW*, int*);
ULONG ldap_sasl_bind_sA(LDAP*, PCSTR, PCSTR, BERVAL*, PLDAPControlA*,
PLDAPControlA*, PBERVAL*);
ULONG ldap_sasl_bind_sW(LDAP*, PCWSTR, PCWSTR, BERVAL*, PLDAPControlW*,
PLDAPControlW*, PBERVAL*);
ULONG ldap_simple_bindA(LDAP*, PSTR, PSTR);
ULONG ldap_simple_bindW(LDAP*, PWSTR, PWSTR);
ULONG ldap_simple_bind_sA(LDAP*, PSTR, PSTR);
ULONG ldap_simple_bind_sW(LDAP*, PWSTR, PWSTR);
ULONG ldap_unbind(LDAP*);
ULONG ldap_unbind_s(LDAP*);
ULONG ldap_search_extA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG,
PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, ULONG*);
ULONG ldap_search_extW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG,
PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*);
ULONG ldap_search_ext_sA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG,
PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, PLDAPMessage*);
ULONG ldap_search_ext_sW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG,
PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, PLDAPMessage*);
ULONG ldap_searchA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG);
ULONG ldap_searchW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG);
ULONG ldap_search_sA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG,
PLDAPMessage*);
ULONG ldap_search_sW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG,
PLDAPMessage*);
ULONG ldap_search_stA(LDAP*, PCSTR, ULONG, PCSTR, PZPSTR, ULONG,
LDAP_TIMEVAL*, PLDAPMessage*);
ULONG ldap_search_stW(LDAP*, PCWSTR, ULONG, PCWSTR, PZPWSTR, ULONG,
LDAP_TIMEVAL*, PLDAPMessage*);
ULONG ldap_compare_extA(LDAP*, PCSTR, PCSTR, PCSTR, BerValue*,
PLDAPControlA*, PLDAPControlA*, ULONG*);
ULONG ldap_compare_extW(LDAP*, PCWSTR, PCWSTR, PCWSTR, BerValue*,
PLDAPControlW*, PLDAPControlW*, ULONG*);
ULONG ldap_compare_ext_sA(LDAP*, PCSTR, PCSTR, PCSTR, BerValue*,
PLDAPControlA*, PLDAPControlA*);
ULONG ldap_compare_ext_sW(LDAP*, PCWSTR, PCWSTR, PCWSTR, BerValue*,
PLDAPControlW*, PLDAPControlW*);
ULONG ldap_compareA(LDAP*, PCSTR, PCSTR, PCSTR);
ULONG ldap_compareW(LDAP*, PCWSTR, PCWSTR, PCWSTR);
ULONG ldap_compare_sA(LDAP*, PCSTR, PCSTR, PCSTR);
ULONG ldap_compare_sW(LDAP*, PCWSTR, PCWSTR, PCWSTR);
ULONG ldap_modify_extA(LDAP*, PCSTR, LDAPModA**, PLDAPControlA*,
PLDAPControlA*, ULONG*);
ULONG ldap_modify_extW(LDAP*, PCWSTR, LDAPModW**, PLDAPControlW*,
PLDAPControlW*, ULONG*);
ULONG ldap_modify_ext_sA(LDAP*, PCSTR, LDAPModA**, PLDAPControlA*,
PLDAPControlA*);
ULONG ldap_modify_ext_sW(LDAP*, PCWSTR, LDAPModW**, PLDAPControlW*,
PLDAPControlW*);
ULONG ldap_modifyA(LDAP*, PSTR, LDAPModA**);
ULONG ldap_modifyW(LDAP*, PWSTR, LDAPModW**);
ULONG ldap_modify_sA(LDAP*, PSTR, LDAPModA**);
ULONG ldap_modify_sW(LDAP*, PWSTR, LDAPModW**);
ULONG ldap_rename_extA(LDAP*, PCSTR, PCSTR, PCSTR, INT, PLDAPControlA*,
PLDAPControlA*, ULONG*);
ULONG ldap_rename_extW(LDAP*, PCWSTR, PCWSTR, PCWSTR, INT, PLDAPControlW*,
PLDAPControlW*, ULONG*);
ULONG ldap_rename_ext_sA(LDAP*, PCSTR, PCSTR, PCSTR, INT,
PLDAPControlA*, PLDAPControlA*);
ULONG ldap_rename_ext_sW(LDAP*, PCWSTR, PCWSTR, PCWSTR, INT,
PLDAPControlW*, PLDAPControlW*);
ULONG ldap_add_extA(LDAP*, PCSTR, LDAPModA**, PLDAPControlA*,
PLDAPControlA*, ULONG*);
ULONG ldap_add_extW(LDAP*, PCWSTR, LDAPModW**, PLDAPControlW*,
PLDAPControlW*, ULONG*);
ULONG ldap_add_ext_sA(LDAP*, PCSTR, LDAPModA**, PLDAPControlA*,
PLDAPControlA*);
ULONG ldap_add_ext_sW(LDAP*, PCWSTR, LDAPModW**, PLDAPControlW*,
PLDAPControlW*);
ULONG ldap_addA(LDAP*, PSTR, LDAPModA**);
ULONG ldap_addW(LDAP*, PWSTR, LDAPModW**);
ULONG ldap_add_sA(LDAP*, PSTR, LDAPModA**);
ULONG ldap_add_sW(LDAP*, PWSTR, LDAPModW**);
ULONG ldap_delete_extA(LDAP*, PCSTR, PLDAPControlA*, PLDAPControlA*,
ULONG*);
ULONG ldap_delete_extW(LDAP*, PCWSTR, PLDAPControlW*, PLDAPControlW*,
ULONG*);
ULONG ldap_delete_ext_sA(LDAP*, PCSTR, PLDAPControlA*, PLDAPControlA*);
ULONG ldap_delete_ext_sW(LDAP*, PCWSTR, PLDAPControlW*, PLDAPControlW*);
ULONG ldap_deleteA(LDAP*, PCSTR);
ULONG ldap_deleteW(LDAP*, PCWSTR);
ULONG ldap_delete_sA(LDAP*, PCSTR);
ULONG ldap_delete_sW(LDAP*, PCWSTR);
ULONG ldap_extended_operationA(LDAP*, PCSTR, BerValue*, PLDAPControlA*,
PLDAPControlA*, ULONG*);
ULONG ldap_extended_operationW(LDAP*, PCWSTR, BerValue*, PLDAPControlW*,
PLDAPControlW*, ULONG*);
ULONG ldap_extended_operation_sA(LDAP*, PSTR, BerValue*, PLDAPControlA*,
PLDAPControlA*, PCHAR*, BerValue**);
ULONG ldap_extended_operation_sW(LDAP*, PWSTR, BerValue*, PLDAPControlW*,
PLDAPControlW*, PWCHAR*, BerValue**);
ULONG ldap_close_extended_op(LDAP*, ULONG);
ULONG ldap_abandon(LDAP*, ULONG);
ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**);
ULONG ldap_msgfree(LDAPMessage*);
ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PSTR*, PSTR*,
PZPSTR*, PLDAPControlA**, BOOLEAN);
ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWSTR*, PWSTR*,
PZPWSTR*, PLDAPControlW**, BOOLEAN);
ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PSTR*, BerValue**,
BOOLEAN);
ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWSTR*, BerValue**,
BOOLEAN);
PCHAR ldap_err2stringA(ULONG);
PWCHAR ldap_err2stringW(ULONG);
ULONG LdapGetLastError();
ULONG LdapMapErrorToWin32(ULONG);
ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG);
PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*);
PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*);
PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*);
PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*);
ULONG ldap_count_entries(LDAP*, LDAPMessage*);
ULONG ldap_count_references(LDAP*, LDAPMessage*);
PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**);
PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**);
PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*);
PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*);
VOID ldap_memfreeA(PCHAR);
VOID ldap_memfreeW(PWCHAR);
PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCSTR);
PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PCWSTR);
BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCSTR);
BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PCWSTR);
ULONG ldap_count_valuesA(PCHAR*);
ULONG ldap_count_valuesW(PWCHAR*);
ULONG ldap_count_values_len(BerValue**);
ULONG ldap_value_freeA(PCHAR*);
ULONG ldap_value_freeW(PWCHAR*);
ULONG ldap_value_free_len(BerValue**);
PCHAR ldap_get_dnA(LDAP*, LDAPMessage*);
PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*);
PCHAR ldap_explode_dnA(PCSTR, ULONG);
PWCHAR ldap_explode_dnW(PCWSTR, ULONG);
PCHAR ldap_dn2ufnA(PCSTR);
PWCHAR ldap_dn2ufnW(PCWSTR);
ULONG ldap_ufn2dnA(PCSTR, PSTR*);
ULONG ldap_ufn2dnW(PCWSTR, PWSTR*);
ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**);
ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**);
ULONG ldap_check_filterA(LDAP*, PSTR);
ULONG ldap_check_filterW(LDAP*, PWSTR);
ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR,
PLDAPControlA*);
ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR,
PLDAPControlW*);
ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR,
PLDAPControlA*);
ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR,
PLDAPControlW*);
INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, PLDAPControlA*);
INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, PLDAPControlW*);
ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA,
BOOLEAN);
ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW,
BOOLEAN);
ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG);
ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG);
ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*);
ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG,
ULONG*, LDAPMessage**);
ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage);
ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**);
ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**);
ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*);
ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*);
INT ldap_parse_vlv_controlA(PLDAP, PLDAPControlA*, PULONG, PULONG,
BerValue**, PINT);
INT ldap_parse_vlv_controlW(PLDAP, PLDAPControlW*, PULONG, PULONG,
BerValue**, PINT);
PLDAPSearch ldap_search_init_pageA(PLDAP, PCSTR, ULONG, PCSTR, PZPSTR,
ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*);
PLDAPSearch ldap_search_init_pageW(PLDAP, PCWSTR, ULONG, PCWSTR, PZPWSTR,
ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*);
ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch);
LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*);
INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int);
INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int);
ULONG ldap_bindA(LDAP*, PSTR, PCHAR, ULONG);
ULONG ldap_bindW(LDAP*, PWSTR, PWCHAR, ULONG);
ULONG ldap_bind_sA(LDAP*, PSTR, PCHAR, ULONG);
ULONG ldap_bind_sW(LDAP*, PWSTR, PWCHAR, ULONG);
deprecated ("For LDAP 3 or later, use the ldap_rename_ext or ldap_rename_ext_s functions") {
ULONG ldap_modrdnA(LDAP*, PCSTR, PCSTR);
ULONG ldap_modrdnW(LDAP*, PCWSTR, PCWSTR);
ULONG ldap_modrdn_sA(LDAP*, PCSTR, PCSTR);
ULONG ldap_modrdn_sW(LDAP*, PCWSTR, PCWSTR);
ULONG ldap_modrdn2A(LDAP*, PCSTR, PCSTR, INT);
ULONG ldap_modrdn2W(LDAP*, PCWSTR, PCWSTR, INT);
ULONG ldap_modrdn2_sA(LDAP*, PCSTR, PCSTR, INT);
ULONG ldap_modrdn2_sW(LDAP*, PCWSTR, PCWSTR, INT);
}
}
version (Unicode) {
alias LDAPControlW LDAPControl;
alias PLDAPControlW PLDAPControl;
alias LDAPModW LDAPMod;
alias LDAPModW PLDAPMod;
alias LDAPSortKeyW LDAPSortKey;
alias PLDAPSortKeyW PLDAPSortKey;
alias LDAPAPIInfoW LDAPAPIInfo;
alias PLDAPAPIInfoW PLDAPAPIInfo;
alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo;
alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo;
alias cldap_openW cldap_open;
alias ldap_openW ldap_open;
alias ldap_simple_bindW ldap_simple_bind;
alias ldap_simple_bind_sW ldap_simple_bind_s;
alias ldap_sasl_bindW ldap_sasl_bind;
alias ldap_sasl_bind_sW ldap_sasl_bind_s;
alias ldap_initW ldap_init;
alias ldap_sslinitW ldap_sslinit;
alias ldap_get_optionW ldap_get_option;
alias ldap_set_optionW ldap_set_option;
alias ldap_start_tls_sW ldap_start_tls_s;
alias ldap_addW ldap_add;
alias ldap_add_extW ldap_add_ext;
alias ldap_add_sW ldap_add_s;
alias ldap_add_ext_sW ldap_add_ext_s;
alias ldap_compareW ldap_compare;
alias ldap_compare_extW ldap_compare_ext;
alias ldap_compare_sW ldap_compare_s;
alias ldap_compare_ext_sW ldap_compare_ext_s;
alias ldap_deleteW ldap_delete;
alias ldap_delete_extW ldap_delete_ext;
alias ldap_delete_sW ldap_delete_s;
alias ldap_delete_ext_sW ldap_delete_ext_s;
alias ldap_extended_operation_sW ldap_extended_operation_s;
alias ldap_extended_operationW ldap_extended_operation;
alias ldap_modifyW ldap_modify;
alias ldap_modify_extW ldap_modify_ext;
alias ldap_modify_sW ldap_modify_s;
alias ldap_modify_ext_sW ldap_modify_ext_s;
alias ldap_check_filterW ldap_check_filter;
alias ldap_count_valuesW ldap_count_values;
alias ldap_create_page_controlW ldap_create_page_control;
alias ldap_create_sort_controlW ldap_create_sort_control;
alias ldap_create_vlv_controlW ldap_create_vlv_control;
alias ldap_encode_sort_controlW ldap_encode_sort_control;
alias ldap_escape_filter_elementW ldap_escape_filter_element;
alias ldap_first_attributeW ldap_first_attribute;
alias ldap_next_attributeW ldap_next_attribute;
alias ldap_get_valuesW ldap_get_values;
alias ldap_get_values_lenW ldap_get_values_len;
alias ldap_parse_extended_resultW ldap_parse_extended_result;
alias ldap_parse_page_controlW ldap_parse_page_control;
alias ldap_parse_referenceW ldap_parse_reference;
alias ldap_parse_resultW ldap_parse_result;
alias ldap_parse_sort_controlW ldap_parse_sort_control;
alias ldap_parse_vlv_controlW ldap_parse_vlv_control;
alias ldap_searchW ldap_search;
alias ldap_search_sW ldap_search_s;
alias ldap_search_stW ldap_search_st;
alias ldap_search_extW ldap_search_ext;
alias ldap_search_ext_sW ldap_search_ext_s;
alias ldap_search_init_pageW ldap_search_init_page;
alias ldap_err2stringW ldap_err2string;
alias ldap_control_freeW ldap_control_free;
alias ldap_controls_freeW ldap_controls_free;
alias ldap_free_controlsW ldap_free_controls;
alias ldap_memfreeW ldap_memfree;
alias ldap_value_freeW ldap_value_free;
alias ldap_dn2ufnW ldap_dn2ufn;
alias ldap_ufn2dnW ldap_ufn2dn;
alias ldap_explode_dnW ldap_explode_dn;
alias ldap_get_dnW ldap_get_dn;
alias ldap_rename_extW ldap_rename;
alias ldap_rename_ext_sW ldap_rename_s;
alias ldap_rename_extW ldap_rename_ext;
alias ldap_rename_ext_sW ldap_rename_ext_s;
deprecated {
alias ldap_bindW ldap_bind;
alias ldap_bind_sW ldap_bind_s;
alias ldap_modrdnW ldap_modrdn;
alias ldap_modrdn_sW ldap_modrdn_s;
alias ldap_modrdn2W ldap_modrdn2;
alias ldap_modrdn2_sW ldap_modrdn2_s;
}
} else {
alias LDAPControlA LDAPControl;
alias PLDAPControlA PLDAPControl;
alias LDAPModA LDAPMod;
alias LDAPModA PLDAPMod;
alias LDAPSortKeyA LDAPSortKey;
alias PLDAPSortKeyA PLDAPSortKey;
alias LDAPAPIInfoA LDAPAPIInfo;
alias PLDAPAPIInfoA PLDAPAPIInfo;
alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo;
alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo;
alias cldap_openA cldap_open;
alias ldap_openA ldap_open;
alias ldap_simple_bindA ldap_simple_bind;
alias ldap_simple_bind_sA ldap_simple_bind_s;
alias ldap_sasl_bindA ldap_sasl_bind;
alias ldap_sasl_bind_sA ldap_sasl_bind_s;
alias ldap_initA ldap_init;
alias ldap_sslinitA ldap_sslinit;
alias ldap_get_optionA ldap_get_option;
alias ldap_set_optionA ldap_set_option;
alias ldap_start_tls_sA ldap_start_tls_s;
alias ldap_addA ldap_add;
alias ldap_add_extA ldap_add_ext;
alias ldap_add_sA ldap_add_s;
alias ldap_add_ext_sA ldap_add_ext_s;
alias ldap_compareA ldap_compare;
alias ldap_compare_extA ldap_compare_ext;
alias ldap_compare_sA ldap_compare_s;
alias ldap_compare_ext_sA ldap_compare_ext_s;
alias ldap_deleteA ldap_delete;
alias ldap_delete_extA ldap_delete_ext;
alias ldap_delete_sA ldap_delete_s;
alias ldap_delete_ext_sA ldap_delete_ext_s;
alias ldap_extended_operation_sA ldap_extended_operation_s;
alias ldap_extended_operationA ldap_extended_operation;
alias ldap_modifyA ldap_modify;
alias ldap_modify_extA ldap_modify_ext;
alias ldap_modify_sA ldap_modify_s;
alias ldap_modify_ext_sA ldap_modify_ext_s;
alias ldap_check_filterA ldap_check_filter;
alias ldap_count_valuesA ldap_count_values;
alias ldap_create_page_controlA ldap_create_page_control;
alias ldap_create_sort_controlA ldap_create_sort_control;
alias ldap_create_vlv_controlA ldap_create_vlv_control;
alias ldap_encode_sort_controlA ldap_encode_sort_control;
alias ldap_escape_filter_elementA ldap_escape_filter_element;
alias ldap_first_attributeA ldap_first_attribute;
alias ldap_next_attributeA ldap_next_attribute;
alias ldap_get_valuesA ldap_get_values;
alias ldap_get_values_lenA ldap_get_values_len;
alias ldap_parse_extended_resultA ldap_parse_extended_result;
alias ldap_parse_page_controlA ldap_parse_page_control;
alias ldap_parse_referenceA ldap_parse_reference;
alias ldap_parse_resultA ldap_parse_result;
alias ldap_parse_sort_controlA ldap_parse_sort_control;
alias ldap_parse_vlv_controlA ldap_parse_vlv_control;
alias ldap_searchA ldap_search;
alias ldap_search_sA ldap_search_s;
alias ldap_search_stA ldap_search_st;
alias ldap_search_extA ldap_search_ext;
alias ldap_search_ext_sA ldap_search_ext_s;
alias ldap_search_init_pageA ldap_search_init_page;
alias ldap_err2stringA ldap_err2string;
alias ldap_control_freeA ldap_control_free;
alias ldap_controls_freeA ldap_controls_free;
alias ldap_free_controlsA ldap_free_controls;
alias ldap_memfreeA ldap_memfree;
alias ldap_value_freeA ldap_value_free;
alias ldap_dn2ufnA ldap_dn2ufn;
alias ldap_ufn2dnA ldap_ufn2dn;
alias ldap_explode_dnA ldap_explode_dn;
alias ldap_get_dnA ldap_get_dn;
alias ldap_rename_extA ldap_rename;
alias ldap_rename_ext_sA ldap_rename_s;
alias ldap_rename_extA ldap_rename_ext;
alias ldap_rename_ext_sA ldap_rename_ext_s;
deprecated {
alias ldap_bindA ldap_bind;
alias ldap_bind_sA ldap_bind_s;
alias ldap_modrdnA ldap_modrdn;
alias ldap_modrdn_sA ldap_modrdn_s;
alias ldap_modrdn2A ldap_modrdn2;
alias ldap_modrdn2_sA ldap_modrdn2_s;
}
}