1/* $OpenLDAP$ */
2/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3 *
4 * Copyright 2003-2011 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 the file LICENSE in the
12 * top-level directory of the distribution or, alternatively, at
13 * <http://www.OpenLDAP.org/license.html>.
14 */
15/* ACKNOWLEDGEMENTS:
16 * This work was initially developed by the Howard Chu for inclusion
17 * in OpenLDAP Software and subsequently enhanced by Pierangelo
18 * Masarati.
19 */
20
21#ifndef PROTO_LDAP_H
22#define PROTO_LDAP_H
23
24LDAP_BEGIN_DECL
25
26extern BI_init			ldap_back_initialize;
27extern BI_open			ldap_back_open;
28
29extern BI_db_init		ldap_back_db_init;
30extern BI_db_open		ldap_back_db_open;
31extern BI_db_close		ldap_back_db_close;
32extern BI_db_destroy		ldap_back_db_destroy;
33
34extern BI_op_bind		ldap_back_bind;
35extern BI_op_search		ldap_back_search;
36extern BI_op_compare		ldap_back_compare;
37extern BI_op_modify		ldap_back_modify;
38extern BI_op_modrdn		ldap_back_modrdn;
39extern BI_op_add		ldap_back_add;
40extern BI_op_delete		ldap_back_delete;
41extern BI_op_abandon		ldap_back_abandon;
42extern BI_op_extended		ldap_back_extended;
43
44extern BI_connection_destroy	ldap_back_conn_destroy;
45
46extern BI_entry_get_rw		ldap_back_entry_get;
47
48void ldap_back_release_conn_lock( ldapinfo_t *li, ldapconn_t **lcp, int dolock );
49#define ldap_back_release_conn(li, lc) ldap_back_release_conn_lock((li), &(lc), 1)
50int ldap_back_dobind( ldapconn_t **lcp, Operation *op, SlapReply *rs, ldap_back_send_t sendok );
51int ldap_back_retry( ldapconn_t **lcp, Operation *op, SlapReply *rs, ldap_back_send_t sendok );
52int ldap_back_map_result( SlapReply *rs );
53int ldap_back_op_result( ldapconn_t *lc, Operation *op, SlapReply *rs,
54	ber_int_t msgid, time_t timeout, ldap_back_send_t sendok );
55int ldap_back_cancel( ldapconn_t *lc, Operation *op, SlapReply *rs, ber_int_t msgid, ldap_back_send_t sendok );
56
57int ldap_back_init_cf( BackendInfo *bi );
58int ldap_pbind_init_cf( BackendInfo *bi );
59
60extern int ldap_back_conndn_cmp( const void *c1, const void *c2);
61extern int ldap_back_conn_cmp( const void *c1, const void *c2);
62extern int ldap_back_conndn_dup( void *c1, void *c2 );
63extern void ldap_back_conn_free( void *c );
64
65extern ldapconn_t * ldap_back_conn_delete( ldapinfo_t *li, ldapconn_t *lc );
66
67extern int ldap_back_conn2str( const ldapconn_base_t *lc, char *buf, ber_len_t buflen );
68extern int ldap_back_connid2str( const ldapconn_base_t *lc, char *buf, ber_len_t buflen );
69
70extern int
71ldap_back_proxy_authz_ctrl(
72		Operation	*op,
73		SlapReply	*rs,
74		struct berval	*bound_ndn,
75		int		version,
76		slap_idassert_t	*si,
77		LDAPControl	*ctrl );
78
79extern int
80ldap_back_controls_add(
81		Operation	*op,
82		SlapReply	*rs,
83		ldapconn_t	*lc,
84		LDAPControl	***pctrls );
85
86extern int
87ldap_back_controls_free( Operation *op, SlapReply *rs, LDAPControl ***pctrls );
88
89extern void
90ldap_back_quarantine(
91	Operation	*op,
92	SlapReply	*rs );
93
94#ifdef LDAP_BACK_PRINT_CONNTREE
95extern void
96ldap_back_print_conntree( ldapinfo_t *li, char *msg );
97#endif /* LDAP_BACK_PRINT_CONNTREE */
98
99extern void slap_retry_info_destroy( slap_retry_info_t *ri );
100extern int slap_retry_info_parse( char *in, slap_retry_info_t *ri,
101	char *buf, ber_len_t buflen );
102extern int slap_retry_info_unparse( slap_retry_info_t *ri, struct berval *bvout );
103
104extern int slap_idassert_authzfrom_parse_cf( const char *fname, int lineno, const char *arg, slap_idassert_t *si );
105extern int slap_idassert_passthru_parse_cf( const char *fname, int lineno, const char *arg, slap_idassert_t *si );
106extern int slap_idassert_parse_cf( const char *fname, int lineno, int argc, char *argv[], slap_idassert_t *si );
107
108extern int chain_initialize( void );
109extern int pbind_initialize( void );
110#ifdef SLAP_DISTPROC
111extern int distproc_initialize( void );
112#endif
113
114extern int ldap_back_monitor_db_init( BackendDB *be );
115extern int ldap_back_monitor_db_open( BackendDB *be );
116extern int ldap_back_monitor_db_close( BackendDB *be );
117extern int ldap_back_monitor_db_destroy( BackendDB *be );
118
119extern LDAP_REBIND_PROC		ldap_back_default_rebind;
120extern LDAP_URLLIST_PROC	ldap_back_default_urllist;
121
122LDAP_END_DECL
123
124#endif /* PROTO_LDAP_H */
125