Back to index

openldap  2.4.31
proto-bdb.h
Go to the documentation of this file.
00001 /* $OpenLDAP$ */
00002 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
00003  *
00004  * Copyright 2000-2012 The OpenLDAP Foundation.
00005  * All rights reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted only as authorized by the OpenLDAP
00009  * Public License.
00010  *
00011  * A copy of this license is available in the file LICENSE in the
00012  * top-level directory of the distribution or, alternatively, at
00013  * <http://www.OpenLDAP.org/license.html>.
00014  */
00015 
00016 #ifndef _PROTO_BDB_H
00017 #define _PROTO_BDB_H
00018 
00019 LDAP_BEGIN_DECL
00020 
00021 #ifdef BDB_HIER
00022 #define       BDB_SYMBOL(x) LDAP_CONCAT(hdb_,x)
00023 #define BDB_UCTYPE   "HDB"
00024 #else
00025 #define BDB_SYMBOL(x)       LDAP_CONCAT(bdb_,x)
00026 #define BDB_UCTYPE   "BDB"
00027 #endif
00028 
00029 /*
00030  * attr.c
00031  */
00032 
00033 #define bdb_attr_mask                            BDB_SYMBOL(attr_mask)
00034 #define bdb_attr_flush                           BDB_SYMBOL(attr_flush)
00035 #define bdb_attr_slot                            BDB_SYMBOL(attr_slot)
00036 #define bdb_attr_index_config             BDB_SYMBOL(attr_index_config)
00037 #define bdb_attr_index_destroy            BDB_SYMBOL(attr_index_destroy)
00038 #define bdb_attr_index_free               BDB_SYMBOL(attr_index_free)
00039 #define bdb_attr_index_unparse            BDB_SYMBOL(attr_index_unparse)
00040 #define bdb_attr_info_free                BDB_SYMBOL(attr_info_free)
00041 
00042 AttrInfo *bdb_attr_mask( struct bdb_info *bdb,
00043        AttributeDescription *desc );
00044 
00045 void bdb_attr_flush( struct bdb_info *bdb );
00046 
00047 int bdb_attr_slot( struct bdb_info *bdb,
00048        AttributeDescription *desc, int *insert );
00049 
00050 int bdb_attr_index_config LDAP_P(( struct bdb_info *bdb,
00051        const char *fname, int lineno,
00052        int argc, char **argv, struct config_reply_s *cr ));
00053 
00054 void bdb_attr_index_unparse LDAP_P(( struct bdb_info *bdb, BerVarray *bva ));
00055 void bdb_attr_index_destroy LDAP_P(( struct bdb_info *bdb ));
00056 void bdb_attr_index_free LDAP_P(( struct bdb_info *bdb,
00057        AttributeDescription *ad ));
00058 
00059 void bdb_attr_info_free( AttrInfo *ai );
00060 
00061 /*
00062  * config.c
00063  */
00064 
00065 #define bdb_back_init_cf                         BDB_SYMBOL(back_init_cf)
00066 
00067 int bdb_back_init_cf( BackendInfo *bi );
00068 
00069 /*
00070  * dbcache.c
00071  */
00072 #define bdb_db_cache                      BDB_SYMBOL(db_cache)
00073 #define bdb_db_findsize                          BDB_SYMBOL(db_findsize)
00074 
00075 int
00076 bdb_db_cache(
00077     Backend   *be,
00078     struct berval *name,
00079        DB **db );
00080 
00081 int
00082 bdb_db_findsize(
00083        struct bdb_info *bdb,
00084        struct berval *name );
00085 
00086 /*
00087  * dn2entry.c
00088  */
00089 #define bdb_dn2entry                      BDB_SYMBOL(dn2entry)
00090 
00091 int bdb_dn2entry LDAP_P(( Operation *op, DB_TXN *tid,
00092        struct berval *dn, EntryInfo **e, int matched,
00093        DB_LOCK *lock ));
00094 
00095 /*
00096  * dn2id.c
00097  */
00098 #define bdb_dn2id                                BDB_SYMBOL(dn2id)
00099 #define bdb_dn2id_add                            BDB_SYMBOL(dn2id_add)
00100 #define bdb_dn2id_delete                  BDB_SYMBOL(dn2id_delete)
00101 #define bdb_dn2id_children                BDB_SYMBOL(dn2id_children)
00102 #define bdb_dn2idl                               BDB_SYMBOL(dn2idl)
00103 
00104 int bdb_dn2id(
00105        Operation *op,
00106        struct berval *dn,
00107        EntryInfo *ei,
00108        DB_TXN *txn,
00109        DBC **cursor );
00110 
00111 int bdb_dn2id_add(
00112        Operation *op,
00113        DB_TXN *tid,
00114        EntryInfo *eip,
00115        Entry *e );
00116 
00117 int bdb_dn2id_delete(
00118        Operation *op,
00119        DB_TXN *tid,
00120        EntryInfo *eip,
00121        Entry *e );
00122 
00123 int bdb_dn2id_children(
00124        Operation *op,
00125        DB_TXN *tid,
00126        Entry *e );
00127 
00128 int bdb_dn2idl(
00129        Operation *op,
00130        DB_TXN *txn,
00131        struct berval *ndn,
00132        EntryInfo *ei,
00133        ID *ids,
00134        ID *stack );
00135 
00136 #ifdef BDB_HIER
00137 #define bdb_dn2id_parent                  BDB_SYMBOL(dn2id_parent)
00138 #define bdb_dup_compare                          BDB_SYMBOL(dup_compare)
00139 #define bdb_fix_dn                               BDB_SYMBOL(fix_dn)
00140 
00141 int bdb_dn2id_parent(
00142        Operation *op,
00143        DB_TXN *txn,
00144        EntryInfo *ei,
00145        ID *idp );
00146 
00147 int bdb_dup_compare(
00148        DB *db,
00149        const DBT *usrkey,
00150        const DBT *curkey );
00151 
00152 int bdb_fix_dn( Entry *e, int checkit );
00153 #endif
00154 
00155 
00156 /*
00157  * error.c
00158  */
00159 #define bdb_errcall                              BDB_SYMBOL(errcall)
00160 
00161 #if DB_VERSION_FULL < 0x04030000
00162 void bdb_errcall( const char *pfx, char * msg );
00163 #else
00164 #define bdb_msgcall                              BDB_SYMBOL(msgcall)
00165 void bdb_errcall( const DB_ENV *env, const char *pfx, const char * msg );
00166 void bdb_msgcall( const DB_ENV *env, const char * msg );
00167 #endif
00168 
00169 #ifdef HAVE_EBCDIC
00170 #define ebcdic_dberror                           BDB_SYMBOL(ebcdic_dberror)
00171 
00172 char *ebcdic_dberror( int rc );
00173 #define db_strerror(x)      ebcdic_dberror(x)
00174 #endif
00175 
00176 /*
00177  * filterentry.c
00178  */
00179 #define bdb_filter_candidates             BDB_SYMBOL(filter_candidates)
00180 
00181 int bdb_filter_candidates(
00182        Operation *op,
00183        DB_TXN *txn,
00184        Filter *f,
00185        ID *ids,
00186        ID *tmp,
00187        ID *stack );
00188 
00189 /*
00190  * id2entry.c
00191  */
00192 #define bdb_id2entry                      BDB_SYMBOL(id2entry)
00193 #define bdb_id2entry_add                  BDB_SYMBOL(id2entry_add)
00194 #define bdb_id2entry_update               BDB_SYMBOL(id2entry_update)
00195 #define bdb_id2entry_delete               BDB_SYMBOL(id2entry_delete)
00196 
00197 int bdb_id2entry_add(
00198        BackendDB *be,
00199        DB_TXN *tid,
00200        Entry *e );
00201 
00202 int bdb_id2entry_update(
00203        BackendDB *be,
00204        DB_TXN *tid,
00205        Entry *e );
00206 
00207 int bdb_id2entry_delete(
00208        BackendDB *be,
00209        DB_TXN *tid,
00210        Entry *e);
00211 
00212 #ifdef SLAP_ZONE_ALLOC
00213 #else
00214 int bdb_id2entry(
00215        BackendDB *be,
00216        DB_TXN *tid,
00217        ID id,
00218        Entry **e);
00219 #endif
00220 
00221 #define bdb_entry_free                           BDB_SYMBOL(entry_free)
00222 #define bdb_entry_return                  BDB_SYMBOL(entry_return)
00223 #define bdb_entry_release                 BDB_SYMBOL(entry_release)
00224 #define bdb_entry_get                            BDB_SYMBOL(entry_get)
00225 
00226 void bdb_entry_free ( Entry *e );
00227 #ifdef SLAP_ZONE_ALLOC
00228 int bdb_entry_return( struct bdb_info *bdb, Entry *e, int seqno );
00229 #else
00230 int bdb_entry_return( Entry *e );
00231 #endif
00232 BI_entry_release_rw bdb_entry_release;
00233 BI_entry_get_rw bdb_entry_get;
00234 
00235 
00236 /*
00237  * idl.c
00238  */
00239 
00240 #define bdb_idl_cache_get                 BDB_SYMBOL(idl_cache_get)
00241 #define bdb_idl_cache_put                 BDB_SYMBOL(idl_cache_put)
00242 #define bdb_idl_cache_del                 BDB_SYMBOL(idl_cache_del)
00243 #define bdb_idl_cache_add_id              BDB_SYMBOL(idl_cache_add_id)
00244 #define bdb_idl_cache_del_id              BDB_SYMBOL(idl_cache_del_id)
00245 
00246 int bdb_idl_cache_get(
00247        struct bdb_info *bdb,
00248        DB *db,
00249        DBT *key,
00250        ID *ids );
00251 
00252 void
00253 bdb_idl_cache_put(
00254        struct bdb_info      *bdb,
00255        DB            *db,
00256        DBT           *key,
00257        ID            *ids,
00258        int           rc );
00259 
00260 void
00261 bdb_idl_cache_del(
00262        struct bdb_info      *bdb,
00263        DB            *db,
00264        DBT           *key );
00265 
00266 void
00267 bdb_idl_cache_add_id(
00268        struct bdb_info      *bdb,
00269        DB            *db,
00270        DBT           *key,
00271        ID            id );
00272 
00273 void
00274 bdb_idl_cache_del_id(
00275        struct bdb_info      *bdb,
00276        DB            *db,
00277        DBT           *key,
00278        ID            id );
00279 
00280 #define bdb_idl_first                            BDB_SYMBOL(idl_first)
00281 #define bdb_idl_next                      BDB_SYMBOL(idl_next)
00282 #define bdb_idl_search                           BDB_SYMBOL(idl_search)
00283 #define bdb_idl_insert                           BDB_SYMBOL(idl_insert)
00284 #define bdb_idl_delete                           BDB_SYMBOL(idl_delete)
00285 #define bdb_idl_intersection              BDB_SYMBOL(idl_intersection)
00286 #define bdb_idl_union                            BDB_SYMBOL(idl_union)
00287 #define bdb_idl_sort                      BDB_SYMBOL(idl_sort)
00288 #define bdb_idl_append                           BDB_SYMBOL(idl_append)
00289 #define bdb_idl_append_one                BDB_SYMBOL(idl_append_one)
00290 
00291 #define bdb_idl_fetch_key                 BDB_SYMBOL(idl_fetch_key)
00292 #define bdb_idl_insert_key                BDB_SYMBOL(idl_insert_key)
00293 #define bdb_idl_delete_key                BDB_SYMBOL(idl_delete_key)
00294 
00295 unsigned bdb_idl_search( ID *ids, ID id );
00296 
00297 int bdb_idl_fetch_key(
00298        BackendDB     *be,
00299        DB                   *db,
00300        DB_TXN        *txn,
00301        DBT                  *key,
00302        ID                   *ids,
00303        DBC                     **saved_cursor,
00304        int                     get_flag );
00305 
00306 int bdb_idl_insert( ID *ids, ID id );
00307 int bdb_idl_delete( ID *ids, ID id );
00308 
00309 int bdb_idl_insert_key(
00310        BackendDB *be,
00311        DB *db,
00312        DB_TXN *txn,
00313        DBT *key,
00314        ID id );
00315 
00316 int bdb_idl_delete_key(
00317        BackendDB *be,
00318        DB *db,
00319        DB_TXN *txn,
00320        DBT *key,
00321        ID id );
00322 
00323 int
00324 bdb_idl_intersection(
00325        ID *a,
00326        ID *b );
00327 
00328 int
00329 bdb_idl_union(
00330        ID *a,
00331        ID *b );
00332 
00333 ID bdb_idl_first( ID *ids, ID *cursor );
00334 ID bdb_idl_next( ID *ids, ID *cursor );
00335 
00336 void bdb_idl_sort( ID *ids, ID *tmp );
00337 int bdb_idl_append( ID *a, ID *b );
00338 int bdb_idl_append_one( ID *ids, ID id );
00339 
00340 
00341 /*
00342  * index.c
00343  */
00344 #define bdb_index_mask                           BDB_SYMBOL(index_mask)
00345 #define bdb_index_param                          BDB_SYMBOL(index_param)
00346 #define bdb_index_values                  BDB_SYMBOL(index_values)
00347 #define bdb_index_entry                          BDB_SYMBOL(index_entry)
00348 #define bdb_index_recset                  BDB_SYMBOL(index_recset)
00349 #define bdb_index_recrun                  BDB_SYMBOL(index_recrun)
00350 
00351 extern AttrInfo *
00352 bdb_index_mask LDAP_P((
00353        Backend *be,
00354        AttributeDescription *desc,
00355        struct berval *name ));
00356 
00357 extern int
00358 bdb_index_param LDAP_P((
00359        Backend *be,
00360        AttributeDescription *desc,
00361        int ftype,
00362        DB **db,
00363        slap_mask_t *mask,
00364        struct berval *prefix ));
00365 
00366 extern int
00367 bdb_index_values LDAP_P((
00368        Operation *op,
00369        DB_TXN *txn,
00370        AttributeDescription *desc,
00371        BerVarray vals,
00372        ID id,
00373        int opid ));
00374 
00375 extern int
00376 bdb_index_recset LDAP_P((
00377        struct bdb_info *bdb,
00378        Attribute *a,
00379        AttributeType *type,
00380        struct berval *tags,
00381        IndexRec *ir ));
00382 
00383 extern int
00384 bdb_index_recrun LDAP_P((
00385        Operation *op,
00386        struct bdb_info *bdb,
00387        IndexRec *ir,
00388        ID id,
00389        int base ));
00390 
00391 int bdb_index_entry LDAP_P(( Operation *op, DB_TXN *t, int r, Entry *e ));
00392 
00393 #define bdb_index_entry_add(op,t,e) \
00394        bdb_index_entry((op),(t),SLAP_INDEX_ADD_OP,(e))
00395 #define bdb_index_entry_del(op,t,e) \
00396        bdb_index_entry((op),(t),SLAP_INDEX_DELETE_OP,(e))
00397 
00398 /*
00399  * key.c
00400  */
00401 #define bdb_key_read                      BDB_SYMBOL(key_read)
00402 #define bdb_key_change                           BDB_SYMBOL(key_change)
00403 
00404 extern int
00405 bdb_key_read(
00406     Backend   *be,
00407        DB *db,
00408        DB_TXN *txn,
00409     struct berval *k,
00410        ID *ids,
00411     DBC **saved_cursor,
00412         int get_flags );
00413 
00414 extern int
00415 bdb_key_change(
00416     Backend    *be,
00417     DB *db,
00418        DB_TXN *txn,
00419     struct berval *k,
00420     ID id,
00421     int       op );
00422        
00423 /*
00424  * nextid.c
00425  */
00426 #define bdb_next_id                              BDB_SYMBOL(next_id)
00427 #define bdb_last_id                              BDB_SYMBOL(last_id)
00428 
00429 int bdb_next_id( BackendDB *be, ID *id );
00430 int bdb_last_id( BackendDB *be, DB_TXN *tid );
00431 
00432 /*
00433  * modify.c
00434  */
00435 #define bdb_modify_internal               BDB_SYMBOL(modify_internal)
00436 
00437 int bdb_modify_internal(
00438        Operation *op,
00439        DB_TXN *tid,
00440        Modifications *modlist,
00441        Entry *e,
00442        const char **text,
00443        char *textbuf,
00444        size_t textlen );
00445 
00446 /*
00447  * monitor.c
00448  */
00449 
00450 #define bdb_monitor_db_init BDB_SYMBOL(monitor_db_init)
00451 #define bdb_monitor_db_open BDB_SYMBOL(monitor_db_open)
00452 #define bdb_monitor_db_close       BDB_SYMBOL(monitor_db_close)
00453 #define bdb_monitor_db_destroy     BDB_SYMBOL(monitor_db_destroy)
00454 
00455 int bdb_monitor_db_init( BackendDB *be );
00456 int bdb_monitor_db_open( BackendDB *be );
00457 int bdb_monitor_db_close( BackendDB *be );
00458 int bdb_monitor_db_destroy( BackendDB *be );
00459 
00460 #ifdef BDB_MONITOR_IDX
00461 #define bdb_monitor_idx_add BDB_SYMBOL(monitor_idx_add)
00462 int
00463 bdb_monitor_idx_add(
00464        struct bdb_info             *bdb,
00465        AttributeDescription *desc,
00466        slap_mask_t          type );
00467 #endif /* BDB_MONITOR_IDX */
00468 
00469 /*
00470  * cache.c
00471  */
00472 #define bdb_cache_entry_db_unlock  BDB_SYMBOL(cache_entry_db_unlock)
00473 #define bdb_cache_return_entry_rw  BDB_SYMBOL(cache_return_entry_rw)
00474 
00475 #define       bdb_cache_entryinfo_lock(e) \
00476        ldap_pvt_thread_mutex_lock( &(e)->bei_kids_mutex )
00477 #define       bdb_cache_entryinfo_unlock(e) \
00478        ldap_pvt_thread_mutex_unlock( &(e)->bei_kids_mutex )
00479 #define       bdb_cache_entryinfo_trylock(e) \
00480        ldap_pvt_thread_mutex_trylock( &(e)->bei_kids_mutex )
00481 
00482 /* What a mess. Hopefully the current cache scheme will stabilize
00483  * and we can trim out all of this stuff.
00484  */
00485 void bdb_cache_return_entry_rw( struct bdb_info *bdb, Entry *e,
00486        int rw, DB_LOCK *lock );
00487 #define bdb_cache_return_entry_r(bdb, e, l) \
00488        bdb_cache_return_entry_rw((bdb), (e), 0, (l))
00489 #define bdb_cache_return_entry_w(bdb, e, l) \
00490        bdb_cache_return_entry_rw((bdb), (e), 1, (l))
00491 #if 0
00492 void bdb_unlocked_cache_return_entry_rw( struct bdb_info *bdb, Entry *e, int rw );
00493 #else
00494 #define       bdb_unlocked_cache_return_entry_rw( a, b, c )    ((void)0)
00495 #endif
00496 #define bdb_unlocked_cache_return_entry_r( c, e ) \
00497        bdb_unlocked_cache_return_entry_rw((c), (e), 0)
00498 #define bdb_unlocked_cache_return_entry_w( c, e ) \
00499        bdb_unlocked_cache_return_entry_rw((c), (e), 1)
00500 
00501 #define bdb_cache_add                            BDB_SYMBOL(cache_add)
00502 #define bdb_cache_children                BDB_SYMBOL(cache_children)
00503 #define bdb_cache_delete                  BDB_SYMBOL(cache_delete)
00504 #define bdb_cache_delete_cleanup   BDB_SYMBOL(cache_delete_cleanup)
00505 #define bdb_cache_find_id                 BDB_SYMBOL(cache_find_id)
00506 #define bdb_cache_find_ndn                BDB_SYMBOL(cache_find_ndn)
00507 #define bdb_cache_find_parent             BDB_SYMBOL(cache_find_parent)
00508 #define bdb_cache_modify                  BDB_SYMBOL(cache_modify)
00509 #define bdb_cache_modrdn                  BDB_SYMBOL(cache_modrdn)
00510 #define bdb_cache_release_all             BDB_SYMBOL(cache_release_all)
00511 #define bdb_cache_delete_entry            BDB_SYMBOL(cache_delete_entry)
00512 #define bdb_cache_deref                          BDB_SYMBOL(cache_deref)
00513 
00514 int bdb_cache_children(
00515        Operation *op,
00516        DB_TXN *txn,
00517        Entry *e
00518 );
00519 int bdb_cache_add(
00520        struct bdb_info *bdb,
00521        EntryInfo *pei,
00522        Entry   *e,
00523        struct berval *nrdn,
00524        DB_TXN *txn,
00525        DB_LOCK *lock
00526 );
00527 int bdb_cache_modrdn(
00528        struct bdb_info *bdb,
00529        Entry  *e,
00530        struct berval *nrdn,
00531        Entry  *new,
00532        EntryInfo *ein,
00533        DB_TXN *txn,
00534        DB_LOCK *lock
00535 );
00536 int bdb_cache_modify(
00537        struct bdb_info *bdb,
00538        Entry *e,
00539        Attribute *newAttrs,
00540        DB_TXN *txn,
00541        DB_LOCK *lock
00542 );
00543 int bdb_cache_find_ndn(
00544        Operation *op,
00545        DB_TXN *txn,
00546        struct berval   *ndn,
00547        EntryInfo     **res
00548 );
00549 
00550 #define       ID_LOCKED     1
00551 #define       ID_NOCACHE    2
00552 #define       ID_NOENTRY    4
00553 #define       ID_CHKPURGE   8
00554 int bdb_cache_find_id(
00555        Operation *op,
00556        DB_TXN *tid,
00557        ID            id,
00558        EntryInfo **eip,
00559        int    flag,
00560        DB_LOCK              *lock
00561 );
00562 int
00563 bdb_cache_find_parent(
00564        Operation *op,
00565        DB_TXN *txn,
00566        ID id,
00567        EntryInfo **res
00568 );
00569 int bdb_cache_delete(
00570        struct bdb_info *bdb,
00571        Entry  *e,
00572        DB_TXN *txn,
00573        DB_LOCK       *lock
00574 );
00575 void bdb_cache_delete_cleanup(
00576        Cache  *cache,
00577        EntryInfo *ei
00578 );
00579 void bdb_cache_release_all( Cache *cache );
00580 void bdb_cache_deref( EntryInfo *ei );
00581 
00582 #ifdef BDB_HIER
00583 int hdb_cache_load(
00584        struct bdb_info *bdb,
00585        EntryInfo *ei,
00586        EntryInfo **res
00587 );
00588 #endif
00589 
00590 #define bdb_cache_entry_db_relock         BDB_SYMBOL(cache_entry_db_relock)
00591 int bdb_cache_entry_db_relock(
00592        struct bdb_info *bdb,
00593        DB_TXN *txn,
00594        EntryInfo *ei,
00595        int rw,
00596        int tryOnly,
00597        DB_LOCK *lock );
00598 
00599 int bdb_cache_entry_db_unlock(
00600        struct bdb_info *bdb,
00601        DB_LOCK *lock );
00602 
00603 #define bdb_reader_get                           BDB_SYMBOL(reader_get)
00604 #define bdb_reader_flush                  BDB_SYMBOL(reader_flush)
00605 int bdb_reader_get( Operation *op, DB_ENV *env, DB_TXN **txn );
00606 void bdb_reader_flush( DB_ENV *env );
00607 
00608 /*
00609  * trans.c
00610  */
00611 #define bdb_trans_backoff                 BDB_SYMBOL(trans_backoff)
00612 
00613 void
00614 bdb_trans_backoff( int num_retries );
00615 
00616 /*
00617  * former external.h
00618  */
00619 
00620 #define bdb_back_initialize        BDB_SYMBOL(back_initialize)
00621 #define bdb_db_config                     BDB_SYMBOL(db_config)
00622 #define bdb_add                           BDB_SYMBOL(add)
00623 #define bdb_bind                   BDB_SYMBOL(bind)
00624 #define bdb_compare                BDB_SYMBOL(compare)
00625 #define bdb_delete                 BDB_SYMBOL(delete)
00626 #define bdb_modify                 BDB_SYMBOL(modify)
00627 #define bdb_modrdn                 BDB_SYMBOL(modrdn)
00628 #define bdb_search                 BDB_SYMBOL(search)
00629 #define bdb_extended               BDB_SYMBOL(extended)
00630 #define bdb_referrals                     BDB_SYMBOL(referrals)
00631 #define bdb_operational                   BDB_SYMBOL(operational)
00632 #define bdb_hasSubordinates        BDB_SYMBOL(hasSubordinates)
00633 #define bdb_tool_entry_open        BDB_SYMBOL(tool_entry_open)
00634 #define bdb_tool_entry_close              BDB_SYMBOL(tool_entry_close)
00635 #define bdb_tool_entry_first_x            BDB_SYMBOL(tool_entry_first_x)
00636 #define bdb_tool_entry_next        BDB_SYMBOL(tool_entry_next)
00637 #define bdb_tool_entry_get         BDB_SYMBOL(tool_entry_get)
00638 #define bdb_tool_entry_put         BDB_SYMBOL(tool_entry_put)
00639 #define bdb_tool_entry_reindex            BDB_SYMBOL(tool_entry_reindex)
00640 #define bdb_tool_dn2id_get         BDB_SYMBOL(tool_dn2id_get)
00641 #define bdb_tool_entry_modify             BDB_SYMBOL(tool_entry_modify)
00642 #define bdb_tool_idl_add           BDB_SYMBOL(tool_idl_add)
00643 
00644 extern BI_init                            bdb_back_initialize;
00645 
00646 extern BI_db_config                bdb_db_config;
00647 
00648 extern BI_op_add                   bdb_add;
00649 extern BI_op_bind                  bdb_bind;
00650 extern BI_op_compare               bdb_compare;
00651 extern BI_op_delete                bdb_delete;
00652 extern BI_op_modify                bdb_modify;
00653 extern BI_op_modrdn                bdb_modrdn;
00654 extern BI_op_search                bdb_search;
00655 extern BI_op_extended                     bdb_extended;
00656 
00657 extern BI_chk_referrals                   bdb_referrals;
00658 
00659 extern BI_operational                     bdb_operational;
00660 
00661 extern BI_has_subordinates         bdb_hasSubordinates;
00662 
00663 /* tools.c */
00664 extern BI_tool_entry_open          bdb_tool_entry_open;
00665 extern BI_tool_entry_close         bdb_tool_entry_close;
00666 extern BI_tool_entry_first_x              bdb_tool_entry_first_x;
00667 extern BI_tool_entry_next          bdb_tool_entry_next;
00668 extern BI_tool_entry_get           bdb_tool_entry_get;
00669 extern BI_tool_entry_put           bdb_tool_entry_put;
00670 extern BI_tool_entry_reindex              bdb_tool_entry_reindex;
00671 extern BI_tool_dn2id_get           bdb_tool_dn2id_get;
00672 extern BI_tool_entry_modify        bdb_tool_entry_modify;
00673 
00674 int bdb_tool_idl_add( BackendDB *be, DB *db, DB_TXN *txn, DBT *key, ID id );
00675 
00676 LDAP_END_DECL
00677 
00678 #endif /* _PROTO_BDB_H */