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

metze at samba.org metze at samba.org
Wed Sep 26 04:53:21 GMT 2007


Author: metze
Date: 2007-09-26 04:53:16 +0000 (Wed, 26 Sep 2007)
New Revision: 25349

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

Log:
add WINBIND-STRUCT-DSGETDCNAME test

metze
Modified:
   branches/SAMBA_4_0/source/torture/winbind/struct_based.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/winbind/struct_based.c
===================================================================
--- branches/SAMBA_4_0/source/torture/winbind/struct_based.c	2007-09-26 03:08:40 UTC (rev 25348)
+++ branches/SAMBA_4_0/source/torture/winbind/struct_based.c	2007-09-26 04:53:16 UTC (rev 25349)
@@ -23,6 +23,7 @@
 #include "torture/winbind/proto.h"
 #include "nsswitch/winbind_client.h"
 #include "libcli/security/security.h"
+#include "librpc/gen_ndr/netlogon.h"
 #include "param/param.h"
 #include "auth/pam_errors.h"
 
@@ -490,6 +491,70 @@
 	return true;
 }
 
+static bool torture_winbind_struct_dsgetdcname(struct torture_context *torture)
+{
+	bool ok;
+	bool strict = torture_setting_bool(torture, "strict mode", false);
+	struct torture_trust_domain *listd = NULL;
+	uint32_t i;
+	uint32_t count = 0;
+
+	torture_comment(torture, "Running WINBINDD_DSGETDCNAME (struct based)\n");
+
+	ok = get_trusted_domains(torture, &listd);
+	torture_assert(torture, ok, "failed to get trust list");
+
+	for (i=0; listd[i].netbios_name; i++) {
+		struct winbindd_request req;
+		struct winbindd_response rep;
+
+		ZERO_STRUCT(req);
+		ZERO_STRUCT(rep);
+
+		if (strlen(listd[i].dns_name) == 0) continue;
+
+		/*
+		 * TODO: remove this and let winbindd give no dns name
+		 *       for NT4 domains
+		 */
+		if (strcmp(listd[i].dns_name, listd[i].netbios_name) == 0) {
+			continue;
+		}
+
+		fstrcpy(req.domain_name, listd[i].dns_name);
+
+		/* TODO: test more flag combinations */
+		req.flags = DS_DIRECTORY_SERVICE_REQUIRED;
+
+		ok = true;
+		DO_STRUCT_REQ_REP_EXT(WINBINDD_DSGETDCNAME, &req, &rep,
+				      NSS_STATUS_SUCCESS,
+				      strict, ok = false,
+				      talloc_asprintf(torture, "DOMAIN '%s'",
+						      req.domain_name));
+		if (!ok) continue;
+
+		/* TODO: check rep.data.dc_name; */
+		torture_comment(torture, "DOMAIN '%s' => DCNAME '%s'\n",
+				req.domain_name, rep.data.dc_name);
+
+		count++;
+	}
+
+	if (count == 0) {
+		torture_warning(torture, "WINBINDD_DSGETDCNAME"
+				" was not tested with %d non-AD domains",
+				i);
+	}
+
+	if (strict) {
+		torture_assert(torture, count > 0,
+			       "WiNBINDD_DSGETDCNAME was not tested");
+	}
+
+	return true;
+}
+
 struct torture_suite *torture_winbind_struct_init(void)
 {
 	struct torture_suite *suite = torture_suite_create(talloc_autofree_context(), "STRUCT");
@@ -504,6 +569,7 @@
 	torture_suite_add_simple_test(suite, "LIST_TRUSTDOM", torture_winbind_struct_list_trustdom);
 	torture_suite_add_simple_test(suite, "DOMAIN_INFO", torture_winbind_struct_domain_info);
 	torture_suite_add_simple_test(suite, "GETDCNAME", torture_winbind_struct_getdcname);
+	torture_suite_add_simple_test(suite, "DSGETDCNAME", torture_winbind_struct_dsgetdcname);
 
 	suite->description = talloc_strdup(suite, "WINBIND - struct based protocol tests");
 



More information about the samba-cvs mailing list