HACK... https://bugzilla.samba.org/show_bug.cgi?id=12892
[metze/samba/wip.git] / source3 / rpc_server / rpc_ncacn_np.h
index 67cd8a1285400bba3b4e94ad24c561fd9ce29b81..50e7330fe23ce51ef3f596f04de5a2ef631ab6e6 100644 (file)
 #ifndef _RPC_NCACN_NP_H_
 #define _RPC_NCACN_NP_H_
 
+struct rpc_pipe_client;
 struct dcerpc_binding_handle;
 struct ndr_interface_table;
 struct tsocket_address;
 
+struct npa_state {
+       struct tstream_context *stream;
+
+       struct tevent_queue *read_queue;
+       struct tevent_queue *write_queue;
+
+       uint64_t allocation_size;
+       uint16_t device_state;
+       uint16_t file_type;
+
+       void *private_data;
+};
+
+NTSTATUS make_external_rpc_pipe(TALLOC_CTX *mem_ctx,
+                               const char *pipe_name,
+                               const struct tsocket_address *remote_client_address,
+                               const struct tsocket_address *local_server_address,
+                               const struct auth_session_info *session_info,
+                               struct npa_state **pnpa);
+
+NTSTATUS make_internal_rpc_pipe_socketpair(
+       TALLOC_CTX *mem_ctx,
+       struct tevent_context *ev_ctx,
+       struct messaging_context *msg_ctx,
+       const char *pipe_name,
+       const struct ndr_syntax_id *syntax,
+       const struct tsocket_address *remote_address,
+       const struct tsocket_address *local_address,
+       const struct auth_session_info *session_info,
+       struct npa_state **pnpa);
+
 struct np_proxy_state {
        uint16_t file_type;
        uint16_t device_state;
@@ -36,16 +68,18 @@ struct np_proxy_state {
 struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx,
                                              const struct ndr_syntax_id *syntax,
                                              const struct tsocket_address *remote_address,
+                                             const struct tsocket_address *local_address,
                                              const struct auth_session_info *session_info,
                                              struct messaging_context *msg_ctx);
 struct np_proxy_state *make_external_rpc_pipe_p(TALLOC_CTX *mem_ctx,
                                const char *pipe_name,
-                               const struct tsocket_address *local_address,
-                               const struct tsocket_address *remote_address,
+                               const struct tsocket_address *remote_client_address,
+                               const struct tsocket_address *local_server_address,
                                const struct auth_session_info *session_info);
 NTSTATUS rpcint_binding_handle(TALLOC_CTX *mem_ctx,
                               const struct ndr_interface_table *ndr_table,
                               const struct tsocket_address *remote_address,
+                              const struct tsocket_address *local_address,
                               const struct auth_session_info *session_info,
                               struct messaging_context *msg_ctx,
                               struct dcerpc_binding_handle **binding_handle);
@@ -53,13 +87,15 @@ NTSTATUS rpc_pipe_open_interface(TALLOC_CTX *mem_ctx,
                                 const struct ndr_interface_table *table,
                                 const struct auth_session_info *session_info,
                                 const struct tsocket_address *remote_address,
+                                const struct tsocket_address *local_address,
                                 struct messaging_context *msg_ctx,
                                 struct rpc_pipe_client **cli_pipe);
 
 NTSTATUS rpc_pipe_open_internal(TALLOC_CTX *mem_ctx,
-                               const struct ndr_syntax_id *abstract_syntax,
+                               const struct ndr_interface_table *ndr_table,
                                const struct auth_session_info *session_info,
                                const struct tsocket_address *remote_address,
+                               const struct tsocket_address *local_address,
                                struct messaging_context *msg_ctx,
                                struct rpc_pipe_client **presult);