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. */
59typedef 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. */
67typedef 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 */
81int prldap_install_io_functions( LDAP *ld, int shared );
82int prldap_session_arg_from_ld( LDAP *ld, PRLDAPIOSessionArg **sessargpp );
83int prldap_set_io_max_timeout( PRLDAPIOSessionArg *prsessp,
84        int io_max_timeout );
85int prldap_get_io_max_timeout( PRLDAPIOSessionArg *prsessp,
86        int *io_max_timeoutp );
87int prldap_socket_arg_from_ld( LDAP *ld, PRLDAPIOSocketArg **sockargpp );
88
89
90/*
91 * From ldapprthreads.c:
92 */
93int prldap_install_thread_functions( LDAP *ld, int shared );
94int prldap_thread_new_handle( LDAP *ld, void *sessionarg );
95void prldap_thread_dispose_handle( LDAP *ld, void *sessionarg );
96
97
98/*
99 * From ldapprdns.c:
100 */
101int prldap_install_dns_functions( LDAP *ld );
102#ifdef _SOLARIS_SDK
103int prldap_x_install_dns_skipdb( LDAP *ld, const char *skip );
104#endif
105
106
107
108/*
109 * From ldapprerror.c:
110 */
111void prldap_set_system_errno( int e );
112int prldap_get_system_errno( void );
113int prldap_prerr2errno( void );
114