summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2008-05-24 01:29:13 +0200
committerGünther Deschner <gd@samba.org>2008-05-24 01:29:13 +0200
commit1a16a2cf9707866c4f6d4dfe64f6c1d18d5f2075 (patch)
tree59925606cadb2bbee25bbcf05ebc06fd8944904c /source3
parentfb05d41cb728995973d6da4b7f3b61211e9fd24d (diff)
downloadsamba-1a16a2cf9707866c4f6d4dfe64f6c1d18d5f2075.tar.gz
samba-1a16a2cf9707866c4f6d4dfe64f6c1d18d5f2075.tar.bz2
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.c38
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.
****************************************************************************/