From b243a036026e79b8d3fb75bf7f7d59a27cb813af Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=BCnther=20Deschner?= Date: Sat, 24 May 2008 01:29:13 +0200 Subject: [PATCH] drsuapi: always use tcp for drsuapi. cli_rpc_pipe_open() now uses tcp transport for drsuapi and named pipe transport for all other pipes. This finally allows rpcclient to call dscracknames on windows (don't forget to call "seal" in advance). Guenther --- source/rpc_client/cli_pipe.c | 38 ++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/source/rpc_client/cli_pipe.c b/source/rpc_client/cli_pipe.c index 8f410379ab4..cec2797a732 100644 --- a/source/rpc_client/cli_pipe.c +++ b/source/rpc_client/cli_pipe.c @@ -2796,7 +2796,7 @@ NTSTATUS rpc_pipe_open_ncalrpc(TALLOC_CTX *mem_ctx, const char *socket_path, * ****************************************************************************/ -static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe_idx, NTSTATUS *perr) +static struct rpc_pipe_client *rpc_pipe_open_np(struct cli_state *cli, int pipe_idx, NTSTATUS *perr) { struct rpc_pipe_client *result; int fnum; @@ -2849,7 +2849,7 @@ static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe fnum = cli_nt_create(cli, result->trans.np.pipe_name, DESIRED_ACCESS_PIPE); if (fnum == -1) { - DEBUG(1,("cli_rpc_pipe_open: cli_nt_create failed on pipe %s " + DEBUG(1,("rpc_pipe_open_np: cli_nt_create failed on pipe %s " "to machine %s. Error was %s\n", result->trans.np.pipe_name, cli->desthost, cli_errstr(cli))); @@ -2868,6 +2868,40 @@ static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe return result; } +/**************************************************************************** + Open a pipe to a remote server. + ****************************************************************************/ + +static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, + int pipe_idx, + NTSTATUS *perr) +{ + struct rpc_pipe_client *result; + + *perr = NT_STATUS_PIPE_NOT_AVAILABLE; + + switch (pipe_idx) { + case PI_DRSUAPI: + *perr = rpc_pipe_open_tcp(NULL, cli->desthost, + &ndr_table_drsuapi.syntax_id, + &result); + if (!NT_STATUS_IS_OK(*perr)) { + return NULL; + } + break; + default: + result = rpc_pipe_open_np(cli, pipe_idx, perr); + if (result == NULL) { + return NULL; + } + break; + } + + *perr = NT_STATUS_OK; + + return result; +} + /**************************************************************************** Open a named pipe to an SMB server and bind anonymously. ****************************************************************************/ -- 2.47.3