Warning: That file was not part of the compilation database. It may have many parsing errors.
1 | /* $OpenLDAP$ */ |
---|---|
2 | /* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
3 | * |
4 | * Copyright 1998-2014 The OpenLDAP Foundation. |
5 | * All rights reserved. |
6 | * |
7 | * Redistribution and use in source and binary forms, with or without |
8 | * modification, are permitted only as authorized by the OpenLDAP |
9 | * Public License. |
10 | * |
11 | * A copy of this license is available in file LICENSE in the |
12 | * top-level directory of the distribution or, alternatively, at |
13 | * <http://www.OpenLDAP.org/license.html>. |
14 | */ |
15 | /* Portions Copyright (c) 1990 Regents of the University of Michigan. |
16 | * All rights reserved. |
17 | * |
18 | * Redistribution and use in source and binary forms are permitted |
19 | * provided that this notice is preserved and that due credit is given |
20 | * to the University of Michigan at Ann Arbor. The name of the University |
21 | * may not be used to endorse or promote products derived from this |
22 | * software without specific prior written permission. This software |
23 | * is provided ``as is'' without express or implied warranty. |
24 | */ |
25 | |
26 | #ifndef _LDAP_H |
27 | #define _LDAP_H |
28 | |
29 | /* pull in lber */ |
30 | #include <lber.h> |
31 | |
32 | /* include version and API feature defines */ |
33 | #include <ldap_features.h> |
34 | |
35 | LDAP_BEGIN_DECL |
36 | |
37 | #define LDAP_VERSION1 1 |
38 | #define LDAP_VERSION2 2 |
39 | #define LDAP_VERSION3 3 |
40 | |
41 | #define LDAP_VERSION_MIN LDAP_VERSION2 |
42 | #define LDAP_VERSION LDAP_VERSION2 |
43 | #define LDAP_VERSION_MAX LDAP_VERSION3 |
44 | |
45 | /* |
46 | * We use 3000+n here because it is above 1823 (for RFC 1823), |
47 | * above 2000+rev of IETF LDAPEXT draft (now quite dated), |
48 | * yet below allocations for new RFCs (just in case there is |
49 | * someday an RFC produced). |
50 | */ |
51 | #define LDAP_API_VERSION 3001 |
52 | #define LDAP_VENDOR_NAME "OpenLDAP" |
53 | |
54 | /* OpenLDAP API Features */ |
55 | #define LDAP_API_FEATURE_X_OPENLDAP LDAP_VENDOR_VERSION |
56 | |
57 | #if defined( LDAP_API_FEATURE_X_OPENLDAP_REENTRANT ) || \ |
58 | ( defined( LDAP_THREAD_SAFE ) && \ |
59 | defined( LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE ) ) |
60 | /* -lldap may or may not be thread safe */ |
61 | /* -lldap_r, if available, is always thread safe */ |
62 | # define LDAP_API_FEATURE_THREAD_SAFE 1 |
63 | # define LDAP_API_FEATURE_SESSION_THREAD_SAFE 1 |
64 | # define LDAP_API_FEATURE_OPERATION_THREAD_SAFE 1 |
65 | #endif |
66 | #if defined( LDAP_THREAD_SAFE ) && \ |
67 | defined( LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE ) |
68 | /* #define LDAP_API_FEATURE_SESSION_SAFE 1 */ |
69 | /* #define LDAP_API_OPERATION_SESSION_SAFE 1 */ |
70 | #endif |
71 | |
72 | |
73 | #define LDAP_PORT 389 /* ldap:/// default LDAP port */ |
74 | #define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ |
75 | |
76 | #define LDAP_ROOT_DSE "" |
77 | #define LDAP_NO_ATTRS "1.1" |
78 | #define LDAP_ALL_USER_ATTRIBUTES "*" |
79 | #define LDAP_ALL_OPERATIONAL_ATTRIBUTES "+" /* RFC 3673 */ |
80 | |
81 | /* RFC 4511: maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) -- */ |
82 | #define LDAP_MAXINT (2147483647) |
83 | |
84 | /* |
85 | * LDAP_OPTions |
86 | * 0x0000 - 0x0fff reserved for api options |
87 | * 0x1000 - 0x3fff reserved for api extended options |
88 | * 0x4000 - 0x7fff reserved for private and experimental options |
89 | */ |
90 | |
91 | #define LDAP_OPT_API_INFO 0x0000 |
92 | #define LDAP_OPT_DESC 0x0001 /* historic */ |
93 | #define LDAP_OPT_DEREF 0x0002 |
94 | #define LDAP_OPT_SIZELIMIT 0x0003 |
95 | #define LDAP_OPT_TIMELIMIT 0x0004 |
96 | /* 0x05 - 0x07 not defined */ |
97 | #define LDAP_OPT_REFERRALS 0x0008 |
98 | #define LDAP_OPT_RESTART 0x0009 |
99 | /* 0x0a - 0x10 not defined */ |
100 | #define LDAP_OPT_PROTOCOL_VERSION 0x0011 |
101 | #define LDAP_OPT_SERVER_CONTROLS 0x0012 |
102 | #define LDAP_OPT_CLIENT_CONTROLS 0x0013 |
103 | /* 0x14 not defined */ |
104 | #define LDAP_OPT_API_FEATURE_INFO 0x0015 |
105 | /* 0x16 - 0x2f not defined */ |
106 | #define LDAP_OPT_HOST_NAME 0x0030 |
107 | #define LDAP_OPT_RESULT_CODE 0x0031 |
108 | #define LDAP_OPT_ERROR_NUMBER LDAP_OPT_RESULT_CODE |
109 | #define LDAP_OPT_DIAGNOSTIC_MESSAGE 0x0032 |
110 | #define LDAP_OPT_ERROR_STRING LDAP_OPT_DIAGNOSTIC_MESSAGE |
111 | #define LDAP_OPT_MATCHED_DN 0x0033 |
112 | /* 0x0034 - 0x3fff not defined */ |
113 | /* 0x0091 used by Microsoft for LDAP_OPT_AUTO_RECONNECT */ |
114 | #define LDAP_OPT_SSPI_FLAGS 0x0092 |
115 | /* 0x0093 used by Microsoft for LDAP_OPT_SSL_INFO */ |
116 | /* 0x0094 used by Microsoft for LDAP_OPT_REF_DEREF_CONN_PER_MSG */ |
117 | #define LDAP_OPT_SIGN 0x0095 |
118 | #define LDAP_OPT_ENCRYPT 0x0096 |
119 | #define LDAP_OPT_SASL_METHOD 0x0097 |
120 | /* 0x0098 used by Microsoft for LDAP_OPT_AREC_EXCLUSIVE */ |
121 | #define LDAP_OPT_SECURITY_CONTEXT 0x0099 |
122 | /* 0x009A used by Microsoft for LDAP_OPT_ROOTDSE_CACHE */ |
123 | /* 0x009B - 0x3fff not defined */ |
124 | |
125 | /* API Extensions */ |
126 | #define LDAP_OPT_API_EXTENSION_BASE 0x4000 /* API extensions */ |
127 | |
128 | /* private and experimental options */ |
129 | /* OpenLDAP specific options */ |
130 | #define LDAP_OPT_DEBUG_LEVEL 0x5001 /* debug level */ |
131 | #define LDAP_OPT_TIMEOUT 0x5002 /* default timeout */ |
132 | #define LDAP_OPT_REFHOPLIMIT 0x5003 /* ref hop limit */ |
133 | #define LDAP_OPT_NETWORK_TIMEOUT 0x5005 /* socket level timeout */ |
134 | #define LDAP_OPT_URI 0x5006 |
135 | #define LDAP_OPT_REFERRAL_URLS 0x5007 /* Referral URLs */ |
136 | #define LDAP_OPT_SOCKBUF 0x5008 /* sockbuf */ |
137 | #define LDAP_OPT_DEFBASE 0x5009 /* searchbase */ |
138 | #define LDAP_OPT_CONNECT_ASYNC 0x5010 /* create connections asynchronously */ |
139 | #define LDAP_OPT_CONNECT_CB 0x5011 /* connection callbacks */ |
140 | #define LDAP_OPT_SESSION_REFCNT 0x5012 /* session reference count */ |
141 | |
142 | /* OpenLDAP TLS options */ |
143 | #define LDAP_OPT_X_TLS 0x6000 |
144 | #define LDAP_OPT_X_TLS_CTX 0x6001 /* OpenSSL CTX* */ |
145 | #define LDAP_OPT_X_TLS_CACERTFILE 0x6002 |
146 | #define LDAP_OPT_X_TLS_CACERTDIR 0x6003 |
147 | #define LDAP_OPT_X_TLS_CERTFILE 0x6004 |
148 | #define LDAP_OPT_X_TLS_KEYFILE 0x6005 |
149 | #define LDAP_OPT_X_TLS_REQUIRE_CERT 0x6006 |
150 | #define LDAP_OPT_X_TLS_PROTOCOL_MIN 0x6007 |
151 | #define LDAP_OPT_X_TLS_CIPHER_SUITE 0x6008 |
152 | #define LDAP_OPT_X_TLS_RANDOM_FILE 0x6009 |
153 | #define LDAP_OPT_X_TLS_SSL_CTX 0x600a /* OpenSSL SSL* */ |
154 | #define LDAP_OPT_X_TLS_CRLCHECK 0x600b |
155 | #define LDAP_OPT_X_TLS_CONNECT_CB 0x600c |
156 | #define LDAP_OPT_X_TLS_CONNECT_ARG 0x600d |
157 | #define LDAP_OPT_X_TLS_DHFILE 0x600e |
158 | #define LDAP_OPT_X_TLS_NEWCTX 0x600f |
159 | #define LDAP_OPT_X_TLS_CRLFILE 0x6010 /* GNUtls only */ |
160 | #define LDAP_OPT_X_TLS_PACKAGE 0x6011 |
161 | |
162 | #define LDAP_OPT_X_TLS_NEVER 0 |
163 | #define LDAP_OPT_X_TLS_HARD 1 |
164 | #define LDAP_OPT_X_TLS_DEMAND 2 |
165 | #define LDAP_OPT_X_TLS_ALLOW 3 |
166 | #define LDAP_OPT_X_TLS_TRY 4 |
167 | |
168 | #define LDAP_OPT_X_TLS_CRL_NONE 0 |
169 | #define LDAP_OPT_X_TLS_CRL_PEER 1 |
170 | #define LDAP_OPT_X_TLS_CRL_ALL 2 |
171 | |
172 | /* for LDAP_OPT_X_TLS_PROTOCOL_MIN */ |
173 | #define LDAP_OPT_X_TLS_PROTOCOL(maj,min) (((maj) << 8) + (min)) |
174 | #define LDAP_OPT_X_TLS_PROTOCOL_SSL2 (2 << 8) |
175 | #define LDAP_OPT_X_TLS_PROTOCOL_SSL3 (3 << 8) |
176 | #define LDAP_OPT_X_TLS_PROTOCOL_TLS1_0 ((3 << 8) + 1) |
177 | #define LDAP_OPT_X_TLS_PROTOCOL_TLS1_1 ((3 << 8) + 2) |
178 | #define LDAP_OPT_X_TLS_PROTOCOL_TLS1_2 ((3 << 8) + 3) |
179 | |
180 | /* OpenLDAP SASL options */ |
181 | #define LDAP_OPT_X_SASL_MECH 0x6100 |
182 | #define LDAP_OPT_X_SASL_REALM 0x6101 |
183 | #define LDAP_OPT_X_SASL_AUTHCID 0x6102 |
184 | #define LDAP_OPT_X_SASL_AUTHZID 0x6103 |
185 | #define LDAP_OPT_X_SASL_SSF 0x6104 /* read-only */ |
186 | #define LDAP_OPT_X_SASL_SSF_EXTERNAL 0x6105 /* write-only */ |
187 | #define LDAP_OPT_X_SASL_SECPROPS 0x6106 /* write-only */ |
188 | #define LDAP_OPT_X_SASL_SSF_MIN 0x6107 |
189 | #define LDAP_OPT_X_SASL_SSF_MAX 0x6108 |
190 | #define LDAP_OPT_X_SASL_MAXBUFSIZE 0x6109 |
191 | #define LDAP_OPT_X_SASL_MECHLIST 0x610a /* read-only */ |
192 | #define LDAP_OPT_X_SASL_NOCANON 0x610b |
193 | #define LDAP_OPT_X_SASL_USERNAME 0x610c /* read-only */ |
194 | #define LDAP_OPT_X_SASL_GSS_CREDS 0x610d |
195 | |
196 | /* OpenLDAP GSSAPI options */ |
197 | #define LDAP_OPT_X_GSSAPI_DO_NOT_FREE_CONTEXT 0x6200 |
198 | #define LDAP_OPT_X_GSSAPI_ALLOW_REMOTE_PRINCIPAL 0x6201 |
199 | |
200 | /* |
201 | * OpenLDAP per connection tcp-keepalive settings |
202 | * (Linux only, ignored where unsupported) |
203 | */ |
204 | #define LDAP_OPT_X_KEEPALIVE_IDLE 0x6300 |
205 | #define LDAP_OPT_X_KEEPALIVE_PROBES 0x6301 |
206 | #define LDAP_OPT_X_KEEPALIVE_INTERVAL 0x6302 |
207 | |
208 | /* Private API Extensions -- reserved for application use */ |
209 | #define LDAP_OPT_PRIVATE_EXTENSION_BASE 0x7000 /* Private API inclusive */ |
210 | |
211 | /* |
212 | * ldap_get_option() and ldap_set_option() return values. |
213 | * As later versions may return other values indicating |
214 | * failure, current applications should only compare returned |
215 | * value against LDAP_OPT_SUCCESS. |
216 | */ |
217 | #define LDAP_OPT_SUCCESS 0 |
218 | #define LDAP_OPT_ERROR (-1) |
219 | |
220 | /* option on/off values */ |
221 | #define LDAP_OPT_ON ((void *) &ber_pvt_opt_on) |
222 | #define LDAP_OPT_OFF ((void *) 0) |
223 | |
224 | typedef struct ldapapiinfo { |
225 | int ldapai_info_version; /* version of LDAPAPIInfo */ |
226 | #define LDAP_API_INFO_VERSION (1) |
227 | int ldapai_api_version; /* revision of API supported */ |
228 | int ldapai_protocol_version; /* highest LDAP version supported */ |
229 | char **ldapai_extensions; /* names of API extensions */ |
230 | char *ldapai_vendor_name; /* name of supplier */ |
231 | int ldapai_vendor_version; /* supplier-specific version * 100 */ |
232 | } LDAPAPIInfo; |
233 | |
234 | typedef struct ldap_apifeature_info { |
235 | int ldapaif_info_version; /* version of LDAPAPIFeatureInfo */ |
236 | #define LDAP_FEATURE_INFO_VERSION (1) /* apifeature_info struct version */ |
237 | char* ldapaif_name; /* LDAP_API_FEATURE_* (less prefix) */ |
238 | int ldapaif_version; /* value of LDAP_API_FEATURE_... */ |
239 | } LDAPAPIFeatureInfo; |
240 | |
241 | /* |
242 | * LDAP Control structure |
243 | */ |
244 | typedef struct ldapcontrol { |
245 | char * ldctl_oid; /* numericoid of control */ |
246 | struct berval ldctl_value; /* encoded value of control */ |
247 | char ldctl_iscritical; /* criticality */ |
248 | } LDAPControl; |
249 | |
250 | /* LDAP Controls */ |
251 | /* standard track controls */ |
252 | #define LDAP_CONTROL_MANAGEDSAIT "2.16.840.1.113730.3.4.2" /* RFC 3296 */ |
253 | #define LDAP_CONTROL_PROXY_AUTHZ "2.16.840.1.113730.3.4.18" /* RFC 4370 */ |
254 | #define LDAP_CONTROL_SUBENTRIES "1.3.6.1.4.1.4203.1.10.1" /* RFC 3672 */ |
255 | |
256 | #define LDAP_CONTROL_VALUESRETURNFILTER "1.2.826.0.1.3344810.2.3"/* RFC 3876 */ |
257 | |
258 | #define LDAP_CONTROL_ASSERT "1.3.6.1.1.12" /* RFC 4528 */ |
259 | #define LDAP_CONTROL_PRE_READ "1.3.6.1.1.13.1" /* RFC 4527 */ |
260 | #define LDAP_CONTROL_POST_READ "1.3.6.1.1.13.2" /* RFC 4527 */ |
261 | |
262 | #define LDAP_CONTROL_SORTREQUEST "1.2.840.113556.1.4.473" /* RFC 2891 */ |
263 | #define LDAP_CONTROL_SORTRESPONSE "1.2.840.113556.1.4.474" /* RFC 2891 */ |
264 | |
265 | /* non-standard track controls */ |
266 | #define LDAP_CONTROL_PAGEDRESULTS "1.2.840.113556.1.4.319" /* RFC 2696 */ |
267 | |
268 | /* LDAP Content Synchronization Operation -- RFC 4533 */ |
269 | #define LDAP_SYNC_OID "1.3.6.1.4.1.4203.1.9.1" |
270 | #define LDAP_CONTROL_SYNC LDAP_SYNC_OID ".1" |
271 | #define LDAP_CONTROL_SYNC_STATE LDAP_SYNC_OID ".2" |
272 | #define LDAP_CONTROL_SYNC_DONE LDAP_SYNC_OID ".3" |
273 | #define LDAP_SYNC_INFO LDAP_SYNC_OID ".4" |
274 | |
275 | #define LDAP_SYNC_NONE 0x00 |
276 | #define LDAP_SYNC_REFRESH_ONLY 0x01 |
277 | #define LDAP_SYNC_RESERVED 0x02 |
278 | #define LDAP_SYNC_REFRESH_AND_PERSIST 0x03 |
279 | |
280 | #define LDAP_SYNC_REFRESH_PRESENTS 0 |
281 | #define LDAP_SYNC_REFRESH_DELETES 1 |
282 | |
283 | #define LDAP_TAG_SYNC_NEW_COOKIE ((ber_tag_t) 0x80U) |
284 | #define LDAP_TAG_SYNC_REFRESH_DELETE ((ber_tag_t) 0xa1U) |
285 | #define LDAP_TAG_SYNC_REFRESH_PRESENT ((ber_tag_t) 0xa2U) |
286 | #define LDAP_TAG_SYNC_ID_SET ((ber_tag_t) 0xa3U) |
287 | |
288 | #define LDAP_TAG_SYNC_COOKIE ((ber_tag_t) 0x04U) |
289 | #define LDAP_TAG_REFRESHDELETES ((ber_tag_t) 0x01U) |
290 | #define LDAP_TAG_REFRESHDONE ((ber_tag_t) 0x01U) |
291 | #define LDAP_TAG_RELOAD_HINT ((ber_tag_t) 0x01U) |
292 | |
293 | #define LDAP_SYNC_PRESENT 0 |
294 | #define LDAP_SYNC_ADD 1 |
295 | #define LDAP_SYNC_MODIFY 2 |
296 | #define LDAP_SYNC_DELETE 3 |
297 | #define LDAP_SYNC_NEW_COOKIE 4 |
298 | |
299 | |
300 | /* Password policy Controls *//* work in progress */ |
301 | /* ITS#3458: released; disabled by default */ |
302 | #define LDAP_CONTROL_PASSWORDPOLICYREQUEST "1.3.6.1.4.1.42.2.27.8.5.1" |
303 | #define LDAP_CONTROL_PASSWORDPOLICYRESPONSE "1.3.6.1.4.1.42.2.27.8.5.1" |
304 | |
305 | /* various works in progress */ |
306 | #define LDAP_CONTROL_NOOP "1.3.6.1.4.1.4203.666.5.2" |
307 | #define LDAP_CONTROL_NO_SUBORDINATES "1.3.6.1.4.1.4203.666.5.11" |
308 | #define LDAP_CONTROL_RELAX "1.3.6.1.4.1.4203.666.5.12" |
309 | #define LDAP_CONTROL_MANAGEDIT LDAP_CONTROL_RELAX |
310 | #define LDAP_CONTROL_SLURP "1.3.6.1.4.1.4203.666.5.13" |
311 | #define LDAP_CONTROL_VALSORT "1.3.6.1.4.1.4203.666.5.14" |
312 | #define LDAP_CONTROL_DONTUSECOPY "1.3.6.1.4.1.4203.666.5.15" |
313 | #define LDAP_CONTROL_X_DEREF "1.3.6.1.4.1.4203.666.5.16" |
314 | #define LDAP_CONTROL_X_WHATFAILED "1.3.6.1.4.1.4203.666.5.17" |
315 | |
316 | /* LDAP Chaining Behavior Control *//* work in progress */ |
317 | /* <draft-sermersheim-ldap-chaining>; |
318 | * see also LDAP_NO_REFERRALS_FOUND, LDAP_CANNOT_CHAIN */ |
319 | #define LDAP_CONTROL_X_CHAINING_BEHAVIOR "1.3.6.1.4.1.4203.666.11.3" |
320 | |
321 | #define LDAP_CHAINING_PREFERRED 0 |
322 | #define LDAP_CHAINING_REQUIRED 1 |
323 | #define LDAP_REFERRALS_PREFERRED 2 |
324 | #define LDAP_REFERRALS_REQUIRED 3 |
325 | |
326 | /* MS Active Directory controls (for compatibility) */ |
327 | #define LDAP_CONTROL_X_INCREMENTAL_VALUES "1.2.840.113556.1.4.802" |
328 | #define LDAP_CONTROL_X_DOMAIN_SCOPE "1.2.840.113556.1.4.1339" |
329 | #define LDAP_CONTROL_X_PERMISSIVE_MODIFY "1.2.840.113556.1.4.1413" |
330 | #define LDAP_CONTROL_X_SEARCH_OPTIONS "1.2.840.113556.1.4.1340" |
331 | #define LDAP_SEARCH_FLAG_DOMAIN_SCOPE 1 /* do not generate referrals */ |
332 | #define LDAP_SEARCH_FLAG_PHANTOM_ROOT 2 /* search all subordinate NCs */ |
333 | #define LDAP_CONTROL_X_TREE_DELETE "1.2.840.113556.1.4.805" |
334 | |
335 | /* MS Active Directory controls - not implemented in slapd(8) */ |
336 | #define LDAP_CONTROL_X_EXTENDED_DN "1.2.840.113556.1.4.529" |
337 | |
338 | /* <draft-wahl-ldap-session> */ |
339 | #define LDAP_CONTROL_X_SESSION_TRACKING "1.3.6.1.4.1.21008.108.63.1" |
340 | #define LDAP_CONTROL_X_SESSION_TRACKING_RADIUS_ACCT_SESSION_ID \ |
341 | LDAP_CONTROL_X_SESSION_TRACKING ".1" |
342 | #define LDAP_CONTROL_X_SESSION_TRACKING_RADIUS_ACCT_MULTI_SESSION_ID \ |
343 | LDAP_CONTROL_X_SESSION_TRACKING ".2" |
344 | #define LDAP_CONTROL_X_SESSION_TRACKING_USERNAME \ |
345 | LDAP_CONTROL_X_SESSION_TRACKING ".3" |
346 | /* various expired works */ |
347 | |
348 | /* LDAP Duplicated Entry Control Extension *//* not implemented in slapd(8) */ |
349 | #define LDAP_CONTROL_DUPENT_REQUEST "2.16.840.1.113719.1.27.101.1" |
350 | #define LDAP_CONTROL_DUPENT_RESPONSE "2.16.840.1.113719.1.27.101.2" |
351 | #define LDAP_CONTROL_DUPENT_ENTRY "2.16.840.1.113719.1.27.101.3" |
352 | #define LDAP_CONTROL_DUPENT LDAP_CONTROL_DUPENT_REQUEST |
353 | |
354 | /* LDAP Persistent Search Control *//* not implemented in slapd(8) */ |
355 | #define LDAP_CONTROL_PERSIST_REQUEST "2.16.840.1.113730.3.4.3" |
356 | #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_NOTICE "2.16.840.1.113730.3.4.7" |
357 | #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_ADD 0x1 |
358 | #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_DELETE 0x2 |
359 | #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_MODIFY 0x4 |
360 | #define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_RENAME 0x8 |
361 | |
362 | /* LDAP VLV */ |
363 | #define LDAP_CONTROL_VLVREQUEST "2.16.840.1.113730.3.4.9" |
364 | #define LDAP_CONTROL_VLVRESPONSE "2.16.840.1.113730.3.4.10" |
365 | |
366 | /* LDAP Unsolicited Notifications */ |
367 | #define LDAP_NOTICE_OF_DISCONNECTION "1.3.6.1.4.1.1466.20036" /* RFC 4511 */ |
368 | #define LDAP_NOTICE_DISCONNECT LDAP_NOTICE_OF_DISCONNECTION |
369 | |
370 | /* LDAP Extended Operations */ |
371 | #define LDAP_EXOP_START_TLS "1.3.6.1.4.1.1466.20037" /* RFC 4511 */ |
372 | |
373 | #define LDAP_EXOP_MODIFY_PASSWD "1.3.6.1.4.1.4203.1.11.1" /* RFC 3062 */ |
374 | #define LDAP_TAG_EXOP_MODIFY_PASSWD_ID ((ber_tag_t) 0x80U) |
375 | #define LDAP_TAG_EXOP_MODIFY_PASSWD_OLD ((ber_tag_t) 0x81U) |
376 | #define LDAP_TAG_EXOP_MODIFY_PASSWD_NEW ((ber_tag_t) 0x82U) |
377 | #define LDAP_TAG_EXOP_MODIFY_PASSWD_GEN ((ber_tag_t) 0x80U) |
378 | |
379 | #define LDAP_EXOP_CANCEL "1.3.6.1.1.8" /* RFC 3909 */ |
380 | #define LDAP_EXOP_X_CANCEL LDAP_EXOP_CANCEL |
381 | |
382 | #define LDAP_EXOP_REFRESH "1.3.6.1.4.1.1466.101.119.1" /* RFC 2589 */ |
383 | #define LDAP_TAG_EXOP_REFRESH_REQ_DN ((ber_tag_t) 0x80U) |
384 | #define LDAP_TAG_EXOP_REFRESH_REQ_TTL ((ber_tag_t) 0x81U) |
385 | #define LDAP_TAG_EXOP_REFRESH_RES_TTL ((ber_tag_t) 0x81U) |
386 | |
387 | #define LDAP_EXOP_WHO_AM_I "1.3.6.1.4.1.4203.1.11.3" /* RFC 4532 */ |
388 | #define LDAP_EXOP_X_WHO_AM_I LDAP_EXOP_WHO_AM_I |
389 | |
390 | /* various works in progress */ |
391 | #define LDAP_EXOP_TURN "1.3.6.1.1.19" /* RFC 4531 */ |
392 | #define LDAP_EXOP_X_TURN LDAP_EXOP_TURN |
393 | |
394 | /* LDAP Distributed Procedures <draft-sermersheim-ldap-distproc> */ |
395 | /* a work in progress */ |
396 | #define LDAP_X_DISTPROC_BASE "1.3.6.1.4.1.4203.666.11.6" |
397 | #define LDAP_EXOP_X_CHAINEDREQUEST LDAP_X_DISTPROC_BASE ".1" |
398 | #define LDAP_FEATURE_X_CANCHAINOPS LDAP_X_DISTPROC_BASE ".2" |
399 | #define LDAP_CONTROL_X_RETURNCONTREF LDAP_X_DISTPROC_BASE ".3" |
400 | #define LDAP_URLEXT_X_LOCALREFOID LDAP_X_DISTPROC_BASE ".4" |
401 | #define LDAP_URLEXT_X_REFTYPEOID LDAP_X_DISTPROC_BASE ".5" |
402 | #define LDAP_URLEXT_X_SEARCHEDSUBTREEOID \ |
403 | LDAP_X_DISTPROC_BASE ".6" |
404 | #define LDAP_URLEXT_X_FAILEDNAMEOID LDAP_X_DISTPROC_BASE ".7" |
405 | #define LDAP_URLEXT_X_LOCALREF "x-localReference" |
406 | #define LDAP_URLEXT_X_REFTYPE "x-referenceType" |
407 | #define LDAP_URLEXT_X_SEARCHEDSUBTREE "x-searchedSubtree" |
408 | #define LDAP_URLEXT_X_FAILEDNAME "x-failedName" |
409 | |
410 | #ifdef LDAP_DEVEL |
411 | #define LDAP_X_TXN "1.3.6.1.4.1.4203.666.11.7" /* tmp */ |
412 | #define LDAP_EXOP_X_TXN_START LDAP_X_TXN ".1" |
413 | #define LDAP_CONTROL_X_TXN_SPEC LDAP_X_TXN ".2" |
414 | #define LDAP_EXOP_X_TXN_END LDAP_X_TXN ".3" |
415 | #define LDAP_EXOP_X_TXN_ABORTED_NOTICE LDAP_X_TXN ".4" |
416 | #endif |
417 | |
418 | /* LDAP Features */ |
419 | #define LDAP_FEATURE_ALL_OP_ATTRS "1.3.6.1.4.1.4203.1.5.1" /* RFC 3673 */ |
420 | #define LDAP_FEATURE_OBJECTCLASS_ATTRS \ |
421 | "1.3.6.1.4.1.4203.1.5.2" /* @objectClass - new number to be assigned */ |
422 | #define LDAP_FEATURE_ABSOLUTE_FILTERS "1.3.6.1.4.1.4203.1.5.3" /* (&) (|) */ |
423 | #define LDAP_FEATURE_LANGUAGE_TAG_OPTIONS "1.3.6.1.4.1.4203.1.5.4" |
424 | #define LDAP_FEATURE_LANGUAGE_RANGE_OPTIONS "1.3.6.1.4.1.4203.1.5.5" |
425 | #define LDAP_FEATURE_MODIFY_INCREMENT "1.3.6.1.1.14" |
426 | |
427 | /* LDAP Experimental (works in progress) Features */ |
428 | #define LDAP_FEATURE_SUBORDINATE_SCOPE \ |
429 | "1.3.6.1.4.1.4203.666.8.1" /* "children" */ |
430 | #define LDAP_FEATURE_CHILDREN_SCOPE LDAP_FEATURE_SUBORDINATE_SCOPE |
431 | |
432 | /* |
433 | * specific LDAP instantiations of BER types we know about |
434 | */ |
435 | |
436 | /* Overview of LBER tag construction |
437 | * |
438 | * Bits |
439 | * ______ |
440 | * 8 7 | CLASS |
441 | * 0 0 = UNIVERSAL |
442 | * 0 1 = APPLICATION |
443 | * 1 0 = CONTEXT-SPECIFIC |
444 | * 1 1 = PRIVATE |
445 | * _____ |
446 | * | 6 | DATA-TYPE |
447 | * 0 = PRIMITIVE |
448 | * 1 = CONSTRUCTED |
449 | * ___________ |
450 | * | 5 ... 1 | TAG-NUMBER |
451 | */ |
452 | |
453 | /* general stuff */ |
454 | #define LDAP_TAG_MESSAGE ((ber_tag_t) 0x30U) /* constructed + 16 */ |
455 | #define LDAP_TAG_MSGID ((ber_tag_t) 0x02U) /* integer */ |
456 | |
457 | #define LDAP_TAG_LDAPDN ((ber_tag_t) 0x04U) /* octet string */ |
458 | #define LDAP_TAG_LDAPCRED ((ber_tag_t) 0x04U) /* octet string */ |
459 | |
460 | #define LDAP_TAG_CONTROLS ((ber_tag_t) 0xa0U) /* context specific + constructed + 0 */ |
461 | #define LDAP_TAG_REFERRAL ((ber_tag_t) 0xa3U) /* context specific + constructed + 3 */ |
462 | |
463 | #define LDAP_TAG_NEWSUPERIOR ((ber_tag_t) 0x80U) /* context-specific + primitive + 0 */ |
464 | |
465 | #define LDAP_TAG_EXOP_REQ_OID ((ber_tag_t) 0x80U) /* context specific + primitive */ |
466 | #define LDAP_TAG_EXOP_REQ_VALUE ((ber_tag_t) 0x81U) /* context specific + primitive */ |
467 | #define LDAP_TAG_EXOP_RES_OID ((ber_tag_t) 0x8aU) /* context specific + primitive */ |
468 | #define LDAP_TAG_EXOP_RES_VALUE ((ber_tag_t) 0x8bU) /* context specific + primitive */ |
469 | |
470 | #define LDAP_TAG_IM_RES_OID ((ber_tag_t) 0x80U) /* context specific + primitive */ |
471 | #define LDAP_TAG_IM_RES_VALUE ((ber_tag_t) 0x81U) /* context specific + primitive */ |
472 | |
473 | #define LDAP_TAG_SASL_RES_CREDS ((ber_tag_t) 0x87U) /* context specific + primitive */ |
474 | |
475 | /* LDAP Request Messages */ |
476 | #define LDAP_REQ_BIND ((ber_tag_t) 0x60U) /* application + constructed */ |
477 | #define LDAP_REQ_UNBIND ((ber_tag_t) 0x42U) /* application + primitive */ |
478 | #define LDAP_REQ_SEARCH ((ber_tag_t) 0x63U) /* application + constructed */ |
479 | #define LDAP_REQ_MODIFY ((ber_tag_t) 0x66U) /* application + constructed */ |
480 | #define LDAP_REQ_ADD ((ber_tag_t) 0x68U) /* application + constructed */ |
481 | #define LDAP_REQ_DELETE ((ber_tag_t) 0x4aU) /* application + primitive */ |
482 | #define LDAP_REQ_MODDN ((ber_tag_t) 0x6cU) /* application + constructed */ |
483 | #define LDAP_REQ_MODRDN LDAP_REQ_MODDN |
484 | #define LDAP_REQ_RENAME LDAP_REQ_MODDN |
485 | #define LDAP_REQ_COMPARE ((ber_tag_t) 0x6eU) /* application + constructed */ |
486 | #define LDAP_REQ_ABANDON ((ber_tag_t) 0x50U) /* application + primitive */ |
487 | #define LDAP_REQ_EXTENDED ((ber_tag_t) 0x77U) /* application + constructed */ |
488 | |
489 | /* LDAP Response Messages */ |
490 | #define LDAP_RES_BIND ((ber_tag_t) 0x61U) /* application + constructed */ |
491 | #define LDAP_RES_SEARCH_ENTRY ((ber_tag_t) 0x64U) /* application + constructed */ |
492 | #define LDAP_RES_SEARCH_REFERENCE ((ber_tag_t) 0x73U) /* V3: application + constructed */ |
493 | #define LDAP_RES_SEARCH_RESULT ((ber_tag_t) 0x65U) /* application + constructed */ |
494 | #define LDAP_RES_MODIFY ((ber_tag_t) 0x67U) /* application + constructed */ |
495 | #define LDAP_RES_ADD ((ber_tag_t) 0x69U) /* application + constructed */ |
496 | #define LDAP_RES_DELETE ((ber_tag_t) 0x6bU) /* application + constructed */ |
497 | #define LDAP_RES_MODDN ((ber_tag_t) 0x6dU) /* application + constructed */ |
498 | #define LDAP_RES_MODRDN LDAP_RES_MODDN /* application + constructed */ |
499 | #define LDAP_RES_RENAME LDAP_RES_MODDN /* application + constructed */ |
500 | #define LDAP_RES_COMPARE ((ber_tag_t) 0x6fU) /* application + constructed */ |
501 | #define LDAP_RES_EXTENDED ((ber_tag_t) 0x78U) /* V3: application + constructed */ |
502 | #define LDAP_RES_INTERMEDIATE ((ber_tag_t) 0x79U) /* V3+: application + constructed */ |
503 | |
504 | #define LDAP_RES_ANY (-1) |
505 | #define LDAP_RES_UNSOLICITED (0) |
506 | |
507 | |
508 | /* sasl methods */ |
509 | #define LDAP_SASL_SIMPLE ((char*)0) |
510 | #define LDAP_SASL_NULL ("") |
511 | |
512 | |
513 | /* authentication methods available */ |
514 | #define LDAP_AUTH_NONE ((ber_tag_t) 0x00U) /* no authentication */ |
515 | #define LDAP_AUTH_SIMPLE ((ber_tag_t) 0x80U) /* context specific + primitive */ |
516 | #define LDAP_AUTH_SASL ((ber_tag_t) 0xa3U) /* context specific + constructed */ |
517 | #define LDAP_AUTH_KRBV4 ((ber_tag_t) 0xffU) /* means do both of the following */ |
518 | #define LDAP_AUTH_KRBV41 ((ber_tag_t) 0x81U) /* context specific + primitive */ |
519 | #define LDAP_AUTH_KRBV42 ((ber_tag_t) 0x82U) /* context specific + primitive */ |
520 | |
521 | /* used by the Windows API but not used on the wire */ |
522 | #define LDAP_AUTH_NEGOTIATE ((ber_tag_t) 0x04FFU) |
523 | |
524 | /* filter types */ |
525 | #define LDAP_FILTER_AND ((ber_tag_t) 0xa0U) /* context specific + constructed */ |
526 | #define LDAP_FILTER_OR ((ber_tag_t) 0xa1U) /* context specific + constructed */ |
527 | #define LDAP_FILTER_NOT ((ber_tag_t) 0xa2U) /* context specific + constructed */ |
528 | #define LDAP_FILTER_EQUALITY ((ber_tag_t) 0xa3U) /* context specific + constructed */ |
529 | #define LDAP_FILTER_SUBSTRINGS ((ber_tag_t) 0xa4U) /* context specific + constructed */ |
530 | #define LDAP_FILTER_GE ((ber_tag_t) 0xa5U) /* context specific + constructed */ |
531 | #define LDAP_FILTER_LE ((ber_tag_t) 0xa6U) /* context specific + constructed */ |
532 | #define LDAP_FILTER_PRESENT ((ber_tag_t) 0x87U) /* context specific + primitive */ |
533 | #define LDAP_FILTER_APPROX ((ber_tag_t) 0xa8U) /* context specific + constructed */ |
534 | #define LDAP_FILTER_EXT ((ber_tag_t) 0xa9U) /* context specific + constructed */ |
535 | |
536 | /* extended filter component types */ |
537 | #define LDAP_FILTER_EXT_OID ((ber_tag_t) 0x81U) /* context specific */ |
538 | #define LDAP_FILTER_EXT_TYPE ((ber_tag_t) 0x82U) /* context specific */ |
539 | #define LDAP_FILTER_EXT_VALUE ((ber_tag_t) 0x83U) /* context specific */ |
540 | #define LDAP_FILTER_EXT_DNATTRS ((ber_tag_t) 0x84U) /* context specific */ |
541 | |
542 | /* substring filter component types */ |
543 | #define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U) /* context specific */ |
544 | #define LDAP_SUBSTRING_ANY ((ber_tag_t) 0x81U) /* context specific */ |
545 | #define LDAP_SUBSTRING_FINAL ((ber_tag_t) 0x82U) /* context specific */ |
546 | |
547 | /* search scopes */ |
548 | #define LDAP_SCOPE_BASE ((ber_int_t) 0x0000) |
549 | #define LDAP_SCOPE_BASEOBJECT LDAP_SCOPE_BASE |
550 | #define LDAP_SCOPE_ONELEVEL ((ber_int_t) 0x0001) |
551 | #define LDAP_SCOPE_ONE LDAP_SCOPE_ONELEVEL |
552 | #define LDAP_SCOPE_SUBTREE ((ber_int_t) 0x0002) |
553 | #define LDAP_SCOPE_SUB LDAP_SCOPE_SUBTREE |
554 | #define LDAP_SCOPE_SUBORDINATE ((ber_int_t) 0x0003) /* OpenLDAP extension */ |
555 | #define LDAP_SCOPE_CHILDREN LDAP_SCOPE_SUBORDINATE |
556 | #define LDAP_SCOPE_DEFAULT ((ber_int_t) -1) /* OpenLDAP extension */ |
557 | |
558 | /* substring filter component types */ |
559 | #define LDAP_SUBSTRING_INITIAL ((ber_tag_t) 0x80U) /* context specific */ |
560 | #define LDAP_SUBSTRING_ANY ((ber_tag_t) 0x81U) /* context specific */ |
561 | #define LDAP_SUBSTRING_FINAL ((ber_tag_t) 0x82U) /* context specific */ |
562 | |
563 | /* |
564 | * LDAP Result Codes |
565 | */ |
566 | #define LDAP_SUCCESS 0x00 |
567 | |
568 | #define LDAP_RANGE(n,x,y) (((x) <= (n)) && ((n) <= (y))) |
569 | |
570 | #define LDAP_OPERATIONS_ERROR 0x01 |
571 | #define LDAP_PROTOCOL_ERROR 0x02 |
572 | #define LDAP_TIMELIMIT_EXCEEDED 0x03 |
573 | #define LDAP_SIZELIMIT_EXCEEDED 0x04 |
574 | #define LDAP_COMPARE_FALSE 0x05 |
575 | #define LDAP_COMPARE_TRUE 0x06 |
576 | #define LDAP_AUTH_METHOD_NOT_SUPPORTED 0x07 |
577 | #define LDAP_STRONG_AUTH_NOT_SUPPORTED LDAP_AUTH_METHOD_NOT_SUPPORTED |
578 | #define LDAP_STRONG_AUTH_REQUIRED 0x08 |
579 | #define LDAP_STRONGER_AUTH_REQUIRED LDAP_STRONG_AUTH_REQUIRED |
580 | #define LDAP_PARTIAL_RESULTS 0x09 /* LDAPv2+ (not LDAPv3) */ |
581 | |
582 | #define LDAP_REFERRAL 0x0a /* LDAPv3 */ |
583 | #define LDAP_ADMINLIMIT_EXCEEDED 0x0b /* LDAPv3 */ |
584 | #define LDAP_UNAVAILABLE_CRITICAL_EXTENSION 0x0c /* LDAPv3 */ |
585 | #define LDAP_CONFIDENTIALITY_REQUIRED 0x0d /* LDAPv3 */ |
586 | #define LDAP_SASL_BIND_IN_PROGRESS 0x0e /* LDAPv3 */ |
587 | |
588 | #define LDAP_ATTR_ERROR(n) LDAP_RANGE((n),0x10,0x15) /* 16-21 */ |
589 | |
590 | #define LDAP_NO_SUCH_ATTRIBUTE 0x10 |
591 | #define LDAP_UNDEFINED_TYPE 0x11 |
592 | #define LDAP_INAPPROPRIATE_MATCHING 0x12 |
593 | #define LDAP_CONSTRAINT_VIOLATION 0x13 |
594 | #define LDAP_TYPE_OR_VALUE_EXISTS 0x14 |
595 | #define LDAP_INVALID_SYNTAX 0x15 |
596 | |
597 | #define LDAP_NAME_ERROR(n) LDAP_RANGE((n),0x20,0x24) /* 32-34,36 */ |
598 | |
599 | #define LDAP_NO_SUCH_OBJECT 0x20 |
600 | #define LDAP_ALIAS_PROBLEM 0x21 |
601 | #define LDAP_INVALID_DN_SYNTAX 0x22 |
602 | #define LDAP_IS_LEAF 0x23 /* not LDAPv3 */ |
603 | #define LDAP_ALIAS_DEREF_PROBLEM 0x24 |
604 | |
605 | #define LDAP_SECURITY_ERROR(n) LDAP_RANGE((n),0x2F,0x32) /* 47-50 */ |
606 | |
607 | #define LDAP_X_PROXY_AUTHZ_FAILURE 0x2F /* LDAPv3 proxy authorization */ |
608 | #define LDAP_INAPPROPRIATE_AUTH 0x30 |
609 | #define LDAP_INVALID_CREDENTIALS 0x31 |
610 | #define LDAP_INSUFFICIENT_ACCESS 0x32 |
611 | |
612 | #define LDAP_SERVICE_ERROR(n) LDAP_RANGE((n),0x33,0x36) /* 51-54 */ |
613 | |
614 | #define LDAP_BUSY 0x33 |
615 | #define LDAP_UNAVAILABLE 0x34 |
616 | #define LDAP_UNWILLING_TO_PERFORM 0x35 |
617 | #define LDAP_LOOP_DETECT 0x36 |
618 | |
619 | #define LDAP_UPDATE_ERROR(n) LDAP_RANGE((n),0x40,0x47) /* 64-69,71 */ |
620 | |
621 | #define LDAP_NAMING_VIOLATION 0x40 |
622 | #define LDAP_OBJECT_CLASS_VIOLATION 0x41 |
623 | #define LDAP_NOT_ALLOWED_ON_NONLEAF 0x42 |
624 | #define LDAP_NOT_ALLOWED_ON_RDN 0x43 |
625 | #define LDAP_ALREADY_EXISTS 0x44 |
626 | #define LDAP_NO_OBJECT_CLASS_MODS 0x45 |
627 | #define LDAP_RESULTS_TOO_LARGE 0x46 /* CLDAP */ |
628 | #define LDAP_AFFECTS_MULTIPLE_DSAS 0x47 |
629 | |
630 | #define LDAP_VLV_ERROR 0x4C |
631 | |
632 | #define LDAP_OTHER 0x50 |
633 | |
634 | /* LCUP operation codes (113-117) - not implemented */ |
635 | #define LDAP_CUP_RESOURCES_EXHAUSTED 0x71 |
636 | #define LDAP_CUP_SECURITY_VIOLATION 0x72 |
637 | #define LDAP_CUP_INVALID_DATA 0x73 |
638 | #define LDAP_CUP_UNSUPPORTED_SCHEME 0x74 |
639 | #define LDAP_CUP_RELOAD_REQUIRED 0x75 |
640 | |
641 | /* Cancel operation codes (118-121) */ |
642 | #define LDAP_CANCELLED 0x76 |
643 | #define LDAP_NO_SUCH_OPERATION 0x77 |
644 | #define LDAP_TOO_LATE 0x78 |
645 | #define LDAP_CANNOT_CANCEL 0x79 |
646 | |
647 | /* Assertion control (122) */ |
648 | #define LDAP_ASSERTION_FAILED 0x7A |
649 | |
650 | /* Proxied Authorization Denied (123) */ |
651 | #define LDAP_PROXIED_AUTHORIZATION_DENIED 0x7B |
652 | |
653 | /* Experimental result codes */ |
654 | #define LDAP_E_ERROR(n) LDAP_RANGE((n),0x1000,0x3FFF) |
655 | |
656 | /* LDAP Sync (4096) */ |
657 | #define LDAP_SYNC_REFRESH_REQUIRED 0x1000 |
658 | |
659 | |
660 | /* Private Use result codes */ |
661 | #define LDAP_X_ERROR(n) LDAP_RANGE((n),0x4000,0xFFFF) |
662 | |
663 | #define LDAP_X_SYNC_REFRESH_REQUIRED 0x4100 /* defunct */ |
664 | #define LDAP_X_ASSERTION_FAILED 0x410f /* defunct */ |
665 | |
666 | /* for the LDAP No-Op control */ |
667 | #define LDAP_X_NO_OPERATION 0x410e |
668 | |
669 | /* for the Chaining Behavior control (consecutive result codes requested; |
670 | * see <draft-sermersheim-ldap-chaining> ) */ |
671 | #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR |
672 | #define LDAP_X_NO_REFERRALS_FOUND 0x4110 |
673 | #define LDAP_X_CANNOT_CHAIN 0x4111 |
674 | #endif |
675 | |
676 | /* for Distributed Procedures (see <draft-sermersheim-ldap-distproc>) */ |
677 | #ifdef LDAP_X_DISTPROC_BASE |
678 | #define LDAP_X_INVALIDREFERENCE 0x4112 |
679 | #endif |
680 | |
681 | #ifdef LDAP_X_TXN |
682 | #define LDAP_X_TXN_SPECIFY_OKAY 0x4120 |
683 | #define LDAP_X_TXN_ID_INVALID 0x4121 |
684 | #endif |
685 | |
686 | /* API Error Codes |
687 | * |
688 | * Based on draft-ietf-ldap-c-api-xx |
689 | * but with new negative code values |
690 | */ |
691 | #define LDAP_API_ERROR(n) ((n)<0) |
692 | #define LDAP_API_RESULT(n) ((n)<=0) |
693 | |
694 | #define LDAP_SERVER_DOWN (-1) |
695 | #define LDAP_LOCAL_ERROR (-2) |
696 | #define LDAP_ENCODING_ERROR (-3) |
697 | #define LDAP_DECODING_ERROR (-4) |
698 | #define LDAP_TIMEOUT (-5) |
699 | #define LDAP_AUTH_UNKNOWN (-6) |
700 | #define LDAP_FILTER_ERROR (-7) |
701 | #define LDAP_USER_CANCELLED (-8) |
702 | #define LDAP_PARAM_ERROR (-9) |
703 | #define LDAP_NO_MEMORY (-10) |
704 | #define LDAP_CONNECT_ERROR (-11) |
705 | #define LDAP_NOT_SUPPORTED (-12) |
706 | #define LDAP_CONTROL_NOT_FOUND (-13) |
707 | #define LDAP_NO_RESULTS_RETURNED (-14) |
708 | #define LDAP_MORE_RESULTS_TO_RETURN (-15) /* Obsolete */ |
709 | #define LDAP_CLIENT_LOOP (-16) |
710 | #define LDAP_REFERRAL_LIMIT_EXCEEDED (-17) |
711 | #define LDAP_X_CONNECTING (-18) |
712 | |
713 | |
714 | /* |
715 | * This structure represents both ldap messages and ldap responses. |
716 | * These are really the same, except in the case of search responses, |
717 | * where a response has multiple messages. |
718 | */ |
719 | |
720 | typedef struct ldapmsg LDAPMessage; |
721 | |
722 | /* for modifications */ |
723 | typedef struct ldapmod { |
724 | int mod_op; |
725 | |
726 | #define LDAP_MOD_OP (0x0007) |
727 | #define LDAP_MOD_ADD (0x0000) |
728 | #define LDAP_MOD_DELETE (0x0001) |
729 | #define LDAP_MOD_REPLACE (0x0002) |
730 | #define LDAP_MOD_INCREMENT (0x0003) /* OpenLDAP extension */ |
731 | #define LDAP_MOD_BVALUES (0x0080) |
732 | /* IMPORTANT: do not use code 0x1000 (or above), |
733 | * it is used internally by the backends! |
734 | * (see ldap/servers/slapd/slap.h) |
735 | */ |
736 | |
737 | char *mod_type; |
738 | union mod_vals_u { |
739 | char **modv_strvals; |
740 | struct berval **modv_bvals; |
741 | } mod_vals; |
742 | #define mod_values mod_vals.modv_strvals |
743 | #define mod_bvalues mod_vals.modv_bvals |
744 | } LDAPMod; |
745 | |
746 | /* |
747 | * structure representing an ldap session which can |
748 | * encompass connections to multiple servers (in the |
749 | * face of referrals). |
750 | */ |
751 | typedef struct ldap LDAP; |
752 | |
753 | #define LDAP_DEREF_NEVER 0x00 |
754 | #define LDAP_DEREF_SEARCHING 0x01 |
755 | #define LDAP_DEREF_FINDING 0x02 |
756 | #define LDAP_DEREF_ALWAYS 0x03 |
757 | |
758 | #define LDAP_NO_LIMIT 0 |
759 | |
760 | /* how many messages to retrieve results for */ |
761 | #define LDAP_MSG_ONE 0x00 |
762 | #define LDAP_MSG_ALL 0x01 |
763 | #define LDAP_MSG_RECEIVED 0x02 |
764 | |
765 | /* |
766 | * types for ldap URL handling |
767 | */ |
768 | typedef struct ldap_url_desc { |
769 | struct ldap_url_desc *lud_next; |
770 | char *lud_scheme; |
771 | char *lud_host; |
772 | int lud_port; |
773 | char *lud_dn; |
774 | char **lud_attrs; |
775 | int lud_scope; |
776 | char *lud_filter; |
777 | char **lud_exts; |
778 | int lud_crit_exts; |
779 | } LDAPURLDesc; |
780 | |
781 | #define LDAP_URL_SUCCESS 0x00 /* Success */ |
782 | #define LDAP_URL_ERR_MEM 0x01 /* can't allocate memory space */ |
783 | #define LDAP_URL_ERR_PARAM 0x02 /* parameter is bad */ |
784 | |
785 | #define LDAP_URL_ERR_BADSCHEME 0x03 /* URL doesn't begin with "ldap[si]://" */ |
786 | #define LDAP_URL_ERR_BADENCLOSURE 0x04 /* URL is missing trailing ">" */ |
787 | #define LDAP_URL_ERR_BADURL 0x05 /* URL is bad */ |
788 | #define LDAP_URL_ERR_BADHOST 0x06 /* host port is bad */ |
789 | #define LDAP_URL_ERR_BADATTRS 0x07 /* bad (or missing) attributes */ |
790 | #define LDAP_URL_ERR_BADSCOPE 0x08 /* scope string is invalid (or missing) */ |
791 | #define LDAP_URL_ERR_BADFILTER 0x09 /* bad or missing filter */ |
792 | #define LDAP_URL_ERR_BADEXTS 0x0a /* bad or missing extensions */ |
793 | |
794 | /* |
795 | * LDAP sync (RFC4533) API |
796 | */ |
797 | |
798 | typedef struct ldap_sync_t ldap_sync_t; |
799 | |
800 | typedef enum { |
801 | /* these are private - the client should never see them */ |
802 | LDAP_SYNC_CAPI_NONE = -1, |
803 | |
804 | LDAP_SYNC_CAPI_PHASE_FLAG = 0x10U, |
805 | LDAP_SYNC_CAPI_IDSET_FLAG = 0x20U, |
806 | LDAP_SYNC_CAPI_DONE_FLAG = 0x40U, |
807 | |
808 | /* these are passed to ls_search_entry() */ |
809 | LDAP_SYNC_CAPI_PRESENT = LDAP_SYNC_PRESENT, |
810 | LDAP_SYNC_CAPI_ADD = LDAP_SYNC_ADD, |
811 | LDAP_SYNC_CAPI_MODIFY = LDAP_SYNC_MODIFY, |
812 | LDAP_SYNC_CAPI_DELETE = LDAP_SYNC_DELETE, |
813 | |
814 | /* these are passed to ls_intermediate() */ |
815 | LDAP_SYNC_CAPI_PRESENTS = ( LDAP_SYNC_CAPI_PHASE_FLAG | LDAP_SYNC_CAPI_PRESENT ), |
816 | LDAP_SYNC_CAPI_DELETES = ( LDAP_SYNC_CAPI_PHASE_FLAG | LDAP_SYNC_CAPI_DELETE ), |
817 | |
818 | LDAP_SYNC_CAPI_PRESENTS_IDSET = ( LDAP_SYNC_CAPI_PRESENTS | LDAP_SYNC_CAPI_IDSET_FLAG ), |
819 | LDAP_SYNC_CAPI_DELETES_IDSET = ( LDAP_SYNC_CAPI_DELETES | LDAP_SYNC_CAPI_IDSET_FLAG ), |
820 | |
821 | LDAP_SYNC_CAPI_DONE = ( LDAP_SYNC_CAPI_DONE_FLAG | LDAP_SYNC_CAPI_PRESENTS ) |
822 | } ldap_sync_refresh_t; |
823 | |
824 | /* |
825 | * Called when an entry is returned by ldap_result(). |
826 | * If phase is LDAP_SYNC_CAPI_ADD or LDAP_SYNC_CAPI_MODIFY, |
827 | * the entry has been either added or modified, and thus |
828 | * the complete view of the entry should be in the LDAPMessage. |
829 | * If phase is LDAP_SYNC_CAPI_PRESENT or LDAP_SYNC_CAPI_DELETE, |
830 | * only the DN should be in the LDAPMessage. |
831 | */ |
832 | typedef int (*ldap_sync_search_entry_f) LDAP_P(( |
833 | ldap_sync_t *ls, |
834 | LDAPMessage *msg, |
835 | struct berval *entryUUID, |
836 | ldap_sync_refresh_t phase )); |
837 | |
838 | /* |
839 | * Called when a reference is returned; the client should know |
840 | * what to do with it. |
841 | */ |
842 | typedef int (*ldap_sync_search_reference_f) LDAP_P(( |
843 | ldap_sync_t *ls, |
844 | LDAPMessage *msg )); |
845 | |
846 | /* |
847 | * Called when specific intermediate/final messages are returned. |
848 | * If phase is LDAP_SYNC_CAPI_PRESENTS or LDAP_SYNC_CAPI_DELETES, |
849 | * a "presents" or "deletes" phase begins. |
850 | * If phase is LDAP_SYNC_CAPI_DONE, a special "presents" phase |
851 | * with refreshDone set to "TRUE" has been returned, to indicate |
852 | * that the refresh phase of a refreshAndPersist is complete. |
853 | * In the above cases, syncUUIDs is NULL. |
854 | * |
855 | * If phase is LDAP_SYNC_CAPI_PRESENTS_IDSET or |
856 | * LDAP_SYNC_CAPI_DELETES_IDSET, syncUUIDs is an array of UUIDs |
857 | * that are either present or have been deleted. |
858 | */ |
859 | typedef int (*ldap_sync_intermediate_f) LDAP_P(( |
860 | ldap_sync_t *ls, |
861 | LDAPMessage *msg, |
862 | BerVarray syncUUIDs, |
863 | ldap_sync_refresh_t phase )); |
864 | |
865 | /* |
866 | * Called when a searchResultDone is returned. In refreshAndPersist, |
867 | * this can only occur if the search for any reason is being terminated |
868 | * by the server. |
869 | */ |
870 | typedef int (*ldap_sync_search_result_f) LDAP_P(( |
871 | ldap_sync_t *ls, |
872 | LDAPMessage *msg, |
873 | int refreshDeletes )); |
874 | |
875 | /* |
876 | * This structure contains all information about the persistent search; |
877 | * the caller is responsible for connecting, setting version, binding, tls... |
878 | */ |
879 | struct ldap_sync_t { |
880 | /* conf search params */ |
881 | char *ls_base; |
882 | int ls_scope; |
883 | char *ls_filter; |
884 | char **ls_attrs; |
885 | int ls_timelimit; |
886 | int ls_sizelimit; |
887 | |
888 | /* poll timeout */ |
889 | int ls_timeout; |
890 | |
891 | /* helpers - add as appropriate */ |
892 | ldap_sync_search_entry_f ls_search_entry; |
893 | ldap_sync_search_reference_f ls_search_reference; |
894 | ldap_sync_intermediate_f ls_intermediate; |
895 | ldap_sync_search_result_f ls_search_result; |
896 | |
897 | /* set by the caller as appropriate */ |
898 | void *ls_private; |
899 | |
900 | /* conn stuff */ |
901 | LDAP *ls_ld; |
902 | |
903 | /* --- the parameters below are private - do not modify --- */ |
904 | |
905 | /* FIXME: make the structure opaque, and provide an interface |
906 | * to modify the public values? */ |
907 | |
908 | /* result stuff */ |
909 | int ls_msgid; |
910 | |
911 | /* sync stuff */ |
912 | /* needed by refreshOnly */ |
913 | int ls_reloadHint; |
914 | |
915 | /* opaque - need to pass between sessions, updated by the API */ |
916 | struct berval ls_cookie; |
917 | |
918 | /* state variable - do not modify */ |
919 | ldap_sync_refresh_t ls_refreshPhase; |
920 | }; |
921 | |
922 | /* |
923 | * End of LDAP sync (RFC4533) API |
924 | */ |
925 | |
926 | /* |
927 | * Connection callbacks... |
928 | */ |
929 | struct ldap_conncb; |
930 | struct sockaddr; |
931 | |
932 | /* Called after a connection is established */ |
933 | typedef int (ldap_conn_add_f) LDAP_P(( LDAP *ld, Sockbuf *sb, LDAPURLDesc *srv, struct sockaddr *addr, |
934 | struct ldap_conncb *ctx )); |
935 | /* Called before a connection is closed */ |
936 | typedef void (ldap_conn_del_f) LDAP_P(( LDAP *ld, Sockbuf *sb, struct ldap_conncb *ctx )); |
937 | |
938 | /* Callbacks are pushed on a stack. Last one pushed is first one executed. The |
939 | * delete callback is called with a NULL Sockbuf just before freeing the LDAP handle. |
940 | */ |
941 | typedef struct ldap_conncb { |
942 | ldap_conn_add_f *lc_add; |
943 | ldap_conn_del_f *lc_del; |
944 | void *lc_arg; |
945 | } ldap_conncb; |
946 | |
947 | /* |
948 | * The API draft spec says we should declare (or cause to be declared) |
949 | * 'struct timeval'. We don't. See IETF LDAPext discussions. |
950 | */ |
951 | struct timeval; |
952 | |
953 | /* |
954 | * in options.c: |
955 | */ |
956 | LDAP_F( int ) |
957 | ldap_get_option LDAP_P(( |
958 | LDAP *ld, |
959 | int option, |
960 | void *outvalue)); |
961 | |
962 | LDAP_F( int ) |
963 | ldap_set_option LDAP_P(( |
964 | LDAP *ld, |
965 | int option, |
966 | LDAP_CONST void *invalue)); |
967 | |
968 | /* V3 REBIND Function Callback Prototype */ |
969 | typedef int (LDAP_REBIND_PROC) LDAP_P(( |
970 | LDAP *ld, LDAP_CONST char *url, |
971 | ber_tag_t request, ber_int_t msgid, |
972 | void *params )); |
973 | |
974 | LDAP_F( int ) |
975 | ldap_set_rebind_proc LDAP_P(( |
976 | LDAP *ld, |
977 | LDAP_REBIND_PROC *rebind_proc, |
978 | void *params )); |
979 | |
980 | /* V3 referral selection Function Callback Prototype */ |
981 | typedef int (LDAP_NEXTREF_PROC) LDAP_P(( |
982 | LDAP *ld, char ***refsp, int *cntp, |
983 | void *params )); |
984 | |
985 | LDAP_F( int ) |
986 | ldap_set_nextref_proc LDAP_P(( |
987 | LDAP *ld, |
988 | LDAP_NEXTREF_PROC *nextref_proc, |
989 | void *params )); |
990 | |
991 | /* V3 URLLIST Function Callback Prototype */ |
992 | typedef int (LDAP_URLLIST_PROC) LDAP_P(( |
993 | LDAP *ld, |
994 | LDAPURLDesc **urllist, |
995 | LDAPURLDesc **url, |
996 | void *params )); |
997 | |
998 | LDAP_F( int ) |
999 | ldap_set_urllist_proc LDAP_P(( |
1000 | LDAP *ld, |
1001 | LDAP_URLLIST_PROC *urllist_proc, |
1002 | void *params )); |
1003 | |
1004 | /* |
1005 | * in controls.c: |
1006 | */ |
1007 | #if LDAP_DEPRECATED |
1008 | LDAP_F( int ) |
1009 | ldap_create_control LDAP_P(( /* deprecated, use ldap_control_create */ |
1010 | LDAP_CONST char *requestOID, |
1011 | BerElement *ber, |
1012 | int iscritical, |
1013 | LDAPControl **ctrlp )); |
1014 | |
1015 | LDAP_F( LDAPControl * ) |
1016 | ldap_find_control LDAP_P(( /* deprecated, use ldap_control_find */ |
1017 | LDAP_CONST char *oid, |
1018 | LDAPControl **ctrls )); |
1019 | #endif |
1020 | |
1021 | LDAP_F( int ) |
1022 | ldap_control_create LDAP_P(( |
1023 | LDAP_CONST char *requestOID, |
1024 | int iscritical, |
1025 | struct berval *value, |
1026 | int dupval, |
1027 | LDAPControl **ctrlp )); |
1028 | |
1029 | LDAP_F( LDAPControl * ) |
1030 | ldap_control_find LDAP_P(( |
1031 | LDAP_CONST char *oid, |
1032 | LDAPControl **ctrls, |
1033 | LDAPControl ***nextctrlp )); |
1034 | |
1035 | LDAP_F( void ) |
1036 | ldap_control_free LDAP_P(( |
1037 | LDAPControl *ctrl )); |
1038 | |
1039 | LDAP_F( void ) |
1040 | ldap_controls_free LDAP_P(( |
1041 | LDAPControl **ctrls )); |
1042 | |
1043 | LDAP_F( LDAPControl ** ) |
1044 | ldap_controls_dup LDAP_P(( |
1045 | LDAPControl *LDAP_CONST *controls )); |
1046 | |
1047 | LDAP_F( LDAPControl * ) |
1048 | ldap_control_dup LDAP_P(( |
1049 | LDAP_CONST LDAPControl *c )); |
1050 | |
1051 | /* |
1052 | * in dnssrv.c: |
1053 | */ |
1054 | LDAP_F( int ) |
1055 | ldap_domain2dn LDAP_P(( |
1056 | LDAP_CONST char* domain, |
1057 | char** dn )); |
1058 | |
1059 | LDAP_F( int ) |
1060 | ldap_dn2domain LDAP_P(( |
1061 | LDAP_CONST char* dn, |
1062 | char** domain )); |
1063 | |
1064 | LDAP_F( int ) |
1065 | ldap_domain2hostlist LDAP_P(( |
1066 | LDAP_CONST char *domain, |
1067 | char** hostlist )); |
1068 | |
1069 | /* |
1070 | * in extended.c: |
1071 | */ |
1072 | LDAP_F( int ) |
1073 | ldap_extended_operation LDAP_P(( |
1074 | LDAP *ld, |
1075 | LDAP_CONST char *reqoid, |
1076 | struct berval *reqdata, |
1077 | LDAPControl **serverctrls, |
1078 | LDAPControl **clientctrls, |
1079 | int *msgidp )); |
1080 | |
1081 | LDAP_F( int ) |
1082 | ldap_extended_operation_s LDAP_P(( |
1083 | LDAP *ld, |
1084 | LDAP_CONST char *reqoid, |
1085 | struct berval *reqdata, |
1086 | LDAPControl **serverctrls, |
1087 | LDAPControl **clientctrls, |
1088 | char **retoidp, |
1089 | struct berval **retdatap )); |
1090 | |
1091 | LDAP_F( int ) |
1092 | ldap_parse_extended_result LDAP_P(( |
1093 | LDAP *ld, |
1094 | LDAPMessage *res, |
1095 | char **retoidp, |
1096 | struct berval **retdatap, |
1097 | int freeit )); |
1098 | |
1099 | LDAP_F( int ) |
1100 | ldap_parse_intermediate LDAP_P(( |
1101 | LDAP *ld, |
1102 | LDAPMessage *res, |
1103 | char **retoidp, |
1104 | struct berval **retdatap, |
1105 | LDAPControl ***serverctrls, |
1106 | int freeit )); |
1107 | |
1108 | |
1109 | /* |
1110 | * in abandon.c: |
1111 | */ |
1112 | LDAP_F( int ) |
1113 | ldap_abandon_ext LDAP_P(( |
1114 | LDAP *ld, |
1115 | int msgid, |
1116 | LDAPControl **serverctrls, |
1117 | LDAPControl **clientctrls )); |
1118 | |
1119 | #if LDAP_DEPRECATED |
1120 | LDAP_F( int ) |
1121 | ldap_abandon LDAP_P(( /* deprecated, use ldap_abandon_ext */ |
1122 | LDAP *ld, |
1123 | int msgid )); |
1124 | #endif |
1125 | |
1126 | /* |
1127 | * in add.c: |
1128 | */ |
1129 | LDAP_F( int ) |
1130 | ldap_add_ext LDAP_P(( |
1131 | LDAP *ld, |
1132 | LDAP_CONST char *dn, |
1133 | LDAPMod **attrs, |
1134 | LDAPControl **serverctrls, |
1135 | LDAPControl **clientctrls, |
1136 | int *msgidp )); |
1137 | |
1138 | LDAP_F( int ) |
1139 | ldap_add_ext_s LDAP_P(( |
1140 | LDAP *ld, |
1141 | LDAP_CONST char *dn, |
1142 | LDAPMod **attrs, |
1143 | LDAPControl **serverctrls, |
1144 | LDAPControl **clientctrls )); |
1145 | |
1146 | #if LDAP_DEPRECATED |
1147 | LDAP_F( int ) |
1148 | ldap_add LDAP_P(( /* deprecated, use ldap_add_ext */ |
1149 | LDAP *ld, |
1150 | LDAP_CONST char *dn, |
1151 | LDAPMod **attrs )); |
1152 | |
1153 | LDAP_F( int ) |
1154 | ldap_add_s LDAP_P(( /* deprecated, use ldap_add_ext_s */ |
1155 | LDAP *ld, |
1156 | LDAP_CONST char *dn, |
1157 | LDAPMod **attrs )); |
1158 | #endif |
1159 | |
1160 | |
1161 | /* |
1162 | * in sasl.c: |
1163 | */ |
1164 | LDAP_F( int ) |
1165 | ldap_sasl_bind LDAP_P(( |
1166 | LDAP *ld, |
1167 | LDAP_CONST char *dn, |
1168 | LDAP_CONST char *mechanism, |
1169 | struct berval *cred, |
1170 | LDAPControl **serverctrls, |
1171 | LDAPControl **clientctrls, |
1172 | int *msgidp )); |
1173 | |
1174 | /* Interaction flags (should be passed about in a control) |
1175 | * Automatic (default): use defaults, prompt otherwise |
1176 | * Interactive: prompt always |
1177 | * Quiet: never prompt |
1178 | */ |
1179 | #define LDAP_SASL_AUTOMATIC 0U |
1180 | #define LDAP_SASL_INTERACTIVE 1U |
1181 | #define LDAP_SASL_QUIET 2U |
1182 | |
1183 | /* |
1184 | * V3 SASL Interaction Function Callback Prototype |
1185 | * when using Cyrus SASL, interact is pointer to sasl_interact_t |
1186 | * should likely passed in a control (and provided controls) |
1187 | */ |
1188 | typedef int (LDAP_SASL_INTERACT_PROC) LDAP_P(( |
1189 | LDAP *ld, unsigned flags, void* defaults, void *interact )); |
1190 | |
1191 | LDAP_F( int ) |
1192 | ldap_sasl_interactive_bind LDAP_P(( |
1193 | LDAP *ld, |
1194 | LDAP_CONST char *dn, /* usually NULL */ |
1195 | LDAP_CONST char *saslMechanism, |
1196 | LDAPControl **serverControls, |
1197 | LDAPControl **clientControls, |
1198 | |
1199 | /* should be client controls */ |
1200 | unsigned flags, |
1201 | LDAP_SASL_INTERACT_PROC *proc, |
1202 | void *defaults, |
1203 | |
1204 | /* as obtained from ldap_result() */ |
1205 | LDAPMessage *result, |
1206 | |
1207 | /* returned during bind processing */ |
1208 | const char **rmech, |
1209 | int *msgid )); |
1210 | |
1211 | LDAP_F( int ) |
1212 | ldap_sasl_interactive_bind_s LDAP_P(( |
1213 | LDAP *ld, |
1214 | LDAP_CONST char *dn, /* usually NULL */ |
1215 | LDAP_CONST char *saslMechanism, |
1216 | LDAPControl **serverControls, |
1217 | LDAPControl **clientControls, |
1218 | |
1219 | /* should be client controls */ |
1220 | unsigned flags, |
1221 | LDAP_SASL_INTERACT_PROC *proc, |
1222 | void *defaults )); |
1223 | |
1224 | LDAP_F( int ) |
1225 | ldap_sasl_bind_s LDAP_P(( |
1226 | LDAP *ld, |
1227 | LDAP_CONST char *dn, |
1228 | LDAP_CONST char *mechanism, |
1229 | struct berval *cred, |
1230 | LDAPControl **serverctrls, |
1231 | LDAPControl **clientctrls, |
1232 | struct berval **servercredp )); |
1233 | |
1234 | LDAP_F( int ) |
1235 | ldap_parse_sasl_bind_result LDAP_P(( |
1236 | LDAP *ld, |
1237 | LDAPMessage *res, |
1238 | struct berval **servercredp, |
1239 | int freeit )); |
1240 | |
1241 | #if LDAP_DEPRECATED |
1242 | /* |
1243 | * in bind.c: |
1244 | * (deprecated) |
1245 | */ |
1246 | LDAP_F( int ) |
1247 | ldap_bind LDAP_P(( /* deprecated, use ldap_sasl_bind */ |
1248 | LDAP *ld, |
1249 | LDAP_CONST char *who, |
1250 | LDAP_CONST char *passwd, |
1251 | int authmethod )); |
1252 | |
1253 | LDAP_F( int ) |
1254 | ldap_bind_s LDAP_P(( /* deprecated, use ldap_sasl_bind_s */ |
1255 | LDAP *ld, |
1256 | LDAP_CONST char *who, |
1257 | LDAP_CONST char *cred, |
1258 | int authmethod )); |
1259 | |
1260 | /* |
1261 | * in sbind.c: |
1262 | */ |
1263 | LDAP_F( int ) |
1264 | ldap_simple_bind LDAP_P(( /* deprecated, use ldap_sasl_bind */ |
1265 | LDAP *ld, |
1266 | LDAP_CONST char *who, |
1267 | LDAP_CONST char *passwd )); |
1268 | |
1269 | LDAP_F( int ) |
1270 | ldap_simple_bind_s LDAP_P(( /* deprecated, use ldap_sasl_bind_s */ |
1271 | LDAP *ld, |
1272 | LDAP_CONST char *who, |
1273 | LDAP_CONST char *passwd )); |
1274 | |
1275 | #endif |
1276 | |
1277 | |
1278 | /* |
1279 | * in compare.c: |
1280 | */ |
1281 | LDAP_F( int ) |
1282 | ldap_compare_ext LDAP_P(( |
1283 | LDAP *ld, |
1284 | LDAP_CONST char *dn, |
1285 | LDAP_CONST char *attr, |
1286 | struct berval *bvalue, |
1287 | LDAPControl **serverctrls, |
1288 | LDAPControl **clientctrls, |
1289 | int *msgidp )); |
1290 | |
1291 | LDAP_F( int ) |
1292 | ldap_compare_ext_s LDAP_P(( |
1293 | LDAP *ld, |
1294 | LDAP_CONST char *dn, |
1295 | LDAP_CONST char *attr, |
1296 | struct berval *bvalue, |
1297 | LDAPControl **serverctrls, |
1298 | LDAPControl **clientctrls )); |
1299 | |
1300 | #if LDAP_DEPRECATED |
1301 | LDAP_F( int ) |
1302 | ldap_compare LDAP_P(( /* deprecated, use ldap_compare_ext */ |
1303 | LDAP *ld, |
1304 | LDAP_CONST char *dn, |
1305 | LDAP_CONST char *attr, |
1306 | LDAP_CONST char *value )); |
1307 | |
1308 | LDAP_F( int ) |
1309 | ldap_compare_s LDAP_P(( /* deprecated, use ldap_compare_ext_s */ |
1310 | LDAP *ld, |
1311 | LDAP_CONST char *dn, |
1312 | LDAP_CONST char *attr, |
1313 | LDAP_CONST char *value )); |
1314 | #endif |
1315 | |
1316 | |
1317 | /* |
1318 | * in delete.c: |
1319 | */ |
1320 | LDAP_F( int ) |
1321 | ldap_delete_ext LDAP_P(( |
1322 | LDAP *ld, |
1323 | LDAP_CONST char *dn, |
1324 | LDAPControl **serverctrls, |
1325 | LDAPControl **clientctrls, |
1326 | int *msgidp )); |
1327 | |
1328 | LDAP_F( int ) |
1329 | ldap_delete_ext_s LDAP_P(( |
1330 | LDAP *ld, |
1331 | LDAP_CONST char *dn, |
1332 | LDAPControl **serverctrls, |
1333 | LDAPControl **clientctrls )); |
1334 | |
1335 | #if LDAP_DEPRECATED |
1336 | LDAP_F( int ) |
1337 | ldap_delete LDAP_P(( /* deprecated, use ldap_delete_ext */ |
1338 | LDAP *ld, |
1339 | LDAP_CONST char *dn )); |
1340 | |
1341 | LDAP_F( int ) |
1342 | ldap_delete_s LDAP_P(( /* deprecated, use ldap_delete_ext_s */ |
1343 | LDAP *ld, |
1344 | LDAP_CONST char *dn )); |
1345 | #endif |
1346 | |
1347 | |
1348 | /* |
1349 | * in error.c: |
1350 | */ |
1351 | LDAP_F( int ) |
1352 | ldap_parse_result LDAP_P(( |
1353 | LDAP *ld, |
1354 | LDAPMessage *res, |
1355 | int *errcodep, |
1356 | char **matcheddnp, |
1357 | char **errmsgp, |
1358 | char ***referralsp, |
1359 | LDAPControl ***serverctrls, |
1360 | int freeit )); |
1361 | |
1362 | LDAP_F( char * ) |
1363 | ldap_err2string LDAP_P(( |
1364 | int err )); |
1365 | |
1366 | #if LDAP_DEPRECATED |
1367 | LDAP_F( int ) |
1368 | ldap_result2error LDAP_P(( /* deprecated, use ldap_parse_result */ |
1369 | LDAP *ld, |
1370 | LDAPMessage *r, |
1371 | int freeit )); |
1372 | |
1373 | LDAP_F( void ) |
1374 | ldap_perror LDAP_P(( /* deprecated, use ldap_err2string */ |
1375 | LDAP *ld, |
1376 | LDAP_CONST char *s )); |
1377 | #endif |
1378 | |
1379 | |
1380 | /* |
1381 | * gssapi.c: |
1382 | */ |
1383 | LDAP_F( int ) |
1384 | ldap_gssapi_bind LDAP_P(( |
1385 | LDAP *ld, |
1386 | LDAP_CONST char *dn, |
1387 | LDAP_CONST char *creds )); |
1388 | |
1389 | LDAP_F( int ) |
1390 | ldap_gssapi_bind_s LDAP_P(( |
1391 | LDAP *ld, |
1392 | LDAP_CONST char *dn, |
1393 | LDAP_CONST char *creds )); |
1394 | |
1395 | |
1396 | /* |
1397 | * in modify.c: |
1398 | */ |
1399 | LDAP_F( int ) |
1400 | ldap_modify_ext LDAP_P(( |
1401 | LDAP *ld, |
1402 | LDAP_CONST char *dn, |
1403 | LDAPMod **mods, |
1404 | LDAPControl **serverctrls, |
1405 | LDAPControl **clientctrls, |
1406 | int *msgidp )); |
1407 | |
1408 | LDAP_F( int ) |
1409 | ldap_modify_ext_s LDAP_P(( |
1410 | LDAP *ld, |
1411 | LDAP_CONST char *dn, |
1412 | LDAPMod **mods, |
1413 | LDAPControl **serverctrls, |
1414 | LDAPControl **clientctrls )); |
1415 | |
1416 | #if LDAP_DEPRECATED |
1417 | LDAP_F( int ) |
1418 | ldap_modify LDAP_P(( /* deprecated, use ldap_modify_ext */ |
1419 | LDAP *ld, |
1420 | LDAP_CONST char *dn, |
1421 | LDAPMod **mods )); |
1422 | |
1423 | LDAP_F( int ) |
1424 | ldap_modify_s LDAP_P(( /* deprecated, use ldap_modify_ext_s */ |
1425 | LDAP *ld, |
1426 | LDAP_CONST char *dn, |
1427 | LDAPMod **mods )); |
1428 | #endif |
1429 | |
1430 | |
1431 | /* |
1432 | * in modrdn.c: |
1433 | */ |
1434 | LDAP_F( int ) |
1435 | ldap_rename LDAP_P(( |
1436 | LDAP *ld, |
1437 | LDAP_CONST char *dn, |
1438 | LDAP_CONST char *newrdn, |
1439 | LDAP_CONST char *newSuperior, |
1440 | int deleteoldrdn, |
1441 | LDAPControl **sctrls, |
1442 | LDAPControl **cctrls, |
1443 | int *msgidp )); |
1444 | |
1445 | LDAP_F( int ) |
1446 | ldap_rename_s LDAP_P(( |
1447 | LDAP *ld, |
1448 | LDAP_CONST char *dn, |
1449 | LDAP_CONST char *newrdn, |
1450 | LDAP_CONST char *newSuperior, |
1451 | int deleteoldrdn, |
1452 | LDAPControl **sctrls, |
1453 | LDAPControl **cctrls )); |
1454 | |
1455 | #if LDAP_DEPRECATED |
1456 | LDAP_F( int ) |
1457 | ldap_rename2 LDAP_P(( /* deprecated, use ldap_rename */ |
1458 | LDAP *ld, |
1459 | LDAP_CONST char *dn, |
1460 | LDAP_CONST char *newrdn, |
1461 | LDAP_CONST char *newSuperior, |
1462 | int deleteoldrdn )); |
1463 | |
1464 | LDAP_F( int ) |
1465 | ldap_rename2_s LDAP_P(( /* deprecated, use ldap_rename_s */ |
1466 | LDAP *ld, |
1467 | LDAP_CONST char *dn, |
1468 | LDAP_CONST char *newrdn, |
1469 | LDAP_CONST char *newSuperior, |
1470 | int deleteoldrdn )); |
1471 | |
1472 | LDAP_F( int ) |
1473 | ldap_modrdn LDAP_P(( /* deprecated, use ldap_rename */ |
1474 | LDAP *ld, |
1475 | LDAP_CONST char *dn, |
1476 | LDAP_CONST char *newrdn )); |
1477 | |
1478 | LDAP_F( int ) |
1479 | ldap_modrdn_s LDAP_P(( /* deprecated, use ldap_rename_s */ |
1480 | LDAP *ld, |
1481 | LDAP_CONST char *dn, |
1482 | LDAP_CONST char *newrdn )); |
1483 | |
1484 | LDAP_F( int ) |
1485 | ldap_modrdn2 LDAP_P(( /* deprecated, use ldap_rename */ |
1486 | LDAP *ld, |
1487 | LDAP_CONST char *dn, |
1488 | LDAP_CONST char *newrdn, |
1489 | int deleteoldrdn )); |
1490 | |
1491 | LDAP_F( int ) |
1492 | ldap_modrdn2_s LDAP_P(( /* deprecated, use ldap_rename_s */ |
1493 | LDAP *ld, |
1494 | LDAP_CONST char *dn, |
1495 | LDAP_CONST char *newrdn, |
1496 | int deleteoldrdn)); |
1497 | #endif |
1498 | |
1499 | |
1500 | /* |
1501 | * in open.c: |
1502 | */ |
1503 | #if LDAP_DEPRECATED |
1504 | LDAP_F( LDAP * ) |
1505 | ldap_init LDAP_P(( /* deprecated, use ldap_create or ldap_initialize */ |
1506 | LDAP_CONST char *host, |
1507 | int port )); |
1508 | |
1509 | LDAP_F( LDAP * ) |
1510 | ldap_open LDAP_P(( /* deprecated, use ldap_create or ldap_initialize */ |
1511 | LDAP_CONST char *host, |
1512 | int port )); |
1513 | #endif |
1514 | |
1515 | LDAP_F( int ) |
1516 | ldap_create LDAP_P(( |
1517 | LDAP **ldp )); |
1518 | |
1519 | LDAP_F( int ) |
1520 | ldap_initialize LDAP_P(( |
1521 | LDAP **ldp, |
1522 | LDAP_CONST char *url )); |
1523 | |
1524 | LDAP_F( LDAP * ) |
1525 | ldap_dup LDAP_P(( |
1526 | LDAP *old )); |
1527 | |
1528 | /* |
1529 | * in tls.c |
1530 | */ |
1531 | |
1532 | LDAP_F( int ) |
1533 | ldap_tls_inplace LDAP_P(( |
1534 | LDAP *ld )); |
1535 | |
1536 | LDAP_F( int ) |
1537 | ldap_start_tls LDAP_P(( |
1538 | LDAP *ld, |
1539 | LDAPControl **serverctrls, |
1540 | LDAPControl **clientctrls, |
1541 | int *msgidp )); |
1542 | |
1543 | LDAP_F( int ) |
1544 | ldap_install_tls LDAP_P(( |
1545 | LDAP *ld )); |
1546 | |
1547 | LDAP_F( int ) |
1548 | ldap_start_tls_s LDAP_P(( |
1549 | LDAP *ld, |
1550 | LDAPControl **serverctrls, |
1551 | LDAPControl **clientctrls )); |
1552 | |
1553 | /* |
1554 | * in messages.c: |
1555 | */ |
1556 | LDAP_F( LDAPMessage * ) |
1557 | ldap_first_message LDAP_P(( |
1558 | LDAP *ld, |
1559 | LDAPMessage *chain )); |
1560 | |
1561 | LDAP_F( LDAPMessage * ) |
1562 | ldap_next_message LDAP_P(( |
1563 | LDAP *ld, |
1564 | LDAPMessage *msg )); |
1565 | |
1566 | LDAP_F( int ) |
1567 | ldap_count_messages LDAP_P(( |
1568 | LDAP *ld, |
1569 | LDAPMessage *chain )); |
1570 | |
1571 | /* |
1572 | * in references.c: |
1573 | */ |
1574 | LDAP_F( LDAPMessage * ) |
1575 | ldap_first_reference LDAP_P(( |
1576 | LDAP *ld, |
1577 | LDAPMessage *chain )); |
1578 | |
1579 | LDAP_F( LDAPMessage * ) |
1580 | ldap_next_reference LDAP_P(( |
1581 | LDAP *ld, |
1582 | LDAPMessage *ref )); |
1583 | |
1584 | LDAP_F( int ) |
1585 | ldap_count_references LDAP_P(( |
1586 | LDAP *ld, |
1587 | LDAPMessage *chain )); |
1588 | |
1589 | LDAP_F( int ) |
1590 | ldap_parse_reference LDAP_P(( |
1591 | LDAP *ld, |
1592 | LDAPMessage *ref, |
1593 | char ***referralsp, |
1594 | LDAPControl ***serverctrls, |
1595 | int freeit)); |
1596 | |
1597 | |
1598 | /* |
1599 | * in getentry.c: |
1600 | */ |
1601 | LDAP_F( LDAPMessage * ) |
1602 | ldap_first_entry LDAP_P(( |
1603 | LDAP *ld, |
1604 | LDAPMessage *chain )); |
1605 | |
1606 | LDAP_F( LDAPMessage * ) |
1607 | ldap_next_entry LDAP_P(( |
1608 | LDAP *ld, |
1609 | LDAPMessage *entry )); |
1610 | |
1611 | LDAP_F( int ) |
1612 | ldap_count_entries LDAP_P(( |
1613 | LDAP *ld, |
1614 | LDAPMessage *chain )); |
1615 | |
1616 | LDAP_F( int ) |
1617 | ldap_get_entry_controls LDAP_P(( |
1618 | LDAP *ld, |
1619 | LDAPMessage *entry, |
1620 | LDAPControl ***serverctrls)); |
1621 | |
1622 | |
1623 | /* |
1624 | * in addentry.c |
1625 | */ |
1626 | LDAP_F( LDAPMessage * ) |
1627 | ldap_delete_result_entry LDAP_P(( |
1628 | LDAPMessage **list, |
1629 | LDAPMessage *e )); |
1630 | |
1631 | LDAP_F( void ) |
1632 | ldap_add_result_entry LDAP_P(( |
1633 | LDAPMessage **list, |
1634 | LDAPMessage *e )); |
1635 | |
1636 | |
1637 | /* |
1638 | * in getdn.c |
1639 | */ |
1640 | LDAP_F( char * ) |
1641 | ldap_get_dn LDAP_P(( |
1642 | LDAP *ld, |
1643 | LDAPMessage *entry )); |
1644 | |
1645 | typedef struct ldap_ava { |
1646 | struct berval la_attr; |
1647 | struct berval la_value; |
1648 | unsigned la_flags; |
1649 | #define LDAP_AVA_NULL 0x0000U |
1650 | #define LDAP_AVA_STRING 0x0001U |
1651 | #define LDAP_AVA_BINARY 0x0002U |
1652 | #define LDAP_AVA_NONPRINTABLE 0x0004U |
1653 | #define LDAP_AVA_FREE_ATTR 0x0010U |
1654 | #define LDAP_AVA_FREE_VALUE 0x0020U |
1655 | |
1656 | void *la_private; |
1657 | } LDAPAVA; |
1658 | |
1659 | typedef LDAPAVA** LDAPRDN; |
1660 | typedef LDAPRDN* LDAPDN; |
1661 | |
1662 | /* DN formats */ |
1663 | #define LDAP_DN_FORMAT_LDAP 0x0000U |
1664 | #define LDAP_DN_FORMAT_LDAPV3 0x0010U |
1665 | #define LDAP_DN_FORMAT_LDAPV2 0x0020U |
1666 | #define LDAP_DN_FORMAT_DCE 0x0030U |
1667 | #define LDAP_DN_FORMAT_UFN 0x0040U /* dn2str only */ |
1668 | #define LDAP_DN_FORMAT_AD_CANONICAL 0x0050U /* dn2str only */ |
1669 | #define LDAP_DN_FORMAT_LBER 0x00F0U /* for testing only */ |
1670 | #define LDAP_DN_FORMAT_MASK 0x00F0U |
1671 | |
1672 | /* DN flags */ |
1673 | #define LDAP_DN_PRETTY 0x0100U |
1674 | #define LDAP_DN_SKIP 0x0200U |
1675 | #define LDAP_DN_P_NOLEADTRAILSPACES 0x1000U |
1676 | #define LDAP_DN_P_NOSPACEAFTERRDN 0x2000U |
1677 | #define LDAP_DN_PEDANTIC 0xF000U |
1678 | |
1679 | LDAP_F( void ) ldap_rdnfree LDAP_P(( LDAPRDN rdn )); |
1680 | LDAP_F( void ) ldap_dnfree LDAP_P(( LDAPDN dn )); |
1681 | |
1682 | LDAP_F( int ) |
1683 | ldap_bv2dn LDAP_P(( |
1684 | struct berval *bv, |
1685 | LDAPDN *dn, |
1686 | unsigned flags )); |
1687 | |
1688 | LDAP_F( int ) |
1689 | ldap_str2dn LDAP_P(( |
1690 | LDAP_CONST char *str, |
1691 | LDAPDN *dn, |
1692 | unsigned flags )); |
1693 | |
1694 | LDAP_F( int ) |
1695 | ldap_dn2bv LDAP_P(( |
1696 | LDAPDN dn, |
1697 | struct berval *bv, |
1698 | unsigned flags )); |
1699 | |
1700 | LDAP_F( int ) |
1701 | ldap_dn2str LDAP_P(( |
1702 | LDAPDN dn, |
1703 | char **str, |
1704 | unsigned flags )); |
1705 | |
1706 | LDAP_F( int ) |
1707 | ldap_bv2rdn LDAP_P(( |
1708 | struct berval *bv, |
1709 | LDAPRDN *rdn, |
1710 | char **next, |
1711 | unsigned flags )); |
1712 | |
1713 | LDAP_F( int ) |
1714 | ldap_str2rdn LDAP_P(( |
1715 | LDAP_CONST char *str, |
1716 | LDAPRDN *rdn, |
1717 | char **next, |
1718 | unsigned flags )); |
1719 | |
1720 | LDAP_F( int ) |
1721 | ldap_rdn2bv LDAP_P(( |
1722 | LDAPRDN rdn, |
1723 | struct berval *bv, |
1724 | unsigned flags )); |
1725 | |
1726 | LDAP_F( int ) |
1727 | ldap_rdn2str LDAP_P(( |
1728 | LDAPRDN rdn, |
1729 | char **str, |
1730 | unsigned flags )); |
1731 | |
1732 | LDAP_F( int ) |
1733 | ldap_dn_normalize LDAP_P(( |
1734 | LDAP_CONST char *in, unsigned iflags, |
1735 | char **out, unsigned oflags )); |
1736 | |
1737 | LDAP_F( char * ) |
1738 | ldap_dn2ufn LDAP_P(( /* deprecated, use ldap_str2dn/dn2str */ |
1739 | LDAP_CONST char *dn )); |
1740 | |
1741 | LDAP_F( char ** ) |
1742 | ldap_explode_dn LDAP_P(( /* deprecated, ldap_str2dn */ |
1743 | LDAP_CONST char *dn, |
1744 | int notypes )); |
1745 | |
1746 | LDAP_F( char ** ) |
1747 | ldap_explode_rdn LDAP_P(( /* deprecated, ldap_str2rdn */ |
1748 | LDAP_CONST char *rdn, |
1749 | int notypes )); |
1750 | |
1751 | typedef int LDAPDN_rewrite_func |
1752 | LDAP_P(( LDAPDN dn, unsigned flags, void *ctx )); |
1753 | |
1754 | LDAP_F( int ) |
1755 | ldap_X509dn2bv LDAP_P(( void *x509_name, struct berval *dn, |
1756 | LDAPDN_rewrite_func *func, unsigned flags )); |
1757 | |
1758 | LDAP_F( char * ) |
1759 | ldap_dn2dcedn LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ |
1760 | LDAP_CONST char *dn )); |
1761 | |
1762 | LDAP_F( char * ) |
1763 | ldap_dcedn2dn LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ |
1764 | LDAP_CONST char *dce )); |
1765 | |
1766 | LDAP_F( char * ) |
1767 | ldap_dn2ad_canonical LDAP_P(( /* deprecated, ldap_str2dn/dn2str */ |
1768 | LDAP_CONST char *dn )); |
1769 | |
1770 | LDAP_F( int ) |
1771 | ldap_get_dn_ber LDAP_P(( |
1772 | LDAP *ld, LDAPMessage *e, BerElement **berout, struct berval *dn )); |
1773 | |
1774 | LDAP_F( int ) |
1775 | ldap_get_attribute_ber LDAP_P(( |
1776 | LDAP *ld, LDAPMessage *e, BerElement *ber, struct berval *attr, |
1777 | struct berval **vals )); |
1778 | |
1779 | /* |
1780 | * in getattr.c |
1781 | */ |
1782 | LDAP_F( char * ) |
1783 | ldap_first_attribute LDAP_P(( |
1784 | LDAP *ld, |
1785 | LDAPMessage *entry, |
1786 | BerElement **ber )); |
1787 | |
1788 | LDAP_F( char * ) |
1789 | ldap_next_attribute LDAP_P(( |
1790 | LDAP *ld, |
1791 | LDAPMessage *entry, |
1792 | BerElement *ber )); |
1793 | |
1794 | |
1795 | /* |
1796 | * in getvalues.c |
1797 | */ |
1798 | LDAP_F( struct berval ** ) |
1799 | ldap_get_values_len LDAP_P(( |
1800 | LDAP *ld, |
1801 | LDAPMessage *entry, |
1802 | LDAP_CONST char *target )); |
1803 | |
1804 | LDAP_F( int ) |
1805 | ldap_count_values_len LDAP_P(( |
1806 | struct berval **vals )); |
1807 | |
1808 | LDAP_F( void ) |
1809 | ldap_value_free_len LDAP_P(( |
1810 | struct berval **vals )); |
1811 | |
1812 | #if LDAP_DEPRECATED |
1813 | LDAP_F( char ** ) |
1814 | ldap_get_values LDAP_P(( /* deprecated, use ldap_get_values_len */ |
1815 | LDAP *ld, |
1816 | LDAPMessage *entry, |
1817 | LDAP_CONST char *target )); |
1818 | |
1819 | LDAP_F( int ) |
1820 | ldap_count_values LDAP_P(( /* deprecated, use ldap_count_values_len */ |
1821 | char **vals )); |
1822 | |
1823 | LDAP_F( void ) |
1824 | ldap_value_free LDAP_P(( /* deprecated, use ldap_value_free_len */ |
1825 | char **vals )); |
1826 | #endif |
1827 | |
1828 | /* |
1829 | * in result.c: |
1830 | */ |
1831 | LDAP_F( int ) |
1832 | ldap_result LDAP_P(( |
1833 | LDAP *ld, |
1834 | int msgid, |
1835 | int all, |
1836 | struct timeval *timeout, |
1837 | LDAPMessage **result )); |
1838 | |
1839 | LDAP_F( int ) |
1840 | ldap_msgtype LDAP_P(( |
1841 | LDAPMessage *lm )); |
1842 | |
1843 | LDAP_F( int ) |
1844 | ldap_msgid LDAP_P(( |
1845 | LDAPMessage *lm )); |
1846 | |
1847 | LDAP_F( int ) |
1848 | ldap_msgfree LDAP_P(( |
1849 | LDAPMessage *lm )); |
1850 | |
1851 | LDAP_F( int ) |
1852 | ldap_msgdelete LDAP_P(( |
1853 | LDAP *ld, |
1854 | int msgid )); |
1855 | |
1856 | |
1857 | /* |
1858 | * in search.c: |
1859 | */ |
1860 | LDAP_F( int ) |
1861 | ldap_bv2escaped_filter_value LDAP_P(( |
1862 | struct berval *in, |
1863 | struct berval *out )); |
1864 | |
1865 | LDAP_F( int ) |
1866 | ldap_search_ext LDAP_P(( |
1867 | LDAP *ld, |
1868 | LDAP_CONST char *base, |
1869 | int scope, |
1870 | LDAP_CONST char *filter, |
1871 | char **attrs, |
1872 | int attrsonly, |
1873 | LDAPControl **serverctrls, |
1874 | LDAPControl **clientctrls, |
1875 | struct timeval *timeout, |
1876 | int sizelimit, |
1877 | int *msgidp )); |
1878 | |
1879 | LDAP_F( int ) |
1880 | ldap_search_ext_s LDAP_P(( |
1881 | LDAP *ld, |
1882 | LDAP_CONST char *base, |
1883 | int scope, |
1884 | LDAP_CONST char *filter, |
1885 | char **attrs, |
1886 | int attrsonly, |
1887 | LDAPControl **serverctrls, |
1888 | LDAPControl **clientctrls, |
1889 | struct timeval *timeout, |
1890 | int sizelimit, |
1891 | LDAPMessage **res )); |
1892 | |
1893 | #if LDAP_DEPRECATED |
1894 | LDAP_F( int ) |
1895 | ldap_search LDAP_P(( /* deprecated, use ldap_search_ext */ |
1896 | LDAP *ld, |
1897 | LDAP_CONST char *base, |
1898 | int scope, |
1899 | LDAP_CONST char *filter, |
1900 | char **attrs, |
1901 | int attrsonly )); |
1902 | |
1903 | LDAP_F( int ) |
1904 | ldap_search_s LDAP_P(( /* deprecated, use ldap_search_ext_s */ |
1905 | LDAP *ld, |
1906 | LDAP_CONST char *base, |
1907 | int scope, |
1908 | LDAP_CONST char *filter, |
1909 | char **attrs, |
1910 | int attrsonly, |
1911 | LDAPMessage **res )); |
1912 | |
1913 | LDAP_F( int ) |
1914 | ldap_search_st LDAP_P(( /* deprecated, use ldap_search_ext_s */ |
1915 | LDAP *ld, |
1916 | LDAP_CONST char *base, |
1917 | int scope, |
1918 | LDAP_CONST char *filter, |
1919 | char **attrs, |
1920 | int attrsonly, |
1921 | struct timeval *timeout, |
1922 | LDAPMessage **res )); |
1923 | #endif |
1924 | |
1925 | /* |
1926 | * in unbind.c |
1927 | */ |
1928 | LDAP_F( int ) |
1929 | ldap_unbind_ext LDAP_P(( |
1930 | LDAP *ld, |
1931 | LDAPControl **serverctrls, |
1932 | LDAPControl **clientctrls)); |
1933 | |
1934 | LDAP_F( int ) |
1935 | ldap_unbind_ext_s LDAP_P(( |
1936 | LDAP *ld, |
1937 | LDAPControl **serverctrls, |
1938 | LDAPControl **clientctrls)); |
1939 | |
1940 | LDAP_F( int ) |
1941 | ldap_destroy LDAP_P(( |
1942 | LDAP *ld)); |
1943 | |
1944 | #if LDAP_DEPRECATED |
1945 | LDAP_F( int ) |
1946 | ldap_unbind LDAP_P(( /* deprecated, use ldap_unbind_ext */ |
1947 | LDAP *ld )); |
1948 | |
1949 | LDAP_F( int ) |
1950 | ldap_unbind_s LDAP_P(( /* deprecated, use ldap_unbind_ext_s */ |
1951 | LDAP *ld )); |
1952 | #endif |
1953 | |
1954 | /* |
1955 | * in filter.c |
1956 | */ |
1957 | LDAP_F( int ) |
1958 | ldap_put_vrFilter LDAP_P(( |
1959 | BerElement *ber, |
1960 | const char *vrf )); |
1961 | |
1962 | /* |
1963 | * in free.c |
1964 | */ |
1965 | |
1966 | LDAP_F( void * ) |
1967 | ldap_memalloc LDAP_P(( |
1968 | ber_len_t s )); |
1969 | |
1970 | LDAP_F( void * ) |
1971 | ldap_memrealloc LDAP_P(( |
1972 | void* p, |
1973 | ber_len_t s )); |
1974 | |
1975 | LDAP_F( void * ) |
1976 | ldap_memcalloc LDAP_P(( |
1977 | ber_len_t n, |
1978 | ber_len_t s )); |
1979 | |
1980 | LDAP_F( void ) |
1981 | ldap_memfree LDAP_P(( |
1982 | void* p )); |
1983 | |
1984 | LDAP_F( void ) |
1985 | ldap_memvfree LDAP_P(( |
1986 | void** v )); |
1987 | |
1988 | LDAP_F( char * ) |
1989 | ldap_strdup LDAP_P(( |
1990 | LDAP_CONST char * )); |
1991 | |
1992 | LDAP_F( void ) |
1993 | ldap_mods_free LDAP_P(( |
1994 | LDAPMod **mods, |
1995 | int freemods )); |
1996 | |
1997 | |
1998 | #if LDAP_DEPRECATED |
1999 | /* |
2000 | * in sort.c (deprecated, use custom code instead) |
2001 | */ |
2002 | typedef int (LDAP_SORT_AD_CMP_PROC) LDAP_P(( /* deprecated */ |
2003 | LDAP_CONST char *left, |
2004 | LDAP_CONST char *right )); |
2005 | |
2006 | typedef int (LDAP_SORT_AV_CMP_PROC) LDAP_P(( /* deprecated */ |
2007 | LDAP_CONST void *left, |
2008 | LDAP_CONST void *right )); |
2009 | |
2010 | LDAP_F( int ) /* deprecated */ |
2011 | ldap_sort_entries LDAP_P(( LDAP *ld, |
2012 | LDAPMessage **chain, |
2013 | LDAP_CONST char *attr, |
2014 | LDAP_SORT_AD_CMP_PROC *cmp )); |
2015 | |
2016 | LDAP_F( int ) /* deprecated */ |
2017 | ldap_sort_values LDAP_P(( |
2018 | LDAP *ld, |
2019 | char **vals, |
2020 | LDAP_SORT_AV_CMP_PROC *cmp )); |
2021 | |
2022 | LDAP_F( int ) /* deprecated */ |
2023 | ldap_sort_strcasecmp LDAP_P(( |
2024 | LDAP_CONST void *a, |
2025 | LDAP_CONST void *b )); |
2026 | #endif |
2027 | |
2028 | /* |
2029 | * in url.c |
2030 | */ |
2031 | LDAP_F( int ) |
2032 | ldap_is_ldap_url LDAP_P(( |
2033 | LDAP_CONST char *url )); |
2034 | |
2035 | LDAP_F( int ) |
2036 | ldap_is_ldaps_url LDAP_P(( |
2037 | LDAP_CONST char *url )); |
2038 | |
2039 | LDAP_F( int ) |
2040 | ldap_is_ldapi_url LDAP_P(( |
2041 | LDAP_CONST char *url )); |
2042 | |
2043 | LDAP_F( int ) |
2044 | ldap_url_parse LDAP_P(( |
2045 | LDAP_CONST char *url, |
2046 | LDAPURLDesc **ludpp )); |
2047 | |
2048 | LDAP_F( char * ) |
2049 | ldap_url_desc2str LDAP_P(( |
2050 | LDAPURLDesc *ludp )); |
2051 | |
2052 | LDAP_F( void ) |
2053 | ldap_free_urldesc LDAP_P(( |
2054 | LDAPURLDesc *ludp )); |
2055 | |
2056 | |
2057 | /* |
2058 | * LDAP Cancel Extended Operation <draft-zeilenga-ldap-cancel-xx.txt> |
2059 | * in cancel.c |
2060 | */ |
2061 | #define LDAP_API_FEATURE_CANCEL 1000 |
2062 | |
2063 | LDAP_F( int ) |
2064 | ldap_cancel LDAP_P(( LDAP *ld, |
2065 | int cancelid, |
2066 | LDAPControl **sctrls, |
2067 | LDAPControl **cctrls, |
2068 | int *msgidp )); |
2069 | |
2070 | LDAP_F( int ) |
2071 | ldap_cancel_s LDAP_P(( LDAP *ld, |
2072 | int cancelid, |
2073 | LDAPControl **sctrl, |
2074 | LDAPControl **cctrl )); |
2075 | |
2076 | /* |
2077 | * LDAP Turn Extended Operation <draft-zeilenga-ldap-turn-xx.txt> |
2078 | * in turn.c |
2079 | */ |
2080 | #define LDAP_API_FEATURE_TURN 1000 |
2081 | |
2082 | LDAP_F( int ) |
2083 | ldap_turn LDAP_P(( LDAP *ld, |
2084 | int mutual, |
2085 | LDAP_CONST char* identifier, |
2086 | LDAPControl **sctrls, |
2087 | LDAPControl **cctrls, |
2088 | int *msgidp )); |
2089 | |
2090 | LDAP_F( int ) |
2091 | ldap_turn_s LDAP_P(( LDAP *ld, |
2092 | int mutual, |
2093 | LDAP_CONST char* identifier, |
2094 | LDAPControl **sctrl, |
2095 | LDAPControl **cctrl )); |
2096 | |
2097 | /* |
2098 | * LDAP Paged Results |
2099 | * in pagectrl.c |
2100 | */ |
2101 | #define LDAP_API_FEATURE_PAGED_RESULTS 2000 |
2102 | |
2103 | LDAP_F( int ) |
2104 | ldap_create_page_control_value LDAP_P(( |
2105 | LDAP *ld, |
2106 | ber_int_t pagesize, |
2107 | struct berval *cookie, |
2108 | struct berval *value )); |
2109 | |
2110 | LDAP_F( int ) |
2111 | ldap_create_page_control LDAP_P(( |
2112 | LDAP *ld, |
2113 | ber_int_t pagesize, |
2114 | struct berval *cookie, |
2115 | int iscritical, |
2116 | LDAPControl **ctrlp )); |
2117 | |
2118 | #if LDAP_DEPRECATED |
2119 | LDAP_F( int ) |
2120 | ldap_parse_page_control LDAP_P(( |
2121 | /* deprecated, use ldap_parse_pageresponse_control */ |
2122 | LDAP *ld, |
2123 | LDAPControl **ctrls, |
2124 | ber_int_t *count, |
2125 | struct berval **cookie )); |
2126 | #endif |
2127 | |
2128 | LDAP_F( int ) |
2129 | ldap_parse_pageresponse_control LDAP_P(( |
2130 | LDAP *ld, |
2131 | LDAPControl *ctrl, |
2132 | ber_int_t *count, |
2133 | struct berval *cookie )); |
2134 | |
2135 | /* |
2136 | * LDAP Server Side Sort |
2137 | * in sortctrl.c |
2138 | */ |
2139 | #define LDAP_API_FEATURE_SERVER_SIDE_SORT 2000 |
2140 | |
2141 | /* structure for a sort-key */ |
2142 | typedef struct ldapsortkey { |
2143 | char *attributeType; |
2144 | char *orderingRule; |
2145 | int reverseOrder; |
2146 | } LDAPSortKey; |
2147 | |
2148 | LDAP_F( int ) |
2149 | ldap_create_sort_keylist LDAP_P(( |
2150 | LDAPSortKey ***sortKeyList, |
2151 | char *keyString )); |
2152 | |
2153 | LDAP_F( void ) |
2154 | ldap_free_sort_keylist LDAP_P(( |
2155 | LDAPSortKey **sortkeylist )); |
2156 | |
2157 | LDAP_F( int ) |
2158 | ldap_create_sort_control_value LDAP_P(( |
2159 | LDAP *ld, |
2160 | LDAPSortKey **keyList, |
2161 | struct berval *value )); |
2162 | |
2163 | LDAP_F( int ) |
2164 | ldap_create_sort_control LDAP_P(( |
2165 | LDAP *ld, |
2166 | LDAPSortKey **keyList, |
2167 | int iscritical, |
2168 | LDAPControl **ctrlp )); |
2169 | |
2170 | LDAP_F( int ) |
2171 | ldap_parse_sortresponse_control LDAP_P(( |
2172 | LDAP *ld, |
2173 | LDAPControl *ctrl, |
2174 | ber_int_t *result, |
2175 | char **attribute )); |
2176 | |
2177 | /* |
2178 | * LDAP Virtual List View |
2179 | * in vlvctrl.c |
2180 | */ |
2181 | #define LDAP_API_FEATURE_VIRTUAL_LIST_VIEW 2000 |
2182 | |
2183 | /* structure for virtual list */ |
2184 | typedef struct ldapvlvinfo { |
2185 | ber_int_t ldvlv_version; |
2186 | ber_int_t ldvlv_before_count; |
2187 | ber_int_t ldvlv_after_count; |
2188 | ber_int_t ldvlv_offset; |
2189 | ber_int_t ldvlv_count; |
2190 | struct berval * ldvlv_attrvalue; |
2191 | struct berval * ldvlv_context; |
2192 | void * ldvlv_extradata; |
2193 | } LDAPVLVInfo; |
2194 | |
2195 | LDAP_F( int ) |
2196 | ldap_create_vlv_control_value LDAP_P(( |
2197 | LDAP *ld, |
2198 | LDAPVLVInfo *ldvlistp, |
2199 | struct berval *value)); |
2200 | |
2201 | LDAP_F( int ) |
2202 | ldap_create_vlv_control LDAP_P(( |
2203 | LDAP *ld, |
2204 | LDAPVLVInfo *ldvlistp, |
2205 | LDAPControl **ctrlp )); |
2206 | |
2207 | LDAP_F( int ) |
2208 | ldap_parse_vlvresponse_control LDAP_P(( |
2209 | LDAP *ld, |
2210 | LDAPControl *ctrls, |
2211 | ber_int_t *target_posp, |
2212 | ber_int_t *list_countp, |
2213 | struct berval **contextp, |
2214 | int *errcodep )); |
2215 | |
2216 | /* |
2217 | * LDAP Who Am I? |
2218 | * in whoami.c |
2219 | */ |
2220 | #define LDAP_API_FEATURE_WHOAMI 1000 |
2221 | |
2222 | LDAP_F( int ) |
2223 | ldap_parse_whoami LDAP_P(( |
2224 | LDAP *ld, |
2225 | LDAPMessage *res, |
2226 | struct berval **authzid )); |
2227 | |
2228 | LDAP_F( int ) |
2229 | ldap_whoami LDAP_P(( LDAP *ld, |
2230 | LDAPControl **sctrls, |
2231 | LDAPControl **cctrls, |
2232 | int *msgidp )); |
2233 | |
2234 | LDAP_F( int ) |
2235 | ldap_whoami_s LDAP_P(( |
2236 | LDAP *ld, |
2237 | struct berval **authzid, |
2238 | LDAPControl **sctrls, |
2239 | LDAPControl **cctrls )); |
2240 | |
2241 | /* |
2242 | * LDAP Password Modify |
2243 | * in passwd.c |
2244 | */ |
2245 | #define LDAP_API_FEATURE_PASSWD_MODIFY 1000 |
2246 | |
2247 | LDAP_F( int ) |
2248 | ldap_parse_passwd LDAP_P(( |
2249 | LDAP *ld, |
2250 | LDAPMessage *res, |
2251 | struct berval *newpasswd )); |
2252 | |
2253 | LDAP_F( int ) |
2254 | ldap_passwd LDAP_P(( LDAP *ld, |
2255 | struct berval *user, |
2256 | struct berval *oldpw, |
2257 | struct berval *newpw, |
2258 | LDAPControl **sctrls, |
2259 | LDAPControl **cctrls, |
2260 | int *msgidp )); |
2261 | |
2262 | LDAP_F( int ) |
2263 | ldap_passwd_s LDAP_P(( |
2264 | LDAP *ld, |
2265 | struct berval *user, |
2266 | struct berval *oldpw, |
2267 | struct berval *newpw, |
2268 | struct berval *newpasswd, |
2269 | LDAPControl **sctrls, |
2270 | LDAPControl **cctrls )); |
2271 | |
2272 | #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST |
2273 | /* |
2274 | * LDAP Password Policy controls |
2275 | * in ppolicy.c |
2276 | */ |
2277 | #define LDAP_API_FEATURE_PASSWORD_POLICY 1000 |
2278 | |
2279 | typedef enum passpolicyerror_enum { |
2280 | PP_passwordExpired = 0, |
2281 | PP_accountLocked = 1, |
2282 | PP_changeAfterReset = 2, |
2283 | PP_passwordModNotAllowed = 3, |
2284 | PP_mustSupplyOldPassword = 4, |
2285 | PP_insufficientPasswordQuality = 5, |
2286 | PP_passwordTooShort = 6, |
2287 | PP_passwordTooYoung = 7, |
2288 | PP_passwordInHistory = 8, |
2289 | PP_noError = 65535 |
2290 | } LDAPPasswordPolicyError; |
2291 | |
2292 | LDAP_F( int ) |
2293 | ldap_create_passwordpolicy_control LDAP_P(( |
2294 | LDAP *ld, |
2295 | LDAPControl **ctrlp )); |
2296 | |
2297 | LDAP_F( int ) |
2298 | ldap_parse_passwordpolicy_control LDAP_P(( |
2299 | LDAP *ld, |
2300 | LDAPControl *ctrl, |
2301 | ber_int_t *expirep, |
2302 | ber_int_t *gracep, |
2303 | LDAPPasswordPolicyError *errorp )); |
2304 | |
2305 | LDAP_F( const char * ) |
2306 | ldap_passwordpolicy_err2txt LDAP_P(( LDAPPasswordPolicyError )); |
2307 | #endif /* LDAP_CONTROL_PASSWORDPOLICYREQUEST */ |
2308 | |
2309 | /* |
2310 | * LDAP Dynamic Directory Services Refresh -- RFC 2589 |
2311 | * in dds.c |
2312 | */ |
2313 | #define LDAP_API_FEATURE_REFRESH 1000 |
2314 | |
2315 | LDAP_F( int ) |
2316 | ldap_parse_refresh LDAP_P(( |
2317 | LDAP *ld, |
2318 | LDAPMessage *res, |
2319 | ber_int_t *newttl )); |
2320 | |
2321 | LDAP_F( int ) |
2322 | ldap_refresh LDAP_P(( LDAP *ld, |
2323 | struct berval *dn, |
2324 | ber_int_t ttl, |
2325 | LDAPControl **sctrls, |
2326 | LDAPControl **cctrls, |
2327 | int *msgidp )); |
2328 | |
2329 | LDAP_F( int ) |
2330 | ldap_refresh_s LDAP_P(( |
2331 | LDAP *ld, |
2332 | struct berval *dn, |
2333 | ber_int_t ttl, |
2334 | ber_int_t *newttl, |
2335 | LDAPControl **sctrls, |
2336 | LDAPControl **cctrls )); |
2337 | |
2338 | /* |
2339 | * LDAP Transactions |
2340 | */ |
2341 | #ifdef LDAP_X_TXN |
2342 | LDAP_F( int ) |
2343 | ldap_txn_start LDAP_P(( LDAP *ld, |
2344 | LDAPControl **sctrls, |
2345 | LDAPControl **cctrls, |
2346 | int *msgidp )); |
2347 | |
2348 | LDAP_F( int ) |
2349 | ldap_txn_start_s LDAP_P(( LDAP *ld, |
2350 | LDAPControl **sctrl, |
2351 | LDAPControl **cctrl, |
2352 | struct berval **rettxnid )); |
2353 | |
2354 | LDAP_F( int ) |
2355 | ldap_txn_end LDAP_P(( LDAP *ld, |
2356 | int commit, |
2357 | struct berval *txnid, |
2358 | LDAPControl **sctrls, |
2359 | LDAPControl **cctrls, |
2360 | int *msgidp )); |
2361 | |
2362 | LDAP_F( int ) |
2363 | ldap_txn_end_s LDAP_P(( LDAP *ld, |
2364 | int commit, |
2365 | struct berval *txnid, |
2366 | LDAPControl **sctrl, |
2367 | LDAPControl **cctrl, |
2368 | int *retidp )); |
2369 | #endif |
2370 | |
2371 | /* |
2372 | * in ldap_sync.c |
2373 | */ |
2374 | |
2375 | /* |
2376 | * initialize the persistent search structure |
2377 | */ |
2378 | LDAP_F( ldap_sync_t * ) |
2379 | ldap_sync_initialize LDAP_P(( |
2380 | ldap_sync_t *ls )); |
2381 | |
2382 | /* |
2383 | * destroy the persistent search structure |
2384 | */ |
2385 | LDAP_F( void ) |
2386 | ldap_sync_destroy LDAP_P(( |
2387 | ldap_sync_t *ls, |
2388 | int freeit )); |
2389 | |
2390 | /* |
2391 | * initialize a refreshOnly sync |
2392 | */ |
2393 | LDAP_F( int ) |
2394 | ldap_sync_init LDAP_P(( |
2395 | ldap_sync_t *ls, |
2396 | int mode )); |
2397 | |
2398 | /* |
2399 | * initialize a refreshOnly sync |
2400 | */ |
2401 | LDAP_F( int ) |
2402 | ldap_sync_init_refresh_only LDAP_P(( |
2403 | ldap_sync_t *ls )); |
2404 | |
2405 | /* |
2406 | * initialize a refreshAndPersist sync |
2407 | */ |
2408 | LDAP_F( int ) |
2409 | ldap_sync_init_refresh_and_persist LDAP_P(( |
2410 | ldap_sync_t *ls )); |
2411 | |
2412 | /* |
2413 | * poll for new responses |
2414 | */ |
2415 | LDAP_F( int ) |
2416 | ldap_sync_poll LDAP_P(( |
2417 | ldap_sync_t *ls )); |
2418 | |
2419 | #ifdef LDAP_CONTROL_X_SESSION_TRACKING |
2420 | |
2421 | /* |
2422 | * in stctrl.c |
2423 | */ |
2424 | LDAP_F( int ) |
2425 | ldap_create_session_tracking_value LDAP_P(( |
2426 | LDAP *ld, |
2427 | char *sessionSourceIp, |
2428 | char *sessionSourceName, |
2429 | char *formatOID, |
2430 | struct berval *sessionTrackingIdentifier, |
2431 | struct berval *value )); |
2432 | |
2433 | LDAP_F( int ) |
2434 | ldap_create_session_tracking_control LDAP_P(( |
2435 | LDAP *ld, |
2436 | char *sessionSourceIp, |
2437 | char *sessionSourceName, |
2438 | char *formatOID, |
2439 | struct berval *sessionTrackingIdentifier, |
2440 | LDAPControl **ctrlp )); |
2441 | |
2442 | LDAP_F( int ) |
2443 | ldap_parse_session_tracking_control LDAP_P(( |
2444 | LDAP *ld, |
2445 | LDAPControl *ctrl, |
2446 | struct berval *ip, |
2447 | struct berval *name, |
2448 | struct berval *oid, |
2449 | struct berval *id )); |
2450 | |
2451 | #endif /* LDAP_CONTROL_X_SESSION_TRACKING */ |
2452 | |
2453 | /* |
2454 | * in assertion.c |
2455 | */ |
2456 | LDAP_F (int) |
2457 | ldap_create_assertion_control_value LDAP_P(( |
2458 | LDAP *ld, |
2459 | char *assertion, |
2460 | struct berval *value )); |
2461 | |
2462 | LDAP_F( int ) |
2463 | ldap_create_assertion_control LDAP_P(( |
2464 | LDAP *ld, |
2465 | char *filter, |
2466 | int iscritical, |
2467 | LDAPControl **ctrlp )); |
2468 | |
2469 | /* |
2470 | * in deref.c |
2471 | */ |
2472 | |
2473 | typedef struct LDAPDerefSpec { |
2474 | char *derefAttr; |
2475 | char **attributes; |
2476 | } LDAPDerefSpec; |
2477 | |
2478 | typedef struct LDAPDerefVal { |
2479 | char *type; |
2480 | BerVarray vals; |
2481 | struct LDAPDerefVal *next; |
2482 | } LDAPDerefVal; |
2483 | |
2484 | typedef struct LDAPDerefRes { |
2485 | char *derefAttr; |
2486 | struct berval derefVal; |
2487 | LDAPDerefVal *attrVals; |
2488 | struct LDAPDerefRes *next; |
2489 | } LDAPDerefRes; |
2490 | |
2491 | LDAP_F( int ) |
2492 | ldap_create_deref_control_value LDAP_P(( |
2493 | LDAP *ld, |
2494 | LDAPDerefSpec *ds, |
2495 | struct berval *value )); |
2496 | |
2497 | LDAP_F( int ) |
2498 | ldap_create_deref_control LDAP_P(( |
2499 | LDAP *ld, |
2500 | LDAPDerefSpec *ds, |
2501 | int iscritical, |
2502 | LDAPControl **ctrlp )); |
2503 | |
2504 | LDAP_F( void ) |
2505 | ldap_derefresponse_free LDAP_P(( |
2506 | LDAPDerefRes *dr )); |
2507 | |
2508 | LDAP_F( int ) |
2509 | ldap_parse_derefresponse_control LDAP_P(( |
2510 | LDAP *ld, |
2511 | LDAPControl *ctrl, |
2512 | LDAPDerefRes **drp )); |
2513 | |
2514 | LDAP_F( int ) |
2515 | ldap_parse_deref_control LDAP_P(( |
2516 | LDAP *ld, |
2517 | LDAPControl **ctrls, |
2518 | LDAPDerefRes **drp )); |
2519 | |
2520 | /* |
2521 | * hacks for NTLM |
2522 | */ |
2523 | #define LDAP_AUTH_NTLM_REQUEST ((ber_tag_t) 0x8aU) |
2524 | #define LDAP_AUTH_NTLM_RESPONSE ((ber_tag_t) 0x8bU) |
2525 | LDAP_F( int ) |
2526 | ldap_ntlm_bind LDAP_P(( |
2527 | LDAP *ld, |
2528 | LDAP_CONST char *dn, |
2529 | ber_tag_t tag, |
2530 | struct berval *cred, |
2531 | LDAPControl **sctrls, |
2532 | LDAPControl **cctrls, |
2533 | int *msgidp )); |
2534 | LDAP_F( int ) |
2535 | ldap_parse_ntlm_bind_result LDAP_P(( |
2536 | LDAP *ld, |
2537 | LDAPMessage *res, |
2538 | struct berval *challenge)); |
2539 | |
2540 | LDAP_END_DECL |
2541 | #endif /* _LDAP_H */ |
2542 |
Warning: That file was not part of the compilation database. It may have many parsing errors.