svn commit: samba r23149 - in branches/SAMBA_4_0/source/winbind: .

abartlet at samba.org abartlet at samba.org
Sat May 26 00:25:24 GMT 2007


Author: abartlet
Date: 2007-05-26 00:25:22 +0000 (Sat, 26 May 2007)
New Revision: 23149

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23149

Log:
Fix up the trusted domain lookup code to use the new structures.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/winbind/wb_dom_info_trusted.c
   branches/SAMBA_4_0/source/winbind/wb_init_domain.c


Changeset:
Modified: branches/SAMBA_4_0/source/winbind/wb_dom_info_trusted.c
===================================================================
--- branches/SAMBA_4_0/source/winbind/wb_dom_info_trusted.c	2007-05-25 23:50:35 UTC (rev 23148)
+++ branches/SAMBA_4_0/source/winbind/wb_dom_info_trusted.c	2007-05-26 00:25:22 UTC (rev 23149)
@@ -27,6 +27,7 @@
 #include "winbind/wb_server.h"
 #include "smbd/service_task.h"
 #include "librpc/gen_ndr/ndr_netlogon_c.h"
+#include "libcli/libcli.h"
 
 struct trusted_dom_info_state {
 	struct composite_context *ctx;
@@ -55,12 +56,6 @@
 	result = composite_create(mem_ctx, service->task->event_ctx);
 	if (result == NULL) goto failed;
 
-composite_error(result, NT_STATUS_FOOBAR);
-return result;
-failed:
-return NULL;
-}
-#if 0
 	state = talloc(result, struct trusted_dom_info_state);
 	if (state == NULL) goto failed;
 	state->ctx = result;
@@ -101,14 +96,14 @@
 
 	state->d.in.server_unc =
 		talloc_asprintf(state, "\\\\%s",
-				state->my_domain->info->dc_name);
+				dcerpc_server_name(state->my_domain->netlogon_pipe));
 	if (composite_nomem(state->d.in.server_unc,
 			    state->ctx)) return;
 
 	state->d.in.domain_name = state->info->name;
 	state->d.in.domain_guid = NULL;
 	state->d.in.site_guid = NULL;
-	state->d.in.flags = 0x40000000;
+	state->d.in.flags = DS_RETURN_DNS_NAME;
 
 	req = dcerpc_netr_DsRGetDCName_send(state->my_domain->netlogon_pipe,
 					    state, &state->d);
@@ -142,16 +137,17 @@
 	}
 
 	/* Hey, that was easy! */
-
-	state->info->dc_name = talloc_steal(state->info,
+	state->info->num_dcs = 1;
+	state->info->dcs = talloc(state->info, struct nbt_dc_name);
+	state->info->dcs[0].name = talloc_steal(state->info,
 					    state->d.out.info->dc_unc);
-	if (*state->info->dc_name == '\\') state->info->dc_name++;
-	if (*state->info->dc_name == '\\') state->info->dc_name++;
+	if (*state->info->dcs[0].name == '\\') state->info->dcs[0].name++;
+	if (*state->info->dcs[0].name == '\\') state->info->dcs[0].name++;
 
-	state->info->dc_address = talloc_steal(state->info,
+	state->info->dcs[0].address = talloc_steal(state->info,
 					       state->d.out.info->dc_address);
-	if (*state->info->dc_address == '\\') state->info->dc_address++;
-	if (*state->info->dc_address == '\\') state->info->dc_address++;
+	if (*state->info->dcs[0].address == '\\') state->info->dcs[0].address++;
+	if (*state->info->dcs[0].address == '\\') state->info->dcs[0].address++;
 
 	state->info->dns_name = talloc_steal(state->info,
 					     state->d.out.info->domain_name);
@@ -187,13 +183,15 @@
 	state->ctx->status = werror_to_ntstatus(state->g.out.result);
 	if (!composite_is_ok(state->ctx)) return;
 
-	state->info->dc_name = talloc_steal(state->info,
+	/* Hey, that was easy! */
+	state->info->num_dcs = 1;
+	state->info->dcs = talloc(state->info, struct nbt_dc_name);
+	state->info->dcs[0].name = talloc_steal(state->info,
 					    state->g.out.dcname);
-
-	if (*state->info->dc_name == '\\') state->info->dc_name++;
-	if (*state->info->dc_name == '\\') state->info->dc_name++;
+	if (*state->info->dcs[0].name == '\\') state->info->dcs[0].name++;
+	if (*state->info->dcs[0].name == '\\') state->info->dcs[0].name++;
 	
-	make_nbt_name(&name, state->info->dc_name, 0x20);
+	make_nbt_name(&name, state->info->dcs[0].name, 0x20);
 	ctx = resolve_name_send(&name, state->service->task->event_ctx,
 				lp_name_resolve_order());
 
@@ -208,12 +206,11 @@
 				struct trusted_dom_info_state);
 
 	state->ctx->status = resolve_name_recv(ctx, state->info,
-					       &state->info->dc_address);
+					       &state->info->dcs[0].address);
 	if (!composite_is_ok(state->ctx)) return;
 
 	composite_done(state->ctx);
 }
-#endif
 
 NTSTATUS wb_trusted_dom_info_recv(struct composite_context *ctx,
 				  TALLOC_CTX *mem_ctx,

Modified: branches/SAMBA_4_0/source/winbind/wb_init_domain.c
===================================================================
--- branches/SAMBA_4_0/source/winbind/wb_init_domain.c	2007-05-25 23:50:35 UTC (rev 23148)
+++ branches/SAMBA_4_0/source/winbind/wb_init_domain.c	2007-05-26 00:25:22 UTC (rev 23149)
@@ -303,8 +303,8 @@
 				struct init_domain_state);
 
 	state->ctx->status = dcerpc_ndr_request_recv(req);
-	if (!(NT_STATUS_IS_OK(state->ctx->status)
-	      && NT_STATUS_IS_OK(state->lsa_openpolicy.out.result))) {
+	if ((!NT_STATUS_IS_OK(state->ctx->status)
+	      || !NT_STATUS_IS_OK(state->lsa_openpolicy.out.result))) {
 		if (retry_with_schannel(state, state->domain->lsa_binding, 
 					init_domain_recv_lsa_pipe)) {
 			return;



More information about the samba-cvs mailing list