xref: /illumos-gate/usr/src/lib/libldap5/sources/ldap/prldap/ldappr-int.h (revision 581cede61ac9c14d8d4ea452562a567189eead78)
1 /*
2  * Copyright 2001-2002 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 #pragma ident	"%Z%%M%	%I%	%E% SMI"
7 
8 
9 /*
10  * The contents of this file are subject to the Netscape Public
11  * License Version 1.1 (the "License"); you may not use this file
12  * except in compliance with the License. You may obtain a copy of
13  * the License at http://www.mozilla.org/NPL/
14  *
15  * Software distributed under the License is distributed on an "AS
16  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17  * implied. See the License for the specific language governing
18  * rights and limitations under the License.
19  *
20  * The Original Code is Mozilla Communicator client code, released
21  * March 31, 1998.
22  *
23  * The Initial Developer of the Original Code is Netscape
24  * Communications Corporation. Portions created by Netscape are
25  * Copyright (C) 1998-1999 Netscape Communications Corporation. All
26  * Rights Reserved.
27  *
28  * Contributor(s):
29  */
30 
31 /*
32  * Internal header for libprldap -- glue NSPR (Netscape Portable Runtime)
33  * to libldap.
34  *
35  */
36 
37 #include <ldap.h>
38 #include <nspr.h>
39 #include <ldappr.h>
40 
41 #include <errno.h>
42 #include <string.h>
43 
44 #ifdef _SOLARIS_SDK
45 #include "solaris-int.h"
46 #endif
47 
48 /*
49  * All of the sockets we use are IPv6 capable.
50  * Change the following #define to PR_AF_INET to support IPv4 only.
51  */
52 #define PRLDAP_DEFAULT_ADDRESS_FAMILY   PR_AF_INET6
53 
54 /*
55  * Data structures:
56  */
57 
58 /* data structure that populates the I/O callback session arg. */
59 typedef struct lextiof_session_private {
60 	PRPollDesc	*prsess_pollds;		/* for poll callback */
61 	int		prsess_pollds_count;	/* # of elements in pollds */
62 	int             prsess_io_max_timeout;  /* in milliseconds */
63 	void		*prsess_appdata;	/* application specific data */
64 } PRLDAPIOSessionArg;
65 
66 /* data structure that populates the I/O callback socket-specific arg. */
67 typedef struct lextiof_socket_private {
68 	PRFileDesc	*prsock_prfd;		/* associated NSPR file desc. */
69 	int             prsock_io_max_timeout;  /* in milliseconds */
70 	void		*prsock_appdata;	/* application specific data */
71 } PRLDAPIOSocketArg;
72 
73 
74 /*
75  * Function prototypes:
76  */
77 
78 /*
79  * From ldapprio.c:
80  */
81 int prldap_install_io_functions( LDAP *ld, int shared );
82 int prldap_session_arg_from_ld( LDAP *ld, PRLDAPIOSessionArg **sessargpp );
83 int prldap_set_io_max_timeout( PRLDAPIOSessionArg *prsessp,
84         int io_max_timeout );
85 int prldap_get_io_max_timeout( PRLDAPIOSessionArg *prsessp,
86         int *io_max_timeoutp );
87 int prldap_socket_arg_from_ld( LDAP *ld, PRLDAPIOSocketArg **sockargpp );
88 
89 
90 /*
91  * From ldapprthreads.c:
92  */
93 int prldap_install_thread_functions( LDAP *ld, int shared );
94 int prldap_thread_new_handle( LDAP *ld, void *sessionarg );
95 void prldap_thread_dispose_handle( LDAP *ld, void *sessionarg );
96 
97 
98 /*
99  * From ldapprdns.c:
100  */
101 int prldap_install_dns_functions( LDAP *ld );
102 #ifdef _SOLARIS_SDK
103 int prldap_x_install_dns_skipdb( LDAP *ld, const char *skip );
104 #endif
105 
106 
107 
108 /*
109  * From ldapprerror.c:
110  */
111 void prldap_set_system_errno( int e );
112 int prldap_get_system_errno( void );
113 int prldap_prerr2errno( void );
114