summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/rpc_client/cli_netlogon.c7
-rw-r--r--source3/rpcclient/cmd_netlogon.c18
2 files changed, 17 insertions, 8 deletions
diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c
index 28395de067..0fdc476775 100644
--- a/source3/rpc_client/cli_netlogon.c
+++ b/source3/rpc_client/cli_netlogon.c
@@ -733,6 +733,7 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
const char *domain,
const char *username,
const char *password,
+ const char *workstation,
int logon_type)
{
prs_struct qbuf, rbuf;
@@ -750,7 +751,11 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
ZERO_STRUCT(r);
ZERO_STRUCT(ret_creds);
- fstr_sprintf( clnt_name_slash, "\\\\%s", global_myname() );
+ if (workstation) {
+ fstr_sprintf( clnt_name_slash, "\\\\%s", workstation );
+ } else {
+ fstr_sprintf( clnt_name_slash, "\\\\%s", global_myname() );
+ }
/* Initialise input parameters */
diff --git a/source3/rpcclient/cmd_netlogon.c b/source3/rpcclient/cmd_netlogon.c
index a1093d693f..5a2dd00f98 100644
--- a/source3/rpcclient/cmd_netlogon.c
+++ b/source3/rpcclient/cmd_netlogon.c
@@ -338,11 +338,12 @@ static NTSTATUS cmd_netlogon_sam_logon(struct rpc_pipe_client *cli,
const char *username, *password;
int auth_level = 2;
uint32 logon_param = 0;
+ const char *workstation = NULL;
/* Check arguments */
if (argc < 3 || argc > 6) {
- fprintf(stderr, "Usage: samlogon <username> <password> "
+ fprintf(stderr, "Usage: samlogon <username> <password> [workstation]"
"[logon_type (1 or 2)] [auth level (2 or 3)] [logon_parameter]\n");
return NT_STATUS_OK;
}
@@ -350,18 +351,21 @@ static NTSTATUS cmd_netlogon_sam_logon(struct rpc_pipe_client *cli,
username = argv[1];
password = argv[2];
- if (argc >= 4)
- sscanf(argv[3], "%i", &logon_type);
+ if (argc >= 4)
+ workstation = argv[3];
if (argc >= 5)
- sscanf(argv[4], "%i", &auth_level);
+ sscanf(argv[4], "%i", &logon_type);
- if (argc == 6)
- sscanf(argv[5], "%x", &logon_param);
+ if (argc >= 6)
+ sscanf(argv[5], "%i", &auth_level);
+
+ if (argc == 7)
+ sscanf(argv[6], "%x", &logon_param);
/* Perform the sam logon */
- result = rpccli_netlogon_sam_logon(cli, mem_ctx, logon_param, lp_workgroup(), username, password, logon_type);
+ result = rpccli_netlogon_sam_logon(cli, mem_ctx, logon_param, lp_workgroup(), username, password, workstation, logon_type);
if (!NT_STATUS_IS_OK(result))
goto done;