summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2008-04-11 19:15:24 +1000
committerAndrew Bartlett <abartlet@samba.org>2008-04-11 19:15:24 +1000
commita1a3089199d9ad523e63148a5a2afcca8db39bdf (patch)
tree1aef2b967bff0df2db08308e4decc382e58aeb24
parent393007315d56d72cd4ebccc204da703b27eb968b (diff)
downloadsamba-a1a3089199d9ad523e63148a5a2afcca8db39bdf.tar.gz
samba-a1a3089199d9ad523e63148a5a2afcca8db39bdf.tar.bz2
samba-a1a3089199d9ad523e63148a5a2afcca8db39bdf.zip
Use the python-provided ldb and lp_ctx pointers in libnet_vampire.c
By using the already open smb.conf and sam.ldb, we not only avoid overhead, but also remove the risk we could touch a different database. Andrew Bartlett (This used to be commit 38634183a074556c8dfdcb6affc60f4bcc15a3f0)
-rw-r--r--source4/libnet/libnet_vampire.c35
1 files changed, 6 insertions, 29 deletions
diff --git a/source4/libnet/libnet_vampire.c b/source4/libnet/libnet_vampire.c
index 476b97954f..9d32088fe6 100644
--- a/source4/libnet/libnet_vampire.c
+++ b/source4/libnet/libnet_vampire.c
@@ -77,14 +77,8 @@ static NTSTATUS vampire_prepare_db(void *private_data,
{
struct vampire_state *s = talloc_get_type(private_data, struct vampire_state);
struct provision_settings settings;
+ struct provision_result result;
NTSTATUS status;
- bool ok;
- struct loadparm_context *lp_ctx = loadparm_init(s);
- char *smbconf;
-
- if (!lp_ctx) {
- return NT_STATUS_NO_MEMORY;
- }
settings.site_name = p->dest_dsa->site_name;
settings.root_dn_str = p->forest->root_dn_str;
@@ -98,31 +92,14 @@ static NTSTATUS vampire_prepare_db(void *private_data,
settings.machine_password = generate_random_str(s, 16);
settings.targetdir = s->targetdir;
- status = provision_bare(s, s->lp_ctx, &settings);
-
- smbconf = talloc_asprintf(lp_ctx, "%s/%s", s->targetdir, "/etc/smb.conf");
+ status = provision_bare(s, s->lp_ctx, &settings, &result);
- ok = lp_load(lp_ctx, smbconf);
- if (!ok) {
- DEBUG(0,("Failed load freshly generated smb.conf '%s'\n", smbconf));
- return NT_STATUS_INVALID_PARAMETER;
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
}
- s->ldb = samdb_connect(s, lp_ctx,
- system_session(s, lp_ctx));
- if (!s->ldb) {
- DEBUG(0,("Failed to open '%s'\n", lp_sam_url(lp_ctx)));
- return NT_STATUS_INTERNAL_DB_ERROR;
- }
-
- /* We must set these up to ensure the replMetaData is written correctly,
- before our NTDS Settings entry is replicated */
- ok = samdb_set_ntds_invocation_id(s->ldb, &p->dest_dsa->invocation_id);
- if (!ok) {
- DEBUG(0,("Failed to set cached ntds invocationId\n"));
- return NT_STATUS_FOOBAR;
- }
- s->lp_ctx = lp_ctx;
+ s->ldb = result.samdb;
+ s->lp_ctx = result.lp_ctx;
return NT_STATUS_OK;