diff options
Diffstat (limited to 'source4/librpc')
-rw-r--r-- | source4/librpc/rpc/dcerpc.c | 43 | ||||
-rw-r--r-- | source4/librpc/rpc/dcerpc.h | 44 |
2 files changed, 44 insertions, 43 deletions
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c index bb7c4c536d..cc72866866 100644 --- a/source4/librpc/rpc/dcerpc.c +++ b/source4/librpc/rpc/dcerpc.c @@ -33,6 +33,49 @@ #include "lib/util/tevent_ntstatus.h" #include "librpc/rpc/rpc_common.h" +enum rpc_request_state { + RPC_REQUEST_QUEUED, + RPC_REQUEST_PENDING, + RPC_REQUEST_DONE +}; + +/* + handle for an async dcerpc request +*/ +struct rpc_request { + struct rpc_request *next, *prev; + struct dcerpc_pipe *p; + NTSTATUS status; + uint32_t call_id; + enum rpc_request_state state; + DATA_BLOB payload; + uint32_t flags; + uint32_t fault_code; + + /* this is used to distinguish bind and alter_context requests + from normal requests */ + void (*recv_handler)(struct rpc_request *conn, + DATA_BLOB *blob, struct ncacn_packet *pkt); + + const struct GUID *object; + uint16_t opnum; + DATA_BLOB request_data; + bool ignore_timeout; + + /* use by the ndr level async recv call */ + struct { + const struct ndr_interface_table *table; + uint32_t opnum; + void *struct_ptr; + TALLOC_CTX *mem_ctx; + } ndr; + + struct { + void (*callback)(struct rpc_request *); + void *private_data; + } async; +}; + _PUBLIC_ NTSTATUS dcerpc_init(struct loadparm_context *lp_ctx) { return gensec_init(lp_ctx); diff --git a/source4/librpc/rpc/dcerpc.h b/source4/librpc/rpc/dcerpc.h index a6ac8c37eb..22f4b1e594 100644 --- a/source4/librpc/rpc/dcerpc.h +++ b/source4/librpc/rpc/dcerpc.h @@ -53,6 +53,7 @@ struct dcecli_security { /* this holds the information that is not specific to a particular rpc context_id */ +struct rpc_request; struct dcecli_connection { uint32_t call_id; uint32_t srv_max_xmit_frag; @@ -190,49 +191,6 @@ struct dcerpc_pipe_connect { }; -enum rpc_request_state { - RPC_REQUEST_QUEUED, - RPC_REQUEST_PENDING, - RPC_REQUEST_DONE -}; - -/* - handle for an async dcerpc request -*/ -struct rpc_request { - struct rpc_request *next, *prev; - struct dcerpc_pipe *p; - NTSTATUS status; - uint32_t call_id; - enum rpc_request_state state; - DATA_BLOB payload; - uint32_t flags; - uint32_t fault_code; - - /* this is used to distinguish bind and alter_context requests - from normal requests */ - void (*recv_handler)(struct rpc_request *conn, - DATA_BLOB *blob, struct ncacn_packet *pkt); - - const struct GUID *object; - uint16_t opnum; - DATA_BLOB request_data; - bool ignore_timeout; - - /* use by the ndr level async recv call */ - struct { - const struct ndr_interface_table *table; - uint32_t opnum; - void *struct_ptr; - TALLOC_CTX *mem_ctx; - } ndr; - - struct { - void (*callback)(struct rpc_request *); - void *private_data; - } async; -}; - struct epm_tower; struct epm_floor; |