summaryrefslogtreecommitdiff
path: root/source3/winbindd/idmap_tdb.c
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2010-06-17 07:56:46 +0200
committerMichael Adam <obnox@samba.org>2010-08-14 02:10:49 +0200
commit53856fc8b0cdbb01eb0b639800be3ec1812aae41 (patch)
tree33e259da3f04db601691ae8f28a69721d9b57ed9 /source3/winbindd/idmap_tdb.c
parent384e35f8a754feb601fdd9d032c3aad121e0fbc3 (diff)
downloadsamba-53856fc8b0cdbb01eb0b639800be3ec1812aae41.tar.gz
samba-53856fc8b0cdbb01eb0b639800be3ec1812aae41.tar.bz2
samba-53856fc8b0cdbb01eb0b639800be3ec1812aae41.zip
s3:idmap_tdb: rename idmap_tdb_alloc_init->idmap_tdb_init_hwm and use db from idmap_tdb_context
instead of the special idmap_alloc_db
Diffstat (limited to 'source3/winbindd/idmap_tdb.c')
-rw-r--r--source3/winbindd/idmap_tdb.c37
1 files changed, 13 insertions, 24 deletions
diff --git a/source3/winbindd/idmap_tdb.c b/source3/winbindd/idmap_tdb.c
index cb9e38ed90..b4afa6d719 100644
--- a/source3/winbindd/idmap_tdb.c
+++ b/source3/winbindd/idmap_tdb.c
@@ -329,29 +329,24 @@ static struct db_context *idmap_alloc_db;
Initialise idmap alloc database.
**********************************/
-static NTSTATUS idmap_tdb_alloc_init( const char *params )
+static NTSTATUS idmap_tdb_init_hwm(struct idmap_domain *dom)
{
int ret;
- NTSTATUS status;
uint32_t low_uid;
uint32_t low_gid;
bool update_uid = false;
bool update_gid = false;
+ struct idmap_tdb_context *ctx;
- status = idmap_tdb_open_db(NULL, true, &idmap_alloc_db);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, ("idmap will be unable to map foreign SIDs: %s\n",
- nt_errstr(status)));
- return status;
- }
+ ctx = talloc_get_type(dom->private_data, struct idmap_tdb_context);
- low_uid = dbwrap_fetch_int32(idmap_alloc_db, HWM_USER);
- if (low_uid == -1 || low_uid < idmap_tdb_state.low_uid) {
+ low_uid = dbwrap_fetch_int32(ctx->db, HWM_USER);
+ if (low_uid == -1 || low_uid < dom->low_id) {
update_uid = true;
}
- low_gid = dbwrap_fetch_int32(idmap_alloc_db, HWM_GROUP);
- if (low_gid == -1 || low_gid < idmap_tdb_state.low_gid) {
+ low_gid = dbwrap_fetch_int32(ctx->db, HWM_GROUP);
+ if (low_gid == -1 || low_gid < dom->low_id) {
update_gid = true;
}
@@ -359,18 +354,15 @@ static NTSTATUS idmap_tdb_alloc_init( const char *params )
return NT_STATUS_OK;
}
- if (idmap_alloc_db->transaction_start(idmap_alloc_db) != 0) {
- TALLOC_FREE(idmap_alloc_db);
+ if (ctx->db->transaction_start(ctx->db) != 0) {
DEBUG(0, ("Unable to start upgrade transaction!\n"));
return NT_STATUS_INTERNAL_DB_ERROR;
}
if (update_uid) {
- ret = dbwrap_store_int32(idmap_alloc_db, HWM_USER,
- idmap_tdb_state.low_uid);
+ ret = dbwrap_store_int32(ctx->db, HWM_USER, dom->low_id);
if (ret == -1) {
- idmap_alloc_db->transaction_cancel(idmap_alloc_db);
- TALLOC_FREE(idmap_alloc_db);
+ ctx->db->transaction_cancel(ctx->db);
DEBUG(0, ("Unable to initialise user hwm in idmap "
"database\n"));
return NT_STATUS_INTERNAL_DB_ERROR;
@@ -378,19 +370,16 @@ static NTSTATUS idmap_tdb_alloc_init( const char *params )
}
if (update_gid) {
- ret = dbwrap_store_int32(idmap_alloc_db, HWM_GROUP,
- idmap_tdb_state.low_gid);
+ ret = dbwrap_store_int32(ctx->db, HWM_GROUP, dom->low_id);
if (ret == -1) {
- idmap_alloc_db->transaction_cancel(idmap_alloc_db);
- TALLOC_FREE(idmap_alloc_db);
+ ctx->db->transaction_cancel(ctx->db);
DEBUG(0, ("Unable to initialise group hwm in idmap "
"database\n"));
return NT_STATUS_INTERNAL_DB_ERROR;
}
}
- if (idmap_alloc_db->transaction_commit(idmap_alloc_db) != 0) {
- TALLOC_FREE(idmap_alloc_db);
+ if (ctx->db->transaction_commit(ctx->db) != 0) {
DEBUG(0, ("Unable to commit upgrade transaction!\n"));
return NT_STATUS_INTERNAL_DB_ERROR;
}