svn commit: samba r9061 - in branches/SOC/SAMBA_4_0: . source/torture/rpc

brad at samba.org brad at samba.org
Thu Aug 4 16:17:37 GMT 2005


Author: brad
Date: 2005-08-04 16:17:36 +0000 (Thu, 04 Aug 2005)
New Revision: 9061

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

Log:
 r5249 at buttercup:  j0j0 | 2005-08-03 21:01:02 -0600
 Start using libnet_Join() for DC join.

Modified:
   branches/SOC/SAMBA_4_0/
   branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c


Changeset:

Property changes on: branches/SOC/SAMBA_4_0
___________________________________________________________________
Name: svk:merge
   - 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9033
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5246
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5244
   + 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/SAMBA_4_0:9033
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5249
d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5244

Modified: branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c
===================================================================
--- branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c	2005-08-04 16:11:26 UTC (rev 9060)
+++ branches/SOC/SAMBA_4_0/source/torture/rpc/dssync.c	2005-08-04 16:17:36 UTC (rev 9061)
@@ -22,6 +22,7 @@
 
 #include "includes.h"
 #include "lib/cmdline/popt_common.h"
+#include "libnet/libnet.h"
 #include "librpc/gen_ndr/ndr_drsuapi.h"
 #include "librpc/gen_ndr/ndr_samr.h"
 #include "libcli/ldap/ldap.h"
@@ -43,6 +44,7 @@
 	struct dcerpc_binding *drsuapi_binding;
 	struct ldb_context *ldb_ctx;
 	struct ldb_message *ldb_msg;
+	struct libnet_context *libnet_ctx;
 	const char *ldap_url;
 
 	const char *domain_dn;
@@ -141,32 +143,23 @@
 			"dn: %s\n"
 			"changetype: delete\n",
 			ctx->new_dc.dc_info2.ntds_dn);
-
-		ldb_req = ldb_ldif_read_string(ldb_ctx,&ldif); 
 		*/
 	
-	/* 
-I'm pretty sure this delete fails because dcerpc_drsuapi_DsAddEntry Fails DCERPC_FAULT_NDR 
-in test_CompleteJoin().
-
+		/* 
+		This delete fails because dcerpc_drsuapi_DsAddEntry Fails DCERPC_FAULT_NDR 
+		in test_CompleteJoin().
+		*/
 		printf("test_destroy_context(): deleting ntds_dn %s.\n",ctx->new_dc.dc_info2.ntds_dn);
 		rtn = ldb_delete(ctx->ldb_ctx,ctx->new_dc.dc_info2.ntds_dn);
 		if (rtn != 0) {
 			printf("test_destroy_context(): ldb_delete(ntds_dn) failed: %s.\n",
 				ldb_errstring(ctx->ldb_ctx));
+			/* I want ldb_delete(server_dn) to get called.
+			   I should just change the ordering or
+			   not have this return at all perhaps.
 			return;
+			*/
 		}
-	*/
-	
-
-		/* req = ldap_ldif2msg(ctx, ldif);
-		 req.messageid = ;
-		 req->type = LDAP_TAG_DelRequest;
-		 req->r.DelRequest.dn = ctx->new_dc.dc_info2.ntds_dn;
-		 req.num_controls = ;
-	 	 req.controls = ;
-		rtn = ldap_transaction(ctx->admin.ldap.conn, req);
-		*/
 	}
 
 	{
@@ -177,7 +170,6 @@
 			"dn: %s\n"
 			"changetype: delete\n",
 			ctx->new_dc.dc_info2.server_dn);
-		ldb_req = ldb_ldif_read_string(ldb_ctx,&ldif);
 		*/
 
 		printf("test_destroy_context(): deleting server_dn %s.\n",ctx->new_dc.dc_info2.server_dn);
@@ -312,7 +304,7 @@
 	ctx->schema_dn = talloc_asprintf(ctx, "CN=Schema,%s", ctx->config_dn);
 
 	ctx->new_dc.dc_info2.server_dn = talloc_asprintf(ctx,
-/*		"CN=%s,CN=Servers,CN=Standardname-des-ersten-Standorts,CN=Sites,CN=Configuration,%s", */
+		/*"CN=%s,CN=Servers,CN=Standardname-des-ersten-Standorts,CN=Sites,CN=Configuration,%s",*/
 		"CN=%s,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,%s",
 		TEST_MACHINE_NAME, ctx->domain_dn);
 
@@ -330,6 +322,8 @@
 	BOOL ret = True;
 	int rtn;
 	char *old_dn;	
+	struct libnet_Join libnet_r;
+
 	rtn = ldb_connect(ctx->ldb_ctx,ctx->ldap_url,0,NULL);
 	if (rtn != 0) {
 	 	printf("test_CompleteJoin(): ldb_connect() failed: %s.\n",
@@ -340,6 +334,8 @@
 	
 	/* userAccountControl: 532480 0x82000 
 	 * UF_SERVER_TRUST_ACCOUNT|UF_TRUSTED_FOR_DELEGATION	 
+	*/
+	/* 
 	ldif = talloc_asprintf(ctx,
 		"dn: %s\n"
 		"changetype: modify\n"
@@ -348,8 +344,6 @@
 		ctx->new_dc.dc_info2.computer_dn,
 		UF_SERVER_TRUST_ACCOUNT|UF_TRUSTED_FOR_DELEGATION);
 	*/
-/* = UF_SERVER_TRUST_ACCOUNT|UF_TRUSTED_FOR_DELEGATION;	*/
-
 	ctx->ldb_msg = ldb_msg_new(ctx);
 	ldb_msg_add_fmt(ctx->ldb_ctx,ctx->ldb_msg,"userAccountControl","%u",UF_SERVER_TRUST_ACCOUNT|UF_TRUSTED_FOR_DELEGATION);	
 	ctx->ldb_msg->dn = ctx->new_dc.dc_info2.computer_dn;
@@ -364,8 +358,6 @@
 	printf("ldb_modify() succeeded.\n");
 	ldb_msg_free(ctx->ldb_ctx,ctx->ldb_msg);
 
-	/* rtn = ldap_transaction(ctx->admin.ldap.conn, req); */
-
 	/* add entry CN=<NETBIOSNAME>,CN=Servers
 	 * objectClass: server
 	 * systemFlags: 50000000 0x2FAF080
@@ -381,7 +373,6 @@
 		ctx->new_dc.dc_info2.server_dn,
 		50000000,
 		ctx->new_dc.dc_info2.computer_dn);	
-	ldb_req = ldb_ldif_read_string(ldb_ctx,&ldif);	
 	*/
 
 	printf("dn: %s\nserverReference: %s.\n",ctx->new_dc.dc_info2.server_dn,ctx->new_dc.dc_info2.computer_dn);
@@ -401,12 +392,11 @@
 	}
 	printf("ldb_add() succeeded.\n");
 	ldb_msg_free(ctx->ldb_ctx,ctx->ldb_msg);
-	/* rtn = ldap_transaction(ctx->admin.ldap.conn, req); */
 
 	/* add entry CN=NTDS Settings
 	 * 
 	 */
-/*
+	/*
 	typedef [noprint] struct {
 		drsuapi_DsReplicaObjectListItem *next_object;
 		drsuapi_DsReplicaObject object;
@@ -469,7 +459,8 @@
 		uint32 unknown1;
 		drsuapi_DsReplicaAttributeCtr attribute_ctr;
 	} drsuapi_DsReplicaObject;
-*/	{
+	*/	
+	{
 		struct drsuapi_DsAddEntry r;
 		struct drsuapi_DsReplicaObject *object;
 		struct drsuapi_DsReplicaObjectIdentifier _identifier;
@@ -716,7 +707,32 @@
 		i++;
 
 		attribute_ctr->num_attributes		= i;
-
+		
+		
+		
+		printf("The libnet_Join struct has a domain_name element. I am going to assume it is my ldap base dn.\n");
+		printf("That said, my ldap base dn is: %s.\n",ctx->domain_dn);
+		/* ctx->domain_dn is the ldap dn.*/ 
+		libnet_r.in.domain_name = talloc_asprintf(ctx,"%s",ctx->domain_dn);
+		libnet_r.in.secure_channel_type = SEC_CHAN_BDC;
+ 
+		printf("attempting a DC join with libnet_Join()\n");
+		/*
+		we get the following error when libnet_Join gets reached,
+		probably because we haven't provisioned these ldb's!
+		Unable to open tdb '/usr/local/samba/private/secrets.ldb'
+		Failed to connect to '/usr/local/samba/private/secrets.ldb'
+		*/
+		status = libnet_Join(ctx->libnet_ctx,ctx,&libnet_r);
+		if (!NT_STATUS_IS_OK(status)) {
+			const char *errstr = nt_errstr(status);
+			if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+				errstr = dcerpc_errstr(ctx, ctx->admin.drsuapi.pipe->last_fault_code);
+			}
+			printf("libnet_Join() failed - %s\n", errstr);
+			ret = False;
+		}
+		/*
 		status = dcerpc_drsuapi_DsAddEntry(ctx->admin.drsuapi.pipe, ctx, &r);
 		if (!NT_STATUS_IS_OK(status)) {
 			const char *errstr = nt_errstr(status);
@@ -729,11 +745,12 @@
 			printf("DsAddEntry failed - %s\n", win_errstr(r.out.result));
 			ret = False;
 		}
+		*/
 	}
 
 {
 #include <unistd.h>
-/*	int sec = 5000;*/
+	/*int sec = 5000;*/
 	int sec = 10;
 	printf("Sleep for %d secs\n", sec);
 	sleep(sec);
@@ -742,7 +759,7 @@
 	/* modrdn to OU=Domain Controllers,...
 	*/
 
-/*	ldif = talloc_asprintf(ctx,
+	/*ldif = talloc_asprintf(ctx,
 		"dn: %s\n"
 		"changetype: modrdn\n"
 		"newrdn: CN=%s\n"
@@ -751,22 +768,8 @@
 		ctx->new_dc.dc_info2.computer_dn,
 		TEST_MACHINE_NAME,
 		ctx->domain_dn);
-	req = ldap_ldif2msg(ctx, ldif);
-	ldb_req = ldb_ldif_read_string(ldb_ctx,&ldif);
-	rtn = ldb_modify(ldb_ctx,ldb_req->msg);
-	if (rtn != 0) {
-		printf("test_CompleteJoin(): ldb_modify() failed: %s.\n",
-		 ldb_errstring(ldb_ctx));
-		return False;
-	}
-*/
-/*	rtn = ldap_transaction(ctx->admin.ldap.conn, req);	*/
+	*/
 
-/*
-		ctx->new_dc.dc_info2.computer_dn,
-		TEST_MACHINE_NAME,
-		ctx->domain_dn);
-*/	
 	old_dn = talloc_asprintf(ctx,
 			"%s",
 			ctx->new_dc.dc_info2.computer_dn);
@@ -802,7 +805,7 @@
 	mem_ctx = talloc_init("torture_rpc_dssync");
 	ctx = test_create_context(mem_ctx);
 	ctx->ldb_ctx = ldb_init(mem_ctx);
-	
+	ctx->libnet_ctx = libnet_context_init(mem_ctx);
 	rtn = ldb_connect(ctx->ldb_ctx,ctx->ldap_url,0,NULL);
 	printf("Connected to %s.\n",ctx->ldap_url);
 	



More information about the samba-cvs mailing list