From 1a16a2cf9707866c4f6d4dfe64f6c1d18d5f2075 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Sat, 24 May 2008 01:29:13 +0200 Subject: 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 (This used to be commit b243a036026e79b8d3fb75bf7f7d59a27cb813af) --- source3/rpc_client/cli_pipe.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) (limited to 'source3/rpc_client/cli_pipe.c') diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c index 8f410379ab..cec2797a73 100644 --- a/source3/rpc_client/cli_pipe.c +++ b/source3/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. ****************************************************************************/ -- cgit