diff options
author | Günther Deschner <gd@samba.org> | 2013-09-06 17:44:49 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2013-09-18 10:41:23 +0200 |
commit | f78228d5c2a91eb3586b3c70985a68b8d3bf6102 (patch) | |
tree | 1491aa7c679d9e30672883e3bbb86334ff885b92 | |
parent | cf21806e325a22d227bfcd2ce4ce8ca95edeb643 (diff) | |
download | samba-f78228d5c2a91eb3586b3c70985a68b8d3bf6102.tar.gz |
s3-serverid: add a readonly variant of the serverid init code.
Guenther
Signed-off-by: Günther Deschner <gd@samba.org>
(cherry picked from commit 11d5d3d49ecec0d2ae924ff843e97cc39fa64a16)
-rw-r--r-- | source3/include/serverid.h | 2 | ||||
-rw-r--r-- | source3/lib/serverid.c | 20 |
2 files changed, 18 insertions, 4 deletions
diff --git a/source3/include/serverid.h b/source3/include/serverid.h index 435c88b892d..56b72374c4e 100644 --- a/source3/include/serverid.h +++ b/source3/include/serverid.h @@ -73,4 +73,6 @@ bool serverid_parent_init(TALLOC_CTX *mem_ctx); */ uint64_t serverid_get_random_unique_id(void); +bool serverid_init_readonly(TALLOC_CTX *mem_ctx); + #endif diff --git a/source3/lib/serverid.c b/source3/lib/serverid.c index 420633ff23e..9a0deb38edc 100644 --- a/source3/lib/serverid.c +++ b/source3/lib/serverid.c @@ -36,11 +36,12 @@ struct serverid_data { static struct db_context *db_ptr = NULL; -static struct db_context *serverid_init(TALLOC_CTX *mem_ctx) +static struct db_context *serverid_init(TALLOC_CTX *mem_ctx, + bool readonly) { db_ptr = db_open(mem_ctx, lock_path("serverid.tdb"), 0, TDB_DEFAULT|TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH, - O_RDWR | O_CREAT, + readonly ? O_RDONLY : O_RDWR | O_CREAT, 0644); return db_ptr; } @@ -53,7 +54,18 @@ bool serverid_parent_init(TALLOC_CTX *mem_ctx) * work. */ - if (serverid_init(mem_ctx) == NULL) { + if (serverid_init(mem_ctx, false) == NULL) { + DEBUG(1, ("could not open serverid.tdb: %s\n", + strerror(errno))); + return false; + } + + return true; +} + +bool serverid_init_readonly(TALLOC_CTX *mem_ctx) +{ + if (serverid_init(mem_ctx, true) == NULL) { DEBUG(1, ("could not open serverid.tdb: %s\n", strerror(errno))); return false; @@ -68,7 +80,7 @@ static struct db_context *serverid_db(void) return db_ptr; } - return serverid_init(NULL); + return serverid_init(NULL, false); } static void serverid_fill_key(const struct server_id *id, |