]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/proto-bdb.h
ITS#4088 proposed fix
[openldap] / servers / slapd / back-bdb / proto-bdb.h
index 7d3d49b7d335a6b63ded2dc6d14338ee21733d8f..232289f7c924c26153a546b3e1f31da081757477 100644 (file)
@@ -217,6 +217,8 @@ BI_entry_get_rw bdb_entry_get;
 #define bdb_idl_cache_get                      BDB_SYMBOL(idl_cache_get)
 #define bdb_idl_cache_put                      BDB_SYMBOL(idl_cache_put)
 #define bdb_idl_cache_del                      BDB_SYMBOL(idl_cache_del)
+#define bdb_idl_cache_add_id           BDB_SYMBOL(idl_cache_add_id)
+#define bdb_idl_cache_del_id           BDB_SYMBOL(idl_cache_del_id)
 
 int bdb_idl_cache_get(
        struct bdb_info *bdb,
@@ -238,6 +240,20 @@ bdb_idl_cache_del(
        DB              *db,
        DBT             *key );
 
+void
+bdb_idl_cache_add_id(
+       struct bdb_info *bdb,
+       DB              *db,
+       DBT             *key,
+       ID              id );
+
+void
+bdb_idl_cache_del_id(
+       struct bdb_info *bdb,
+       DB              *db,
+       DBT             *key,
+       ID              id );
+
 #define bdb_idl_first                          BDB_SYMBOL(idl_first)
 #define bdb_idl_next                           BDB_SYMBOL(idl_next)
 #define bdb_idl_search                         BDB_SYMBOL(idl_search)
@@ -292,7 +308,7 @@ bdb_idl_union(
 ID bdb_idl_first( ID *ids, ID *cursor );
 ID bdb_idl_next( ID *ids, ID *cursor );
 
-void bdb_idl_sort( ID *ids );
+void bdb_idl_sort( ID *ids, ID *tmp );
 int bdb_idl_append( ID *a, ID *b );
 int bdb_idl_append_one( ID *ids, ID id );
 
@@ -413,7 +429,7 @@ void bdb_cache_return_entry_rw( DB_ENV *env, Cache *cache, Entry *e,
 #if 0
 void bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw );
 #else
-#define        bdb_unlocked_cache_return_entry_rw( a, b, c )
+#define        bdb_unlocked_cache_return_entry_rw( a, b, c )   ((void)0)
 #endif
 #define bdb_unlocked_cache_return_entry_r( c, e ) \
        bdb_unlocked_cache_return_entry_rw((c), (e), 0)
@@ -427,6 +443,7 @@ void bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw );
 #define bdb_cache_find_id                      BDB_SYMBOL(cache_find_id)
 #define bdb_cache_find_info                    BDB_SYMBOL(cache_find_info)
 #define bdb_cache_find_ndn                     BDB_SYMBOL(cache_find_ndn)
+#define bdb_cache_find_parent          BDB_SYMBOL(cache_find_parent)
 #define bdb_cache_modify                       BDB_SYMBOL(cache_modify)
 #define bdb_cache_modrdn                       BDB_SYMBOL(cache_modrdn)
 #define bdb_cache_release_all          BDB_SYMBOL(cache_release_all)
@@ -445,11 +462,11 @@ int bdb_cache_add(
        u_int32_t locker
 );
 int bdb_cache_modrdn(
+       struct bdb_info *bdb,
        Entry   *e,
        struct berval *nrdn,
        Entry   *new,
        EntryInfo *ein,
-       DB_ENV *env,
        u_int32_t locker,
        DB_LOCK *lock
 );
@@ -479,6 +496,13 @@ int bdb_cache_find_id(
        u_int32_t       locker,
        DB_LOCK         *lock
 );
+int
+bdb_cache_find_parent(
+       Operation *op,
+       DB_TXN *txn,
+       ID id,
+       EntryInfo **res
+);
 int bdb_cache_delete(
        Cache   *cache,
        Entry   *e,
@@ -522,9 +546,9 @@ int bdb_cache_entry_db_unlock(
 #ifdef BDB_REUSE_LOCKERS
 
 #define bdb_locker_id                          BDB_SYMBOL(locker_id)
-int bdb_locker_id( Operation *op, DB_ENV *env, int *locker );
+int bdb_locker_id( Operation *op, DB_ENV *env, u_int32_t *locker );
 
-#define        LOCK_ID_FREE(env, locker)
+#define        LOCK_ID_FREE(env, locker)       ((void)0)
 #define        LOCK_ID(env, locker)    bdb_locker_id(op, env, locker)
 
 #else