xref: /onnv-gate/usr/src/lib/libldap4/include/ldap-int.h (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * Copyright 1995-2002 Sun Microsystems, Inc.  All rights reserved.
3*0Sstevel@tonic-gate  * Use is subject to license terms.
4*0Sstevel@tonic-gate  */
5*0Sstevel@tonic-gate 
6*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
7*0Sstevel@tonic-gate 
8*0Sstevel@tonic-gate /*
9*0Sstevel@tonic-gate  *  Copyright (c) 1995 Regents of the University of Michigan.
10*0Sstevel@tonic-gate  *  All rights reserved.
11*0Sstevel@tonic-gate  *
12*0Sstevel@tonic-gate  *  ldap-int.h - defines & prototypes internal to the LDAP library
13*0Sstevel@tonic-gate  */
14*0Sstevel@tonic-gate 
15*0Sstevel@tonic-gate #include <stdlib.h> 			/* rri */
16*0Sstevel@tonic-gate #include <pthread.h>			/* rri */
17*0Sstevel@tonic-gate #include <netinet/in.h>
18*0Sstevel@tonic-gate 
19*0Sstevel@tonic-gate #define LDAP_URL_PREFIX         "ldap://"
20*0Sstevel@tonic-gate #define LDAP_URL_PREFIX_LEN     7
21*0Sstevel@tonic-gate #define LDAP_URL_URLCOLON	"URL:"
22*0Sstevel@tonic-gate #define LDAP_URL_URLCOLON_LEN	4
23*0Sstevel@tonic-gate 
24*0Sstevel@tonic-gate #ifdef LDAP_REFERRALS
25*0Sstevel@tonic-gate #define LDAP_REF_STR		"Referral:\n"
26*0Sstevel@tonic-gate #define LDAP_REF_STR_LEN	10
27*0Sstevel@tonic-gate #define LDAP_LDAP_REF_STR	LDAP_URL_PREFIX
28*0Sstevel@tonic-gate #define LDAP_LDAP_REF_STR_LEN	LDAP_URL_PREFIX_LEN
29*0Sstevel@tonic-gate #ifdef LDAP_DNS
30*0Sstevel@tonic-gate #define LDAP_DX_REF_STR		"dx://"
31*0Sstevel@tonic-gate #define LDAP_DX_REF_STR_LEN	5
32*0Sstevel@tonic-gate #endif /* LDAP_DNS */
33*0Sstevel@tonic-gate #endif /* LDAP_REFERRALS */
34*0Sstevel@tonic-gate 
35*0Sstevel@tonic-gate 
36*0Sstevel@tonic-gate /*
37*0Sstevel@tonic-gate  * in cache.c
38*0Sstevel@tonic-gate  */
39*0Sstevel@tonic-gate #ifdef NEEDPROTOS
40*0Sstevel@tonic-gate void add_request_to_cache( LDAP *ld, unsigned int msgtype,
41*0Sstevel@tonic-gate         BerElement *request );
42*0Sstevel@tonic-gate void add_result_to_cache( LDAP *ld, LDAPMessage *result );
43*0Sstevel@tonic-gate int check_cache( LDAP *ld, unsigned int msgtype, BerElement *request );
44*0Sstevel@tonic-gate #else /* NEEDPROTOS */
45*0Sstevel@tonic-gate void add_request_to_cache();
46*0Sstevel@tonic-gate void add_result_to_cache();
47*0Sstevel@tonic-gate int check_cache();
48*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
49*0Sstevel@tonic-gate 
50*0Sstevel@tonic-gate 
51*0Sstevel@tonic-gate #ifdef KERBEROS
52*0Sstevel@tonic-gate /*
53*0Sstevel@tonic-gate  * in kerberos.c
54*0Sstevel@tonic-gate  */
55*0Sstevel@tonic-gate #ifdef NEEDPROTOS
56*0Sstevel@tonic-gate char *get_kerberosv4_credentials( LDAP *ld, char *who, char *service,
57*0Sstevel@tonic-gate         int *len );
58*0Sstevel@tonic-gate #else /* NEEDPROTOS */
59*0Sstevel@tonic-gate char *get_kerberosv4_credentials();
60*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
61*0Sstevel@tonic-gate 
62*0Sstevel@tonic-gate #endif /* KERBEROS */
63*0Sstevel@tonic-gate 
64*0Sstevel@tonic-gate /*
65*0Sstevel@tonic-gate  * in notif.c
66*0Sstevel@tonic-gate  */
67*0Sstevel@tonic-gate int ldap_insert_notif(LDAP *ld, LDAPMessage *notif);
68*0Sstevel@tonic-gate int ldap_add_notif(LDAP *ld, LDAPMessage *notif);
69*0Sstevel@tonic-gate 
70*0Sstevel@tonic-gate 
71*0Sstevel@tonic-gate /*
72*0Sstevel@tonic-gate  * in open.c
73*0Sstevel@tonic-gate  */
74*0Sstevel@tonic-gate int ldap_thr_index(); /* rri */
75*0Sstevel@tonic-gate #ifdef NEEDPROTOS
76*0Sstevel@tonic-gate int open_default_ldap_connection(LDAP *ld);
77*0Sstevel@tonic-gate int open_ldap_connection( LDAP *ld, Sockbuf *sb, char *host, int defport,
78*0Sstevel@tonic-gate 	char **krbinstancep, int async );
79*0Sstevel@tonic-gate #else /* NEEDPROTOS */
80*0Sstevel@tonic-gate int open_default_ldap_connection();
81*0Sstevel@tonic-gate int open_ldap_connection();
82*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
83*0Sstevel@tonic-gate 
84*0Sstevel@tonic-gate /*
85*0Sstevel@tonic-gate  * in options.c
86*0Sstevel@tonic-gate  */
87*0Sstevel@tonic-gate 
88*0Sstevel@tonic-gate int ldap_get_option (LDAP *ld, int option, void *outvalue);
89*0Sstevel@tonic-gate 
90*0Sstevel@tonic-gate /*
91*0Sstevel@tonic-gate  * in os-ip.c
92*0Sstevel@tonic-gate  */
93*0Sstevel@tonic-gate void close_ldap_connection( Sockbuf *sb ); /* rri */
94*0Sstevel@tonic-gate #ifdef NEEDPROTOS
95*0Sstevel@tonic-gate int connect_to_host(Sockbuf *sb, char *host, in_addr_t address, int port,
96*0Sstevel@tonic-gate 	int async, int bindTimeout);
97*0Sstevel@tonic-gate void close_connection( Sockbuf *sb );
98*0Sstevel@tonic-gate #else /* NEEDPROTOS */
99*0Sstevel@tonic-gate int connect_to_host();
100*0Sstevel@tonic-gate void close_connection();
101*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
102*0Sstevel@tonic-gate 
103*0Sstevel@tonic-gate #ifdef KERBEROS
104*0Sstevel@tonic-gate #ifdef NEEDPROTOS
105*0Sstevel@tonic-gate char *host_connected_to( Sockbuf *sb );
106*0Sstevel@tonic-gate #else /* NEEDPROTOS */
107*0Sstevel@tonic-gate char *host_connected_to();
108*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
109*0Sstevel@tonic-gate #endif /* KERBEROS */
110*0Sstevel@tonic-gate 
111*0Sstevel@tonic-gate #ifdef LDAP_REFERRALS
112*0Sstevel@tonic-gate #ifdef NEEDPROTOS
113*0Sstevel@tonic-gate int do_ldap_select( LDAP *ld, struct timeval *timeout );
114*0Sstevel@tonic-gate void *new_select_info( void );
115*0Sstevel@tonic-gate void free_select_info( void *sip );
116*0Sstevel@tonic-gate void mark_select_write( LDAP *ld, Sockbuf *sb );
117*0Sstevel@tonic-gate void mark_select_read( LDAP *ld, Sockbuf *sb );
118*0Sstevel@tonic-gate void mark_select_clear( LDAP *ld, Sockbuf *sb );
119*0Sstevel@tonic-gate long is_read_ready( LDAP *ld, Sockbuf *sb );
120*0Sstevel@tonic-gate long is_write_ready( LDAP *ld, Sockbuf *sb );
121*0Sstevel@tonic-gate #else /* NEEDPROTOS */
122*0Sstevel@tonic-gate int do_ldap_select();
123*0Sstevel@tonic-gate void *new_select_info();
124*0Sstevel@tonic-gate void free_select_info();
125*0Sstevel@tonic-gate void mark_select_write();
126*0Sstevel@tonic-gate void mark_select_read();
127*0Sstevel@tonic-gate void mark_select_clear();
128*0Sstevel@tonic-gate long is_read_ready();
129*0Sstevel@tonic-gate long is_write_ready();
130*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
131*0Sstevel@tonic-gate #endif /* LDAP_REFERRALS */
132*0Sstevel@tonic-gate 
133*0Sstevel@tonic-gate /*
134*0Sstevel@tonic-gate  * in regex.c		(rri)
135*0Sstevel@tonic-gate  */
136*0Sstevel@tonic-gate int re_exec( char *lp );
137*0Sstevel@tonic-gate 
138*0Sstevel@tonic-gate /*
139*0Sstevel@tonic-gate  * in request.c
140*0Sstevel@tonic-gate  */
141*0Sstevel@tonic-gate #ifdef NEEDPROTOS
142*0Sstevel@tonic-gate int send_initial_request( LDAP *ld, unsigned int msgtype,
143*0Sstevel@tonic-gate 	char *dn, BerElement *ber );
144*0Sstevel@tonic-gate BerElement *alloc_ber_with_options( LDAP *ld );
145*0Sstevel@tonic-gate void set_ber_options( LDAP *ld, BerElement *ber );
146*0Sstevel@tonic-gate #else /* NEEDPROTOS */
147*0Sstevel@tonic-gate int send_initial_request();
148*0Sstevel@tonic-gate BerElement *alloc_ber_with_options();
149*0Sstevel@tonic-gate void set_ber_options();
150*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
151*0Sstevel@tonic-gate 
152*0Sstevel@tonic-gate #if defined( LDAP_REFERRALS ) || defined( LDAP_DNS )
153*0Sstevel@tonic-gate #ifdef NEEDPROTOS
154*0Sstevel@tonic-gate int send_server_request( LDAP *ld, BerElement *ber, int msgid,
155*0Sstevel@tonic-gate 	LDAPRequest *parentreq, LDAPServer *srvlist, LDAPConn *lc,
156*0Sstevel@tonic-gate 	int bind );
157*0Sstevel@tonic-gate LDAPConn *new_connection( LDAP *ld, LDAPServer **srvlistp, int use_ldsb,
158*0Sstevel@tonic-gate 	int connect, int bind );
159*0Sstevel@tonic-gate LDAPRequest *find_request_by_msgid( LDAP *ld, int msgid );
160*0Sstevel@tonic-gate void free_request( LDAP *ld, LDAPRequest *lr );
161*0Sstevel@tonic-gate void free_connection( LDAP *ld, LDAPConn *lc, int force, int unbind );
162*0Sstevel@tonic-gate void dump_connection( LDAP *ld, LDAPConn *lconns, int all );
163*0Sstevel@tonic-gate void dump_requests_and_responses( LDAP *ld );
164*0Sstevel@tonic-gate #else /* NEEDPROTOS */
165*0Sstevel@tonic-gate int send_server_request();
166*0Sstevel@tonic-gate LDAPConn *new_connection();
167*0Sstevel@tonic-gate LDAPRequest *find_request_by_msgid();
168*0Sstevel@tonic-gate void free_request();
169*0Sstevel@tonic-gate void free_connection();
170*0Sstevel@tonic-gate void dump_connection();
171*0Sstevel@tonic-gate void dump_requests_and_responses();
172*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
173*0Sstevel@tonic-gate #endif /* LDAP_REFERRALS || LDAP_DNS */
174*0Sstevel@tonic-gate 
175*0Sstevel@tonic-gate #ifdef LDAP_REFERRALS
176*0Sstevel@tonic-gate #ifdef NEEDPROTOS
177*0Sstevel@tonic-gate int chase_referrals( LDAP *ld, LDAPRequest *lr, char **refs, int *count, int samerequest );
178*0Sstevel@tonic-gate char ** ldap_errormsg2referrals(char *errmsg);
179*0Sstevel@tonic-gate char *ldap_referral2error_msg(char ** refs);
180*0Sstevel@tonic-gate int append_referral( LDAP *ld, char **referralsp, char *s );
181*0Sstevel@tonic-gate #else /* NEEDPROTOS */
182*0Sstevel@tonic-gate int chase_referrals();
183*0Sstevel@tonic-gate char ** ldap_errormsg2referrals();
184*0Sstevel@tonic-gate char *ldap_referral2error_msg();
185*0Sstevel@tonic-gate int append_referral();
186*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
187*0Sstevel@tonic-gate #endif /* LDAP_REFERRALS */
188*0Sstevel@tonic-gate 
189*0Sstevel@tonic-gate void nsldapi_connection_lost_nolock( LDAP *ld, Sockbuf *sb );
190*0Sstevel@tonic-gate 
191*0Sstevel@tonic-gate /*
192*0Sstevel@tonic-gate  * in search.c
193*0Sstevel@tonic-gate  */
194*0Sstevel@tonic-gate #ifdef NEEDPROTOS
195*0Sstevel@tonic-gate BerElement *ldap_build_search_req( LDAP *ld, char *base, int scope,
196*0Sstevel@tonic-gate 	char *filter, char **attrs, int attrsonly,  LDAPControl ** serverctrls,
197*0Sstevel@tonic-gate 					   struct timeval *timeoutp, int sizelimit );
198*0Sstevel@tonic-gate #else /* NEEDPROTOS */
199*0Sstevel@tonic-gate BerElement *ldap_build_search_req();
200*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
201*0Sstevel@tonic-gate 
202*0Sstevel@tonic-gate static int put_extensible_filter( BerElement *ber, char *type, char *val );
203*0Sstevel@tonic-gate 
204*0Sstevel@tonic-gate /*
205*0Sstevel@tonic-gate  * in unbind.c
206*0Sstevel@tonic-gate  */
207*0Sstevel@tonic-gate #ifdef NEEDPROTOS
208*0Sstevel@tonic-gate int ldap_ld_free( LDAP *ld, int close );
209*0Sstevel@tonic-gate int send_unbind( LDAP *ld, Sockbuf *sb );
210*0Sstevel@tonic-gate #else /* NEEDPROTOS */
211*0Sstevel@tonic-gate int ldap_ld_free();
212*0Sstevel@tonic-gate int send_unbind();
213*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
214*0Sstevel@tonic-gate 
215*0Sstevel@tonic-gate 
216*0Sstevel@tonic-gate #ifdef LDAP_DNS
217*0Sstevel@tonic-gate /*
218*0Sstevel@tonic-gate  * in getdxbyname.c
219*0Sstevel@tonic-gate  */
220*0Sstevel@tonic-gate #ifdef NEEDPROTOS
221*0Sstevel@tonic-gate char **getdxbyname( char *domain );
222*0Sstevel@tonic-gate #else /* NEEDPROTOS */
223*0Sstevel@tonic-gate char **getdxbyname();
224*0Sstevel@tonic-gate #endif /* NEEDPROTOS */
225*0Sstevel@tonic-gate #endif /* LDAP_DNS */
226*0Sstevel@tonic-gate 
227*0Sstevel@tonic-gate /*
228*0Sstevel@tonic-gate  * abandon.c
229*0Sstevel@tonic-gate  */
230*0Sstevel@tonic-gate #ifdef NEEDPROTOS
231*0Sstevel@tonic-gate BerElement * ldap_build_abandon_req( LDAP *ld, int msgid, LDAPControl ** serverctrls);
232*0Sstevel@tonic-gate #else
233*0Sstevel@tonic-gate BerElement * ldap_build_abandon_req();
234*0Sstevel@tonic-gate #endif
235*0Sstevel@tonic-gate 
236*0Sstevel@tonic-gate /* add.c */
237*0Sstevel@tonic-gate #ifdef NEEDPROTOS
238*0Sstevel@tonic-gate BerElement * ldap_build_add_req(LDAP *ld, char *dn, LDAPMod **attrs, LDAPControl ** serverctrls);
239*0Sstevel@tonic-gate #else
240*0Sstevel@tonic-gate BerElement * ldap_build_add_req();
241*0Sstevel@tonic-gate #endif
242*0Sstevel@tonic-gate 
243*0Sstevel@tonic-gate /*
244*0Sstevel@tonic-gate  * compare.c
245*0Sstevel@tonic-gate  */
246*0Sstevel@tonic-gate #ifdef NEEDPROTOS
247*0Sstevel@tonic-gate BerElement * ldap_build_compare_req(LDAP *ld, char *dn, char *attr,	struct berval *bvalue, LDAPControl **serverctrls);
248*0Sstevel@tonic-gate #else
249*0Sstevel@tonic-gate BerElement * ldap_build_compare_req();
250*0Sstevel@tonic-gate #endif
251*0Sstevel@tonic-gate 
252*0Sstevel@tonic-gate /*
253*0Sstevel@tonic-gate  * delete.c
254*0Sstevel@tonic-gate  */
255*0Sstevel@tonic-gate #ifdef NEEDPROTOS
256*0Sstevel@tonic-gate BerElement * ldap_build_delete_req(LDAP *ld, char *dn, LDAPControl **serverctrls);
257*0Sstevel@tonic-gate #else
258*0Sstevel@tonic-gate BerElement * ldap_build_delete_req();
259*0Sstevel@tonic-gate #endif
260*0Sstevel@tonic-gate 
261*0Sstevel@tonic-gate /*
262*0Sstevel@tonic-gate  * extop.c
263*0Sstevel@tonic-gate  */
264*0Sstevel@tonic-gate #ifdef NEEDPROTOS
265*0Sstevel@tonic-gate BerElement * ldap_build_extended_operation_req(LDAP *ld, char *exoid, struct berval *exdata, LDAPControl ** serverctrls);
266*0Sstevel@tonic-gate #else
267*0Sstevel@tonic-gate BerElement * ldap_build_extended_operation_req();
268*0Sstevel@tonic-gate #endif
269*0Sstevel@tonic-gate 
270*0Sstevel@tonic-gate /*
271*0Sstevel@tonic-gate  * modify.c
272*0Sstevel@tonic-gate  */
273*0Sstevel@tonic-gate #ifdef NEEDPROTOS
274*0Sstevel@tonic-gate BerElement * ldap_build_modify_req(LDAP *ld, char *dn, LDAPMod ** mods, LDAPControl **serverctrls);
275*0Sstevel@tonic-gate #else
276*0Sstevel@tonic-gate BerElement * ldap_build_modify_req();
277*0Sstevel@tonic-gate #endif
278*0Sstevel@tonic-gate 
279*0Sstevel@tonic-gate /*
280*0Sstevel@tonic-gate  * rename.c
281*0Sstevel@tonic-gate  */
282*0Sstevel@tonic-gate #ifdef NEEDPROTOS
283*0Sstevel@tonic-gate BerElement * ldap_build_rename_req ( LDAP *ld, char *dn, char *newrdn, char *newparent, int deleteoldrdn, LDAPControl **serverctrls);
284*0Sstevel@tonic-gate #else
285*0Sstevel@tonic-gate BerElement * ldap_build_rename_req ();
286*0Sstevel@tonic-gate #endif
287*0Sstevel@tonic-gate 
288*0Sstevel@tonic-gate /*
289*0Sstevel@tonic-gate  * saslbind.c
290*0Sstevel@tonic-gate  */
291*0Sstevel@tonic-gate #ifdef NEEDPROTOS
292*0Sstevel@tonic-gate BerElement * ldap_build_sasl_bind_req( LDAP *ld, char *dn, char *mechanism, struct berval *creds, LDAPControl ** serverctrls);
293*0Sstevel@tonic-gate #else
294*0Sstevel@tonic-gate BerElement * ldap_build_sasl_bind_req();
295*0Sstevel@tonic-gate #endif
296*0Sstevel@tonic-gate /*
297*0Sstevel@tonic-gate  * sbind.c
298*0Sstevel@tonic-gate  */
299*0Sstevel@tonic-gate #ifdef NEEDPROTOS
300*0Sstevel@tonic-gate BerElement * ldap_build_simple_bind_req(LDAP *ld, char *dn, char *passwd, LDAPControl **serverctrls);
301*0Sstevel@tonic-gate #else
302*0Sstevel@tonic-gate BerElement * ldap_build_simple_bind_req();
303*0Sstevel@tonic-gate #endif
304*0Sstevel@tonic-gate 
305*0Sstevel@tonic-gate /*
306*0Sstevel@tonic-gate  * utils.c
307*0Sstevel@tonic-gate  */
308*0Sstevel@tonic-gate 
309*0Sstevel@tonic-gate #ifdef NEEDPROTOS
310*0Sstevel@tonic-gate void free_strarray(char **sap);
311*0Sstevel@tonic-gate #else
312*0Sstevel@tonic-gate void free_strarray();
313*0Sstevel@tonic-gate #endif
314*0Sstevel@tonic-gate 
315*0Sstevel@tonic-gate /*
316*0Sstevel@tonic-gate  * Controls.c
317*0Sstevel@tonic-gate  */
318*0Sstevel@tonic-gate #ifdef NEEDPROTOS
319*0Sstevel@tonic-gate LDAPControl * ldap_control_dup(LDAPControl *ctrl);
320*0Sstevel@tonic-gate LDAPControl ** ldap_controls_dup(LDAPControl ** ctrls);
321*0Sstevel@tonic-gate int ldap_controls_code (BerElement *ber, LDAPControl **ctrls);
322*0Sstevel@tonic-gate LDAPControl ** ldap_controls_decode(BerElement *ber, int *errcode);
323*0Sstevel@tonic-gate int ldap_build_control(char *oid, BerElement *ber, int freeber,
324*0Sstevel@tonic-gate 	char iscritical, LDAPControl **ctrlp);
325*0Sstevel@tonic-gate #else
326*0Sstevel@tonic-gate LDAPControl * ldap_control_dup();
327*0Sstevel@tonic-gate LDAPControl ** ldap_controls_dup();
328*0Sstevel@tonic-gate int ldap_controls_code ();
329*0Sstevel@tonic-gate LDAPControl ** ldap_controls_decode();
330*0Sstevel@tonic-gate int ldap_build_control();
331*0Sstevel@tonic-gate #endif
332*0Sstevel@tonic-gate 
333*0Sstevel@tonic-gate /*
334*0Sstevel@tonic-gate  * ber/io.c
335*0Sstevel@tonic-gate  */
336*0Sstevel@tonic-gate #ifdef NEEDPROTOS
337*0Sstevel@tonic-gate int ber_flush(Sockbuf *sb, BerElement *ber, int freeit);
338*0Sstevel@tonic-gate unsigned int ber_get_next(Sockbuf *sb, unsigned int *len, BerElement *ber);
339*0Sstevel@tonic-gate #else
340*0Sstevel@tonic-gate int ber_flush();
341*0Sstevel@tonic-gate unsigned int ber_get_next();
342*0Sstevel@tonic-gate #endif
343*0Sstevel@tonic-gate 
344