Add helper functions for converting LDAPControl structures.
[wine] / dlls / wldap32 / winldap_private.h
1 /*
2  * WLDAP32 - LDAP support for Wine
3  *
4  * Copyright 2005 Hans Leidekker
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * This is an internal version of winldap.h where constants, types and
21  * functions are prefixed with WLDAP32_ whenever they conflict with
22  * native headers.
23  */
24
25 typedef struct ldap
26 {
27     struct
28     {
29         UINT_PTR sb_sd;
30         UCHAR Reserved1[41];
31         ULONG_PTR sb_naddr;
32         UCHAR Reserved2[24];
33     } ld_sb;
34
35     PCHAR ld_host;
36     ULONG ld_version;
37     UCHAR ld_lberoptions;
38     ULONG ld_deref;
39     ULONG ld_timelimit;
40     ULONG ld_sizelimit;
41     ULONG ld_errno;
42     PCHAR ld_matched;
43     PCHAR ld_error;
44     ULONG ld_msgid;
45     UCHAR Reserved3[25];
46     ULONG ld_cldaptries;
47     ULONG ld_cldaptimeout;
48     ULONG ld_refhoplimit;
49     ULONG ld_options;
50 } WLDAP32_LDAP, *WLDAP32_PLDAP;
51
52 typedef struct l_timeval
53 {
54     LONG tv_sec;
55     LONG tv_usec;
56 } LDAP_TIMEVAL, *PLDAP_TIMEVAL;
57
58 typedef struct ldapmsg
59 {
60     ULONG lm_msgid;
61     ULONG lm_msgtype;
62
63     PVOID lm_ber;
64
65     struct ldapmsg *lm_chain;
66     struct ldapmsg *lm_next;
67     ULONG lm_time;
68
69     WLDAP32_PLDAP Connection;
70     PVOID Request;
71     ULONG lm_returncode;
72     USHORT lm_referral;
73     BOOLEAN lm_chased;
74     BOOLEAN lm_eom;
75     BOOLEAN ConnectionReferenced;
76 } WLDAP32_LDAPMessage, *WLDAP32_PLDAPMessage;
77
78 typedef struct WLDAP32_berval
79 {
80     ULONG bv_len;
81     PCHAR bv_val;
82 } LDAP_BERVAL, *PLDAP_BERVAL, BERVAL, *PBERVAL, WLDAP32_BerValue;
83
84 typedef struct ldapcontrolA
85 {
86     PCHAR ldctl_oid;
87     struct WLDAP32_berval ldctl_value;
88     BOOLEAN ldctl_iscritical;
89 } LDAPControlA, *PLDAPControlA;
90
91 typedef struct ldapcontrolW
92 {
93     PWCHAR ldctl_oid;
94     struct WLDAP32_berval ldctl_value;
95     BOOLEAN ldctl_iscritical;
96 } LDAPControlW, *PLDAPControlW;
97
98 ULONG ldap_bindA(WLDAP32_LDAP*,PCHAR,PCHAR,ULONG);
99 ULONG ldap_bindW(WLDAP32_LDAP*,PWCHAR,PWCHAR,ULONG);
100 ULONG ldap_bind_sA(WLDAP32_LDAP*,PCHAR,PCHAR,ULONG);
101 ULONG ldap_bind_sW(WLDAP32_LDAP*,PWCHAR,PWCHAR,ULONG);
102 WLDAP32_LDAP *ldap_initA(const PCHAR,ULONG);
103 WLDAP32_LDAP *ldap_initW(const PWCHAR,ULONG);
104 WLDAP32_LDAP *ldap_openA(PCHAR,ULONG);
105 WLDAP32_LDAP *ldap_openW(PWCHAR,ULONG);
106 ULONG ldap_searchA(WLDAP32_LDAP*,PCHAR,ULONG,PCHAR,PCHAR[],ULONG);
107 ULONG ldap_searchW(WLDAP32_LDAP*,PWCHAR,ULONG,PWCHAR,PWCHAR[],ULONG);
108 ULONG ldap_search_sA(WLDAP32_LDAP*,PCHAR,ULONG,PCHAR,PCHAR[],ULONG,WLDAP32_LDAPMessage**);
109 ULONG ldap_search_sW(WLDAP32_LDAP*,PWCHAR,ULONG,PWCHAR,PWCHAR[],ULONG,WLDAP32_LDAPMessage**);
110 ULONG ldap_search_stA(WLDAP32_LDAP*,const PCHAR,ULONG,const PCHAR,PCHAR[],ULONG,
111     struct l_timeval*,WLDAP32_LDAPMessage**);
112 ULONG ldap_search_stW(WLDAP32_LDAP*,const PWCHAR,ULONG,const PWCHAR,PWCHAR[],ULONG,
113     struct l_timeval*,WLDAP32_LDAPMessage**);
114 ULONG ldap_simple_bindA(WLDAP32_LDAP*,PCHAR,PCHAR);
115 ULONG ldap_simple_bindW(WLDAP32_LDAP*,PWCHAR,PWCHAR);
116 ULONG ldap_simple_bind_sA(WLDAP32_LDAP*,PCHAR,PCHAR);
117 ULONG ldap_simple_bind_sW(WLDAP32_LDAP*,PWCHAR,PWCHAR);
118 ULONG WLDAP32_ldap_unbind(WLDAP32_LDAP*);
119 ULONG WLDAP32_ldap_unbind_s(WLDAP32_LDAP*);
120
121 ULONG LdapGetLastError(void);
122 ULONG LdapMapErrorToWin32(ULONG);
123 int LdapUnicodeToUTF8(LPCWSTR,int,LPSTR,int);
124 int LdapUTF8ToUnicode(LPCSTR,int,LPWSTR,int);