• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src/router/samba-3.5.8/source4/torture/rpc/
1#include "includes.h"
2#include "libnet/libnet.h"
3#include "libcli/libcli.h"
4
5#include "auth/credentials/credentials.h"
6#include "torture/rpc/rpc.h"
7
8#include "libcli/resolve/resolve.h"
9#include "param/param.h"
10
11#define TORTURE_NETBIOS_NAME "smbtorturejoin"
12
13
14bool torture_rpc_join(struct torture_context *torture)
15{
16	NTSTATUS status;
17	struct test_join *tj;
18	struct cli_credentials *machine_account;
19	struct smbcli_state *cli;
20	const char *host = torture_setting_string(torture, "host", NULL);
21	struct smbcli_options options;
22	struct smbcli_session_options session_options;
23
24	/* Join domain as a member server. */
25	tj = torture_join_domain(torture,
26				 TORTURE_NETBIOS_NAME,
27				 ACB_WSTRUST,
28				 &machine_account);
29
30	if (!tj) {
31		DEBUG(0, ("%s failed to join domain as workstation\n",
32			  TORTURE_NETBIOS_NAME));
33		return false;
34	}
35
36	lp_smbcli_options(torture->lp_ctx, &options);
37	lp_smbcli_session_options(torture->lp_ctx, &session_options);
38
39	status = smbcli_full_connection(tj, &cli, host,
40					lp_smb_ports(torture->lp_ctx),
41					"IPC$", NULL,
42					lp_socket_options(torture->lp_ctx),
43					machine_account,
44					lp_resolve_context(torture->lp_ctx),
45					torture->ev, &options, &session_options,
46					lp_iconv_convenience(torture->lp_ctx),
47					lp_gensec_settings(torture, torture->lp_ctx));
48	if (!NT_STATUS_IS_OK(status)) {
49		DEBUG(0, ("%s failed to connect to IPC$ with workstation credentials\n",
50			  TORTURE_NETBIOS_NAME));
51		return false;
52	}
53	smbcli_tdis(cli);
54
55	/* Leave domain. */
56	torture_leave_domain(torture, tj);
57
58	/* Join domain as a domain controller. */
59	tj = torture_join_domain(torture, TORTURE_NETBIOS_NAME,
60				 ACB_SVRTRUST,
61				 &machine_account);
62	if (!tj) {
63		DEBUG(0, ("%s failed to join domain as domain controller\n",
64			  TORTURE_NETBIOS_NAME));
65		return false;
66	}
67
68	status = smbcli_full_connection(tj, &cli, host,
69					lp_smb_ports(torture->lp_ctx),
70					"IPC$", NULL,
71					lp_socket_options(torture->lp_ctx),
72					machine_account,
73					lp_resolve_context(torture->lp_ctx),
74					torture->ev, &options, &session_options,
75					lp_iconv_convenience(torture->lp_ctx),
76					lp_gensec_settings(torture, torture->lp_ctx));
77	if (!NT_STATUS_IS_OK(status)) {
78		DEBUG(0, ("%s failed to connect to IPC$ with workstation credentials\n",
79			  TORTURE_NETBIOS_NAME));
80		return false;
81	}
82
83	smbcli_tdis(cli);
84
85	/* Leave domain. */
86	torture_leave_domain(torture, tj);
87
88	return true;
89}
90
91