summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/lib/dbwrap/dbwrap.c6
-rw-r--r--source3/lib/dbwrap/dbwrap.h1
-rw-r--r--source3/lib/dbwrap/dbwrap_private.h1
-rw-r--r--source3/lib/dbwrap/dbwrap_tdb.c2
4 files changed, 10 insertions, 0 deletions
diff --git a/source3/lib/dbwrap/dbwrap.c b/source3/lib/dbwrap/dbwrap.c
index 82b1c54ac4..21d46ea895 100644
--- a/source3/lib/dbwrap/dbwrap.c
+++ b/source3/lib/dbwrap/dbwrap.c
@@ -161,6 +161,7 @@ static struct db_record *dbwrap_fetch_locked_internal(
return NULL;
}
(void)talloc_steal(rec, lock_order);
+ rec->db = db;
TALLOC_FREE(frame);
return rec;
}
@@ -183,6 +184,11 @@ struct db_record *dbwrap_try_fetch_locked(struct db_context *db,
? db->try_fetch_locked : db->fetch_locked);
}
+struct db_context *dbwrap_record_get_db(struct db_record *rec)
+{
+ return rec->db;
+}
+
struct dbwrap_fetch_state {
TALLOC_CTX *mem_ctx;
TDB_DATA data;
diff --git a/source3/lib/dbwrap/dbwrap.h b/source3/lib/dbwrap/dbwrap.h
index 6fd5999a9d..ff41e647ef 100644
--- a/source3/lib/dbwrap/dbwrap.h
+++ b/source3/lib/dbwrap/dbwrap.h
@@ -37,6 +37,7 @@ struct db_record *dbwrap_fetch_locked(struct db_context *db,
struct db_record *dbwrap_try_fetch_locked(struct db_context *db,
TALLOC_CTX *mem_ctx,
TDB_DATA key);
+struct db_context *dbwrap_record_get_db(struct db_record *rec);
NTSTATUS dbwrap_delete(struct db_context *db, TDB_DATA key);
NTSTATUS dbwrap_store(struct db_context *db, TDB_DATA key,
diff --git a/source3/lib/dbwrap/dbwrap_private.h b/source3/lib/dbwrap/dbwrap_private.h
index b24e3b370c..28da1add53 100644
--- a/source3/lib/dbwrap/dbwrap_private.h
+++ b/source3/lib/dbwrap/dbwrap_private.h
@@ -26,6 +26,7 @@
#include "dbwrap/dbwrap_open.h"
struct db_record {
+ struct db_context *db;
TDB_DATA key, value;
NTSTATUS (*store)(struct db_record *rec, TDB_DATA data, int flag);
NTSTATUS (*delete_rec)(struct db_record *rec);
diff --git a/source3/lib/dbwrap/dbwrap_tdb.c b/source3/lib/dbwrap/dbwrap_tdb.c
index e1b26e4e09..9450be0e65 100644
--- a/source3/lib/dbwrap/dbwrap_tdb.c
+++ b/source3/lib/dbwrap/dbwrap_tdb.c
@@ -276,6 +276,7 @@ static int db_tdb_traverse_func(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf,
rec.store = db_tdb_store;
rec.delete_rec = db_tdb_delete;
rec.private_data = ctx->db->private_data;
+ rec.db = ctx->db;
return ctx->f(&rec, ctx->private_data);
}
@@ -316,6 +317,7 @@ static int db_tdb_traverse_read_func(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA d
rec.store = db_tdb_store_deny;
rec.delete_rec = db_tdb_delete_deny;
rec.private_data = ctx->db->private_data;
+ rec.db = ctx->db;
return ctx->f(&rec, ctx->private_data);
}