dbwrap: dbwrap_hash_size().
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 22 Jun 2012 05:37:44 +0000 (15:07 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 22 Jun 2012 05:35:17 +0000 (07:35 +0200)
Implemented for ntdb and tdb; falls back to 0 for others.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
lib/dbwrap/dbwrap.c
lib/dbwrap/dbwrap.h
lib/dbwrap/dbwrap_cache.c
lib/dbwrap/dbwrap_file.c
lib/dbwrap/dbwrap_private.h
lib/dbwrap/dbwrap_rbt.c
lib/dbwrap/dbwrap_tdb.c

index f898819b9dbec00b89d8ae5313eaa6e43cdb0372..4c0160a4740cfe931674d6f49879f3d59e2b9c61 100644 (file)
@@ -407,6 +407,11 @@ int dbwrap_wipe(struct db_context *db)
        return db->wipe(db);
 }
 
+int dbwrap_hash_size(struct db_context *db)
+{
+       return db->hash_size;
+}
+
 int dbwrap_check(struct db_context *db)
 {
        if (db->check == NULL) {
index 796475d3e2c2bcb1fc7c988b1357002c16414522..30c24fedb3c85c7b158563532f2eb0b8cfbb885b 100644 (file)
@@ -76,6 +76,8 @@ NTSTATUS dbwrap_parse_record(struct db_context *db, TDB_DATA key,
 int dbwrap_wipe(struct db_context *db);
 int dbwrap_check(struct db_context *db);
 int dbwrap_get_seqnum(struct db_context *db);
+/* Returns 0 if unknown. */
+int dbwrap_hash_size(struct db_context *db);
 int dbwrap_transaction_start(struct db_context *db);
 NTSTATUS dbwrap_transaction_start_nonblock(struct db_context *db);
 int dbwrap_transaction_commit(struct db_context *db);
index 1badeb13b91659575df81f9d8f9f512202e7f66e..f2a9c5fb0baebcedcef8fa6453bc440704d4b7ae 100644 (file)
@@ -210,6 +210,7 @@ struct db_context *db_open_cache(TALLOC_CTX *mem_ctx,
        db->exists = dbwrap_cache_exists;
        db->id = dbwrap_cache_id;
        db->name = dbwrap_name(ctx->backing);
+       db->hash_size = dbwrap_hash_size(ctx->backing);
        db->stored_callback = NULL;
        db->wipe = NULL;
        db->lock_order = 0;
index 4499021c578e86ec41fdcdefb04ea1dd28d6e406..54ed3208642e2782a6ac897abfe1b87b2691a32c 100644 (file)
@@ -373,6 +373,7 @@ struct db_context *db_open_file(TALLOC_CTX *mem_ctx,
        result->traverse_read = db_file_traverse;
        result->persistent = ((tdb_flags & TDB_CLEAR_IF_FIRST) == 0);
        result->name = name;
+       result->hash_size = 0;
 
        ctx->locked_record = NULL;
        if (!(ctx->dirname = talloc_strdup(ctx, name))) {
index f5b214086668aa55dbbbb611e67fce63b82314e3..d49a568cd0ecfbfd8760027c1216daa0236e9ca5 100644 (file)
@@ -64,6 +64,7 @@ struct db_context {
        int (*check)(struct db_context *db);
        void (*id)(struct db_context *db, const uint8_t **id, size_t *idlen);
        const char *name;
+       int hash_size;
        void *private_data;
        enum dbwrap_lock_order lock_order;
        bool persistent;
index 67794e6b96e947217d7b50a93c4ab63c184f54ca..afe9974cb5c22fdc6ea7ad306d8968ea07c6bfb8 100644 (file)
@@ -507,6 +507,7 @@ struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx)
        result->lock_order = 0;
        result->id = db_rbt_id;
        result->name = "dbwrap rbt";
+       result->hash_size = 0;
        result->stored_callback = NULL;
 
        return result;
index a6176b75c4712a7bbbc8ab11154db03dc05a1fa6..80d41b4ebb8d0024b9fba62f275e0ff4bba9d08c 100644 (file)
@@ -474,6 +474,7 @@ struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
        result->check = db_tdb_check;
        result->stored_callback = NULL;
        result->name = tdb_name(db_tdb->wtdb->tdb);
+       result->hash_size = hash_size;
        return result;
 
  fail: