]> git.sur5r.net Git - openldap/blob - servers/slapd/back-bdb/proto-bdb.h
cleanup & more
[openldap] / servers / slapd / back-bdb / proto-bdb.h
1 /* $OpenLDAP$ */
2 /*
3  * Copyright 2000-2003 The OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6
7 #ifndef _PROTO_BDB_H
8 #define _PROTO_BDB_H
9
10 LDAP_BEGIN_DECL
11
12 /*
13  * alias.c
14  */
15 Entry *bdb_deref_internal_r LDAP_P((
16         BackendDB *be,
17         Entry *e,
18         struct berval *dn,
19         int *err,
20         Entry **matched,
21         const char **text ));
22
23 #define deref_entry_r( be, e, err, matched, text ) \
24         bdb_deref_internal_r( be, e, NULL, err, matched, text )
25 #define deref_dn_r( be, dn, err, matched, text ) \
26         bdb_deref_internal_r( be, NULL, dn, err, matched, text)
27
28 /*
29  * attr.c
30  */
31
32 void bdb_attr_mask( struct bdb_info *bdb,
33         AttributeDescription *desc,
34         slap_mask_t *indexmask );
35
36 int bdb_attr_index_config LDAP_P(( struct bdb_info *bdb,
37         const char *fname, int lineno,
38         int argc, char **argv ));
39
40 void bdb_attr_index_destroy LDAP_P(( Avlnode *tree ));
41
42 /*
43  * dbcache.c
44  */
45 int
46 bdb_db_cache(
47     Backend     *be,
48     DB_TXN *tid,
49     const char *name,
50         DB **db );
51
52 /*
53  * dn2entry.c
54  */
55 int bdb_dn2entry_rw LDAP_P(( BackendDB *be, DB_TXN *tid,
56         struct berval *dn, Entry **e, Entry **matched, int flags, int rw,
57         u_int32_t locker, DB_LOCK *lock));
58 #define bdb_dn2entry_r(be, tid, dn, e, m, f, locker, lock) \
59         bdb_dn2entry_rw((be), (tid), (dn), (e), (m), (f), 0, locker, lock)
60 #define bdb_dn2entry_w(be, tid, dn, e, m, f, locker, lock) \
61         bdb_dn2entry_rw((be), (tid), (dn), (e), (m), (f), 1, locker, lock)
62
63 /*
64  * dn2id.c
65  */
66 int bdb_dn2id(
67         BackendDB *be,
68         DB_TXN *tid,
69         struct berval *dn,
70         ID *id,
71         int flags );
72
73 int bdb_dn2id_matched(
74         BackendDB *be,
75         DB_TXN *tid,
76         struct berval *dn,
77         ID *id,
78         ID *id2,
79         int flags );
80
81 int bdb_dn2id_add(
82         BackendDB *be,
83         DB_TXN *tid,
84         struct berval *pdn,
85         Entry *e );
86
87 int bdb_dn2id_delete(
88         BackendDB *be,
89         DB_TXN *tid,
90         char *pdn,
91         Entry *e );
92
93 int bdb_dn2id_children(
94         BackendDB *be,
95         DB_TXN *tid,
96         struct berval *dn,
97         int flags );
98
99 int
100 bdb_dn2idl(
101         BackendDB       *be,
102         struct berval   *dn,
103         int prefix,
104         ID *ids );
105
106 /*
107  * entry.c
108  */
109 int bdb_entry_return( Entry *e );
110 BI_entry_release_rw bdb_entry_release;
111 BI_entry_get_rw bdb_entry_get;
112
113 /*
114  * error.c
115  */
116 void bdb_errcall( const char *pfx, char * msg );
117
118 /*
119  * filterentry.c
120  */
121 int bdb_filter_candidates(
122         Backend *be,
123         Filter  *f,
124         ID *ids,
125         ID *tmp,
126         ID *stack );
127
128 /*
129  * id2entry.c
130  */
131 int bdb_id2entry_add(
132         BackendDB *be,
133         DB_TXN *tid,
134         Entry *e );
135
136 int bdb_id2entry_update(
137         BackendDB *be,
138         DB_TXN *tid,
139         Entry *e );
140
141 int bdb_id2entry_delete(
142         BackendDB *be,
143         DB_TXN *tid,
144         Entry *e);
145
146 int bdb_id2entry_rw(
147         BackendDB *be,
148         DB_TXN *tid,
149         ID id,
150         Entry **e,
151         int rw,
152         u_int32_t locker,
153         DB_LOCK *lock );
154 #define bdb_id2entry_r(be, tid, id, e, locker, lock) \
155         bdb_id2entry_rw((be), (tid), (id), (e), 0, locker, lock)
156 #define bdb_id2entry_w(be, tid, id, e, locker, lock) \
157         bdb_id2entry_rw((be), (tid), (id), (e), 1, locker, lock)
158
159 void bdb_entry_free ( Entry *e );
160
161 /*
162  * idl.c
163  */
164 #ifdef SLAP_IDL_CACHE
165 int bdb_idl_entry_cmp( const void*, const void* );
166 #endif
167
168 unsigned bdb_idl_search( ID *ids, ID id );
169
170 int bdb_bt_compare(
171         DB *db,
172         const DBT *a,
173         const DBT *b );
174
175 int bdb_idl_fetch_key(
176         BackendDB *be,
177         DB *db,
178         DB_TXN *txn,
179         DBT *key,
180         ID *ids );
181
182 int bdb_idl_insert( ID *ids, ID id );
183
184 int bdb_idl_insert_key(
185         BackendDB *be,
186         DB *db,
187         DB_TXN *txn,
188         DBT *key,
189         ID id );
190
191 int bdb_idl_delete_key(
192         BackendDB *be,
193         DB *db,
194         DB_TXN *txn,
195         DBT *key,
196         ID id );
197
198 #if 0
199 int
200 bdb_idl_notin(
201     ID  *a,
202     ID  *b,
203         ID      *ids );
204 #endif
205
206 int
207 bdb_idl_intersection(
208         ID *a,
209         ID *b );
210
211 int
212 bdb_idl_union(
213         ID *a,
214         ID *b );
215
216 ID bdb_idl_first( ID *ids, ID *cursor );
217 ID bdb_idl_next( ID *ids, ID *cursor );
218
219
220 /*
221  * index.c
222  */
223 extern int
224 bdb_index_is_indexed LDAP_P((
225         Backend *be,
226         AttributeDescription *desc ));
227
228 extern int
229 bdb_index_param LDAP_P((
230         Backend *be,
231         AttributeDescription *desc,
232         int ftype,
233         DB **db,
234         slap_mask_t *mask,
235         struct berval *prefix ));
236
237 extern int
238 bdb_index_values LDAP_P((
239         Backend *be,
240         DB_TXN *txn,
241         AttributeDescription *desc,
242         BerVarray vals,
243         ID id,
244         int op ));
245
246 int bdb_index_entry LDAP_P(( Backend *be, DB_TXN *t, int r, Entry *e ));
247
248 #define bdb_index_entry_add(be,t,e) \
249         bdb_index_entry((be),(t),SLAP_INDEX_ADD_OP,(e))
250 #define bdb_index_entry_del(be,t,e) \
251         bdb_index_entry((be),(t),SLAP_INDEX_DELETE_OP,(e))
252
253 /*
254  * init.c
255  */
256 extern struct berval bdb_uuid;
257
258 /*
259  * key.c
260  */
261 extern int
262 bdb_key_read(
263     Backend     *be,
264         DB *db,
265         DB_TXN *txn,
266     struct berval *k,
267         ID *ids );
268
269 extern int
270 bdb_key_change(
271     Backend      *be,
272     DB *db,
273         DB_TXN *txn,
274     struct berval *k,
275     ID id,
276     int op );
277         
278 /*
279  * nextid.c
280  */
281 int bdb_next_id( BackendDB *be, DB_TXN *tid, ID *id );
282 int bdb_last_id( BackendDB *be, DB_TXN *tid );
283
284 /*
285  * modify.c
286  */
287 int bdb_modify_internal(
288         Operation *op,
289         DB_TXN *tid,
290         Modifications *modlist,
291         Entry *e,
292         const char **text,
293         char *textbuf,
294         size_t textlen );
295
296 /*
297  * passwd.c
298  */
299 BI_op_extended bdb_exop_passwd;
300
301
302 /*
303  * cache.c
304  */
305
306 void bdb_cache_entry_commit( Entry *e );
307 void bdb_cache_return_entry_rw( DB_ENV *env, Cache *cache, Entry *e,
308         int rw, DB_LOCK *lock );
309 #define bdb_cache_return_entry_r(env, c, e, l) \
310         bdb_cache_return_entry_rw((env), (c), (e), 0, (l))
311 #define bdb_cache_return_entry_w(env, c, e, l) \
312         bdb_cache_return_entry_rw((env), (c), (e), 1, (l))
313 void bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw );
314 #define bdb_unlocked_cache_return_entry_r( c, e ) \
315         bdb_unlocked_cache_return_entry_rw((c), (e), 0)
316 #define bdb_unlocked_cache_return_entry_w( c, e ) \
317         bdb_unlocked_cache_return_entry_rw((c), (e), 1)
318 int bdb_cache_add_entry_rw(
319         DB_ENV  *env,
320         Cache   *cache,
321         Entry   *e,
322         int     rw,
323         u_int32_t locker,
324         DB_LOCK *lock
325 );
326 int bdb_cache_update_entry(
327        Cache   *cache,
328        Entry   *e
329 );
330 ID bdb_cache_find_entry_ndn2id(
331        Backend *be,
332        Cache   *cache,
333        struct berval   *ndn
334 );
335 Entry* bdb_cache_find_entry_id(
336         DB_ENV          *env,
337         Cache           *cache,
338         ID              id,
339         int             rw,
340         u_int32_t       locker,
341         DB_LOCK         *lock
342 );
343 int bdb_cache_delete_entry(
344        Cache   *cache,
345        Entry   *e
346 );
347 void bdb_cache_release_all( Cache *cache );
348
349 /*
350  * lcup.c
351  */
352
353 BI_op_abandon bdb_abandon;
354
355 BI_op_cancel bdb_cancel;
356
357 #if defined(LDAP_CLIENT_UPDATE) || defined(LDAP_SYNC)
358 int bdb_do_search(
359         Operation       *op,
360         SlapReply       *rs,
361         Operation       *ps_op,
362         Entry           *entry,
363         int             psearch_type
364 );
365 #define bdb_psearch(op, rs, sop, e, ps_type)    bdb_do_search(op, rs, sop, e, ps_type)
366 #endif
367
368 /*
369  * search.c
370  */
371
372 #ifdef LDAP_CLIENT_UPDATE
373 int
374 bdb_build_lcup_update_ctrl(
375         Operation       *op,
376         SlapReply       *rs,
377         Entry           *e,
378         int             entry_count,
379         LDAPControl     **ctrls,
380         int             num_ctrls,
381         struct berval   *latest_entrycsn_bv,
382         int             isdeleted       );
383
384 int
385 bdb_build_lcup_done_ctrl(
386         Operation       *op,
387         SlapReply       *rs,
388         LDAPControl     **ctrls,
389         int             num_ctrls,
390         struct berval   *latest_entrycsn_bv     );
391 #endif
392
393 #ifdef LDAP_SYNC
394 int
395 bdb_build_sync_state_ctrl(
396         Operation       *op,
397         SlapReply       *rs,
398         Entry           *e,
399         int             entry_sync_state,
400         LDAPControl     **ctrls,
401         int             num_ctrls,
402         int             send_cookie,
403         struct berval   *latest_entrycsn_bv     );
404
405 int
406 bdb_build_sync_done_ctrl(
407         Operation       *op,
408         SlapReply       *rs,
409         LDAPControl     **ctrls,
410         int             num_ctrls,
411         int             send_cookie,
412         struct berval   *latest_entrycsn_bv     );
413
414 int
415 bdb_send_ldap_intermediate(
416         Operation   *op,
417         SlapReply       *rs,
418         int         state,
419         struct berval *cookie );
420 #endif
421
422 #ifdef BDB_REUSE_LOCKERS
423
424 int bdb_locker_id( Operation *op, DB_ENV *env, int *locker );
425
426 #endif
427
428 #ifdef HAVE_EBCDIC
429 char *ebcdic_dberror( int rc );
430
431 #define db_strerror(x)  ebcdic_dberror(x)
432 #endif
433
434 LDAP_END_DECL
435
436 #endif /* _PROTO_BDB_H */