bool use_kerberos,
struct cli_state **cli)
{
+ TALLOC_CTX *frame = talloc_stackframe();
+ bool fallback_after_kerberos = false;
+ bool use_ccache = false;
+ bool pw_nt_hash = false;
+ struct cli_credentials *creds = NULL;
int flags = 0;
+ NTSTATUS status;
- if (use_kerberos) {
- flags |= CLI_FULL_CONNECTION_USE_KERBEROS;
+ if (use_kerberos && pass) {
+ fallback_after_kerberos = true;
+ }
+
+ creds = cli_session_creds_init(frame,
+ user,
+ domain,
+ NULL, /* realm (use default) */
+ pass,
+ use_kerberos,
+ fallback_after_kerberos,
+ use_ccache,
+ pw_nt_hash);
+ if (creds == NULL) {
+ TALLOC_FREE(frame);
+ return NT_STATUS_NO_MEMORY;
}
- if (use_kerberos && pass) {
- flags |= CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS;
- }
-
- return cli_full_connection(cli, NULL,
- dc,
- NULL, 0,
- "IPC$", "IPC",
- user,
- domain,
- pass,
- flags,
- SMB_SIGNING_IPC_DEFAULT);
+ status = cli_full_connection_creds(cli,
+ NULL,
+ dc,
+ NULL, 0,
+ "IPC$", "IPC",
+ creds,
+ flags,
+ SMB_SIGNING_IPC_DEFAULT);
+ if (!NT_STATUS_IS_OK(status)) {
+ TALLOC_FREE(frame);
+ return status;
+ }
+
+ TALLOC_FREE(frame);
+ return NT_STATUS_OK;
}
/****************************************************************