summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2013-09-06 17:44:49 +0200
committerKarolin Seeger <kseeger@samba.org>2013-09-18 10:41:23 +0200
commitf78228d5c2a91eb3586b3c70985a68b8d3bf6102 (patch)
tree1491aa7c679d9e30672883e3bbb86334ff885b92
parentcf21806e325a22d227bfcd2ce4ce8ca95edeb643 (diff)
downloadsamba-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.h2
-rw-r--r--source3/lib/serverid.c20
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,