summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/torture/winbind/struct_based.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/source4/torture/winbind/struct_based.c b/source4/torture/winbind/struct_based.c
index 5b6ce059a1..9cc7432816 100644
--- a/source4/torture/winbind/struct_based.c
+++ b/source4/torture/winbind/struct_based.c
@@ -219,21 +219,37 @@ static bool torture_winbind_struct_list_trustdom(struct torture_context *torture
static bool torture_winbind_struct_getdcname(struct torture_context *torture)
{
- struct winbindd_request req;
- struct winbindd_response rep;
+ bool ok;
+ bool strict = torture_setting_bool(torture, "strict mode", false);
+ struct torture_trust_domain *listd = NULL;
+ uint32_t i;
torture_comment(torture, "Running WINBINDD_GETDCNAME (struct based)\n");
- ZERO_STRUCT(req);
- ZERO_STRUCT(rep);
+ ok = get_trusted_domains(torture, &listd);
+ torture_assert(torture, ok, "failed to get trust list");
- fstrcpy(req.domain_name, lp_workgroup());
+ for (i=0; listd[i].netbios_name; i++) {
+ struct winbindd_request req;
+ struct winbindd_response rep;
- DO_STRUCT_REQ_REP(WINBINDD_GETDCNAME, &req, &rep);
+ ZERO_STRUCT(req);
+ ZERO_STRUCT(rep);
- /*
- * TODO: test all trusted domains
- */
+ fstrcpy(req.domain_name, listd[i].netbios_name);
+
+ ok = true;
+ DO_STRUCT_REQ_REP_EXT(WINBINDD_GETDCNAME, &req, &rep,
+ NSS_STATUS_SUCCESS,
+ (i <2 || 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);
+ }
return true;
}