1 /*	$NetBSD: proto-ndb.h,v 1.1.1.2 2010/12/12 15:23:19 adam Exp $	*/
2 
3 /* OpenLDAP: pkg/ldap/servers/slapd/back-ndb/proto-ndb.h,v 1.3.2.3 2010/04/13 20:23:35 kurt Exp */
4 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
5  *
6  * Copyright 2008-2010 The OpenLDAP Foundation.
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted only as authorized by the OpenLDAP
11  * Public License.
12  *
13  * A copy of this license is available in the file LICENSE in the
14  * top-level directory of the distribution or, alternatively, at
15  * <http://www.OpenLDAP.org/license.html>.
16  */
17 /* ACKNOWLEDGEMENTS:
18  * This work was initially developed by Howard Chu for inclusion
19  * in OpenLDAP Software. This work was sponsored by MySQL.
20  */
21 
22 #ifndef _PROTO_NDB_H
23 #define _PROTO_NDB_H
24 
25 LDAP_BEGIN_DECL
26 
27 extern BI_init		ndb_back_initialize;
28 
29 extern BI_open		ndb_back_open;
30 extern BI_close		ndb_back_close;
31 extern BI_destroy	ndb_back_destroy;
32 
33 extern BI_db_init	ndb_back_db_init;
34 extern BI_db_destroy	ndb_back_db_destroy;
35 
36 extern BI_op_bind	ndb_back_bind;
37 extern BI_op_unbind	ndb_back_unbind;
38 extern BI_op_search	ndb_back_search;
39 extern BI_op_compare	ndb_back_compare;
40 extern BI_op_modify	ndb_back_modify;
41 extern BI_op_modrdn	ndb_back_modrdn;
42 extern BI_op_add	ndb_back_add;
43 extern BI_op_delete	ndb_back_delete;
44 
45 extern BI_operational	ndb_operational;
46 extern BI_has_subordinates	ndb_has_subordinates;
47 extern BI_entry_get_rw	ndb_entry_get;
48 
49 extern BI_tool_entry_open	ndb_tool_entry_open;
50 extern BI_tool_entry_close	ndb_tool_entry_close;
51 extern BI_tool_entry_first	ndb_tool_entry_first;
52 extern BI_tool_entry_next	ndb_tool_entry_next;
53 extern BI_tool_entry_get	ndb_tool_entry_get;
54 extern BI_tool_entry_put	ndb_tool_entry_put;
55 extern BI_tool_dn2id_get	ndb_tool_dn2id_get;
56 
57 extern int ndb_modify_internal(
58 	Operation *op,
59 	NdbArgs *NA,
60 	const char **text,
61 	char *textbuf,
62 	size_t textlen );
63 
64 extern int
65 ndb_entry_get_data(
66 	Operation *op,
67 	NdbArgs *args,
68 	int update );
69 
70 extern int
71 ndb_entry_put_data(
72 	BackendDB *be,
73 	NdbArgs *args );
74 
75 extern int
76 ndb_entry_del_data(
77 	BackendDB *be,
78 	NdbArgs *args );
79 
80 extern int
81 ndb_entry_put_info(
82 	BackendDB *be,
83 	NdbArgs *args,
84 	int update );
85 
86 extern int
87 ndb_entry_get_info(
88 	Operation *op,
89 	NdbArgs *args,
90 	int update,
91 	struct berval *matched );
92 
93 extern "C" int
94 ndb_entry_del_info(
95 	BackendDB *be,
96 	NdbArgs *args );
97 
98 extern int
99 ndb_dn2rdns(
100 	struct berval *dn,
101 	NdbRdns *buf );
102 
103 extern NdbAttrInfo *
104 ndb_ai_find( struct ndb_info *ni, AttributeType *at );
105 
106 extern NdbAttrInfo *
107 ndb_ai_get( struct ndb_info *ni, struct berval *at );
108 
109 extern int
110 ndb_aset_get( struct ndb_info *ni, struct berval *sname, struct berval *attrs, NdbOcInfo **ret );
111 
112 extern int
113 ndb_aset_create( struct ndb_info *ni, NdbOcInfo *oci );
114 
115 extern int
116 ndb_oc_read( struct ndb_info *ni, const NdbDictionary::Dictionary *dict );
117 
118 extern int
119 ndb_oc_attrs(
120 	NdbTransaction *txn,
121 	const NdbDictionary::Table *myTable,
122 	Entry *e,
123 	NdbOcInfo *no,
124 	NdbAttrInfo **attrs,
125 	int nattrs,
126 	Attribute *old );
127 
128 extern int
129 ndb_has_children(
130 	NdbArgs *NA,
131 	int *hasChildren );
132 
133 extern struct berval *
134 ndb_str2bvarray(
135 	char *str,
136 	int len,
137 	char delim,
138 	void *ctx );
139 
140 extern struct berval *
141 ndb_ref2oclist(
142 	const char *ref,
143 	void *ctx );
144 
145 extern int
146 ndb_next_id(
147 	BackendDB *be,
148 	Ndb *ndb,
149 	ID *id );
150 
151 extern int
152 ndb_thread_handle(
153 	Operation *op,
154 	Ndb **ndb );
155 
156 extern int
157 ndb_back_init_cf(
158 	BackendInfo *bi );
159 
160 extern "C" void
161 ndb_trans_backoff( int num_retries );
162 
163 extern "C" void
164 ndb_check_referral( Operation *op, SlapReply *rs, NdbArgs *NA );
165 
166 LDAP_END_DECL
167 
168 #endif /* _PROTO_NDB_H */
169