diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/torture/rpc/join.c | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/source4/torture/rpc/join.c b/source4/torture/rpc/join.c index 0cb0f09ad5..a2a30e285a 100644 --- a/source4/torture/rpc/join.c +++ b/source4/torture/rpc/join.c @@ -1,5 +1,6 @@ #include "includes.h" #include "libnet/libnet.h" +#include "libcli/libcli.h" #include "auth/credentials/credentials.h" #include "torture/rpc/rpc.h" @@ -8,9 +9,12 @@ BOOL torture_rpc_join(struct torture_context *torture) -{ +{ + NTSTATUS status; struct test_join *tj; struct cli_credentials *machine_account; + struct smbcli_state *cli; + const char *host = lp_parm_string(-1, "torture", "host"); /* Join domain as a member server. */ tj = torture_join_domain(TORTURE_NETBIOS_NAME, @@ -18,10 +22,21 @@ BOOL torture_rpc_join(struct torture_context *torture) &machine_account); if (!tj) { - DEBUG(0, ("%s failed to join domain\n", + DEBUG(0, ("%s failed to join domain as workstation\n", TORTURE_NETBIOS_NAME)); return False; } + + status = smbcli_full_connection(tj, &cli, host, + "IPC$", NULL, + machine_account, + NULL); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(0, ("%s failed to connect to IPC$ with workstation credentials\n", + TORTURE_NETBIOS_NAME)); + return False; + } + smbcli_tdis(cli); /* Leave domain. */ torture_leave_domain(tj); @@ -31,11 +46,23 @@ BOOL torture_rpc_join(struct torture_context *torture) ACB_SVRTRUST, &machine_account); if (!tj) { - DEBUG(0, ("%s failed to join domain\n", + DEBUG(0, ("%s failed to join domain as domain controller\n", TORTURE_NETBIOS_NAME)); return False; } + status = smbcli_full_connection(tj, &cli, host, + "IPC$", NULL, + machine_account, + NULL); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(0, ("%s failed to connect to IPC$ with workstation credentials\n", + TORTURE_NETBIOS_NAME)); + return False; + } + + smbcli_tdis(cli); + /* Leave domain. */ torture_leave_domain(tj); |