summaryrefslogtreecommitdiff
path: root/lib/dbwrap
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2012-06-22 15:07:44 +0930
committerRusty Russell <rusty@rustcorp.com.au>2012-06-22 07:35:17 +0200
commit945473aac0abffd8509bbeef3ed5a32737b7df51 (patch)
tree1a01de9fd747aade6fbcc3ae00545f3be7bbc415 /lib/dbwrap
parente92cb556fdb5faee71f614475aaade846dcd0aed (diff)
downloadsamba-945473aac0abffd8509bbeef3ed5a32737b7df51.tar.gz
samba-945473aac0abffd8509bbeef3ed5a32737b7df51.tar.bz2
samba-945473aac0abffd8509bbeef3ed5a32737b7df51.zip
dbwrap: dbwrap_hash_size().
Implemented for ntdb and tdb; falls back to 0 for others. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'lib/dbwrap')
-rw-r--r--lib/dbwrap/dbwrap.c5
-rw-r--r--lib/dbwrap/dbwrap.h2
-rw-r--r--lib/dbwrap/dbwrap_cache.c1
-rw-r--r--lib/dbwrap/dbwrap_file.c1
-rw-r--r--lib/dbwrap/dbwrap_private.h1
-rw-r--r--lib/dbwrap/dbwrap_rbt.c1
-rw-r--r--lib/dbwrap/dbwrap_tdb.c1
7 files changed, 12 insertions, 0 deletions
diff --git a/lib/dbwrap/dbwrap.c b/lib/dbwrap/dbwrap.c
index f898819b9d..4c0160a474 100644
--- a/lib/dbwrap/dbwrap.c
+++ b/lib/dbwrap/dbwrap.c
@@ -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) {
diff --git a/lib/dbwrap/dbwrap.h b/lib/dbwrap/dbwrap.h
index 796475d3e2..30c24fedb3 100644
--- a/lib/dbwrap/dbwrap.h
+++ b/lib/dbwrap/dbwrap.h
@@ -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);
diff --git a/lib/dbwrap/dbwrap_cache.c b/lib/dbwrap/dbwrap_cache.c
index 1badeb13b9..f2a9c5fb0b 100644
--- a/lib/dbwrap/dbwrap_cache.c
+++ b/lib/dbwrap/dbwrap_cache.c
@@ -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;
diff --git a/lib/dbwrap/dbwrap_file.c b/lib/dbwrap/dbwrap_file.c
index 4499021c57..54ed320864 100644
--- a/lib/dbwrap/dbwrap_file.c
+++ b/lib/dbwrap/dbwrap_file.c
@@ -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))) {
diff --git a/lib/dbwrap/dbwrap_private.h b/lib/dbwrap/dbwrap_private.h
index f5b2140866..d49a568cd0 100644
--- a/lib/dbwrap/dbwrap_private.h
+++ b/lib/dbwrap/dbwrap_private.h
@@ -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;
diff --git a/lib/dbwrap/dbwrap_rbt.c b/lib/dbwrap/dbwrap_rbt.c
index 67794e6b96..afe9974cb5 100644
--- a/lib/dbwrap/dbwrap_rbt.c
+++ b/lib/dbwrap/dbwrap_rbt.c
@@ -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;
diff --git a/lib/dbwrap/dbwrap_tdb.c b/lib/dbwrap/dbwrap_tdb.c
index a6176b75c4..80d41b4ebb 100644
--- a/lib/dbwrap/dbwrap_tdb.c
+++ b/lib/dbwrap/dbwrap_tdb.c
@@ -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: