2 #include "libnet/libnet.h"
3 #include "libcli/libcli.h"
5 #include "auth/credentials/credentials.h"
6 #include "torture/rpc/rpc.h"
8 #include "libcli/resolve/resolve.h"
9 #include "param/param.h"
11 #define TORTURE_NETBIOS_NAME "smbtorturejoin"
14 bool torture_rpc_join(struct torture_context
*torture
)
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
;
24 /* Join domain as a member server. */
25 tj
= torture_join_domain(torture
,
31 DEBUG(0, ("%s failed to join domain as workstation\n",
32 TORTURE_NETBIOS_NAME
));
36 lp_smbcli_options(torture
->lp_ctx
, &options
);
37 lp_smbcli_session_options(torture
->lp_ctx
, &session_options
);
39 status
= smbcli_full_connection(tj
, &cli
, host
,
40 lp_smb_ports(torture
->lp_ctx
),
42 lp_socket_options(torture
->lp_ctx
),
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
));
56 torture_leave_domain(torture
, tj
);
58 /* Join domain as a domain controller. */
59 tj
= torture_join_domain(torture
, TORTURE_NETBIOS_NAME
,
63 DEBUG(0, ("%s failed to join domain as domain controller\n",
64 TORTURE_NETBIOS_NAME
));
68 status
= smbcli_full_connection(tj
, &cli
, host
,
69 lp_smb_ports(torture
->lp_ctx
),
71 lp_socket_options(torture
->lp_ctx
),
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
));
86 torture_leave_domain(torture
, tj
);