summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2011-03-03 14:20:26 +0100
committerGünther Deschner <gd@samba.org>2011-03-08 11:41:30 +0100
commitcc5b88545de27ae37a8e8876490d0207c80fae6f (patch)
tree4a10dbf8cd7bddadeb7df6b51d4c9e9211de111c
parentbd66fc81b648eaa966522f78c03f5844d9019c44 (diff)
downloadsamba-cc5b88545de27ae37a8e8876490d0207c80fae6f.tar.gz
samba-cc5b88545de27ae37a8e8876490d0207c80fae6f.tar.bz2
samba-cc5b88545de27ae37a8e8876490d0207c80fae6f.zip
s3-rpc_server: Introduce transport in pipe_struct.
Signed-off-by: Günther Deschner <gd@samba.org>
-rw-r--r--source3/include/includes.h2
-rw-r--r--source3/include/ntdomain.h2
-rw-r--r--source3/librpc/rpc/dcerpc.h1
-rw-r--r--source3/rpc_server/rpc_ncacn_np.c1
-rw-r--r--source3/rpc_server/rpc_server.c5
5 files changed, 9 insertions, 2 deletions
diff --git a/source3/include/includes.h b/source3/include/includes.h
index d715db6354..c79c96260a 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -612,8 +612,8 @@ extern void *cmdline_lp_ctx;
#include "msdfs.h"
#include "auth.h"
-#include "ntdomain.h"
#include "librpc/rpc/dcerpc.h"
+#include "ntdomain.h"
#include "client.h"
#include "module.h"
diff --git a/source3/include/ntdomain.h b/source3/include/ntdomain.h
index e1be93c4ba..5819c9aa65 100644
--- a/source3/include/ntdomain.h
+++ b/source3/include/ntdomain.h
@@ -120,6 +120,8 @@ struct pipes_struct {
struct client_address *client_id;
struct client_address *server_id;
+ enum dcerpc_transport_t transport;
+
struct auth_serversupplied_info *session_info;
struct messaging_context *msg_ctx;
diff --git a/source3/librpc/rpc/dcerpc.h b/source3/librpc/rpc/dcerpc.h
index 0f900871d1..72a8ad55da 100644
--- a/source3/librpc/rpc/dcerpc.h
+++ b/source3/librpc/rpc/dcerpc.h
@@ -120,6 +120,7 @@ _PUBLIC_ NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx,
struct epm_tower *tower);
struct NL_AUTH_MESSAGE;
+struct pipe_auth_data;
/* The following definitions come from librpc/rpc/dcerpc_helpers.c */
NTSTATUS dcerpc_push_ncacn_packet(TALLOC_CTX *mem_ctx,
diff --git a/source3/rpc_server/rpc_ncacn_np.c b/source3/rpc_server/rpc_ncacn_np.c
index 276e3f85db..41985e4ee0 100644
--- a/source3/rpc_server/rpc_ncacn_np.c
+++ b/source3/rpc_server/rpc_ncacn_np.c
@@ -166,6 +166,7 @@ struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
p->endian = RPC_LITTLE_ENDIAN;
p->syntax = *syntax;
+ p->transport = NCALRPC;
DEBUG(4,("Created internal pipe %s (pipes_open=%d)\n",
get_pipe_name_from_syntax(talloc_tos(), syntax), pipes_open));
diff --git a/source3/rpc_server/rpc_server.c b/source3/rpc_server/rpc_server.c
index eb98a447f5..4cab4f1521 100644
--- a/source3/rpc_server/rpc_server.c
+++ b/source3/rpc_server/rpc_server.c
@@ -76,6 +76,7 @@ static NTSTATUS auth_anonymous_session_info(TALLOC_CTX *mem_ctx,
static int make_server_pipes_struct(TALLOC_CTX *mem_ctx,
const char *pipe_name,
const struct ndr_syntax_id id,
+ enum dcerpc_transport_t transport,
const char *client_address,
const char *server_address,
struct auth_session_info_transport *session_info,
@@ -94,6 +95,7 @@ static int make_server_pipes_struct(TALLOC_CTX *mem_ctx,
return -1;
}
p->syntax = id;
+ p->transport = transport;
p->mem_ctx = talloc_named(p, 0, "pipe %s %p", pipe_name, p);
if (!p->mem_ctx) {
@@ -540,7 +542,7 @@ static void named_pipe_accept_done(struct tevent_req *subreq)
}
ret = make_server_pipes_struct(npc,
- npc->pipe_name, npc->pipe_id,
+ npc->pipe_name, npc->pipe_id, NCACN_NP,
cli_addr, NULL, npc->session_info,
&npc->p, &error);
if (ret != 0) {
@@ -1218,6 +1220,7 @@ static void dcerpc_ncacn_accept(struct tevent_context *ev_ctx,
rc = make_server_pipes_struct(ncacn_conn,
pipe_name,
ncacn_conn->syntax_id,
+ ncacn_conn->transport,
cli_str,
srv_str,
ncacn_conn->session_info,