summaryrefslogtreecommitdiff
path: root/source4/torture/util_smb.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/torture/util_smb.c')
-rw-r--r--source4/torture/util_smb.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/source4/torture/util_smb.c b/source4/torture/util_smb.c
index a4e8e198bb..f292165a0c 100644
--- a/source4/torture/util_smb.c
+++ b/source4/torture/util_smb.c
@@ -512,11 +512,35 @@ _PUBLIC_ BOOL torture_open_connection(struct smbcli_state **c, int conn_index)
return torture_open_connection_share(NULL, c, host, share, NULL);
}
-_PUBLIC_ BOOL torture_open_connection_ev(struct smbcli_state **c,
+_PUBLIC_ BOOL torture_open_connection_ev(struct smbcli_state **c,
+ int conn_index,
struct event_context *ev)
{
const char *host = lp_parm_string(-1, "torture", "host");
const char *share = lp_parm_string(-1, "torture", "share");
+ char **unc_list = NULL;
+ int num_unc_names = 0;
+ const char *p;
+
+ p = lp_parm_string(-1, "torture", "unclist");
+ if (p) {
+ char *h, *s;
+ unc_list = file_lines_load(p, &num_unc_names, NULL);
+ if (!unc_list || num_unc_names <= 0) {
+ printf("Failed to load unc names list from '%s'\n", p);
+ exit(1);
+ }
+
+ if (!smbcli_parse_unc(unc_list[conn_index % num_unc_names],
+ NULL, &h, &s)) {
+ printf("Failed to parse UNC name %s\n",
+ unc_list[conn_index % num_unc_names]);
+ exit(1);
+ }
+ host = h;
+ share = s;
+ }
+
return torture_open_connection_share(NULL, c, host, share, ev);
}