diff options
author | Günther Deschner <gd@samba.org> | 2008-05-24 01:29:13 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2008-05-24 01:29:13 +0200 |
commit | 1a16a2cf9707866c4f6d4dfe64f6c1d18d5f2075 (patch) | |
tree | 59925606cadb2bbee25bbcf05ebc06fd8944904c /source3 | |
parent | fb05d41cb728995973d6da4b7f3b61211e9fd24d (diff) | |
download | samba-1a16a2cf9707866c4f6d4dfe64f6c1d18d5f2075.tar.gz samba-1a16a2cf9707866c4f6d4dfe64f6c1d18d5f2075.tar.xz samba-1a16a2cf9707866c4f6d4dfe64f6c1d18d5f2075.zip |
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)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/rpc_client/cli_pipe.c | 38 |
1 files changed, 36 insertions, 2 deletions
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))); @@ -2869,6 +2869,40 @@ static struct rpc_pipe_client *cli_rpc_pipe_open(struct cli_state *cli, int pipe } /**************************************************************************** + 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. ****************************************************************************/ |