|
static int | rts_destination_command_read (rdpRpc *rpc, wStream *buffer, UINT32 *Destination) |
|
static const char * | rts_command_to_string (UINT32 cmd, char *buffer, size_t len) |
|
static const char * | rts_pdu_ptype_to_string (UINT32 ptype) |
|
static rpcconn_rts_hdr_t | rts_pdu_header_init (void) |
|
static BOOL | rts_align_stream (wStream *s, size_t alignment, BOOL silent) |
|
static char * | sdup (const void *src, size_t length) |
|
static BOOL | rts_write_common_pdu_header (wStream *s, const rpcconn_common_hdr_t *header) |
|
BOOL | rts_read_common_pdu_header (wStream *s, rpcconn_common_hdr_t *header, BOOL ignoreErrors) |
|
static BOOL | rts_read_auth_verifier_no_checks (wStream *s, auth_verifier_co_t *auth, const rpcconn_common_hdr_t *header, size_t *startPos, BOOL silent) |
|
static BOOL | rts_read_auth_verifier (wStream *s, auth_verifier_co_t *auth, const rpcconn_common_hdr_t *header, BOOL silent) |
|
static BOOL | rts_read_auth_verifier_with_stub (wStream *s, auth_verifier_co_t *auth, rpcconn_common_hdr_t *header, BOOL silent) |
|
static void | rts_free_auth_verifier (auth_verifier_co_t *auth) |
|
static BOOL | rts_write_auth_verifier (wStream *s, const auth_verifier_co_t *auth, const rpcconn_common_hdr_t *header) |
|
static BOOL | rts_read_version (wStream *s, p_rt_version_t *version, BOOL silent) |
|
static void | rts_free_supported_versions (p_rt_versions_supported_t *versions) |
|
static BOOL | rts_read_supported_versions (wStream *s, p_rt_versions_supported_t *versions, BOOL silent) |
|
static BOOL | rts_read_port_any (wStream *s, port_any_t *port, BOOL silent) |
|
static void | rts_free_port_any (port_any_t *port) |
|
static BOOL | rts_read_uuid (wStream *s, p_uuid_t *uuid, BOOL silent) |
|
static BOOL | rts_write_uuid (wStream *s, const p_uuid_t *uuid) |
|
static p_syntax_id_t * | rts_syntax_id_new (size_t count) |
|
static void | rts_syntax_id_free (p_syntax_id_t *ptr) |
|
static BOOL | rts_read_syntax_id (wStream *s, p_syntax_id_t *syntax_id, BOOL silent) |
|
static BOOL | rts_write_syntax_id (wStream *s, const p_syntax_id_t *syntax_id) |
|
static p_cont_elem_t * | rts_context_elem_new (size_t count) |
|
static void | rts_context_elem_free (p_cont_elem_t *ptr) |
|
static BOOL | rts_read_context_elem (wStream *s, p_cont_elem_t *element, BOOL silent) |
|
static BOOL | rts_write_context_elem (wStream *s, const p_cont_elem_t *element) |
|
static BOOL | rts_read_context_list (wStream *s, p_cont_list_t *list, BOOL silent) |
|
static void | rts_free_context_list (p_cont_list_t *list) |
|
static BOOL | rts_write_context_list (wStream *s, const p_cont_list_t *list) |
|
static p_result_t * | rts_result_new (size_t count) |
|
static void | rts_result_free (p_result_t *results) |
|
static BOOL | rts_read_result (wStream *s, p_result_t *result, BOOL silent) |
|
static void | rts_free_result (p_result_t *result) |
|
static BOOL | rts_read_result_list (wStream *s, p_result_list_t *list, BOOL silent) |
|
static void | rts_free_result_list (p_result_list_t *list) |
|
static void | rts_free_pdu_alter_context (rpcconn_alter_context_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_alter_context (wStream *s, rpcconn_alter_context_hdr_t *ctx, BOOL silent) |
|
static BOOL | rts_read_pdu_alter_context_response (wStream *s, rpcconn_alter_context_response_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_alter_context_response (rpcconn_alter_context_response_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_bind (wStream *s, rpcconn_bind_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_bind (rpcconn_bind_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_bind_ack (wStream *s, rpcconn_bind_ack_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_bind_ack (rpcconn_bind_ack_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_bind_nak (wStream *s, rpcconn_bind_nak_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_bind_nak (rpcconn_bind_nak_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_auth3 (wStream *s, rpcconn_rpc_auth_3_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_auth3 (rpcconn_rpc_auth_3_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_fault (wStream *s, rpcconn_fault_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_fault (rpcconn_fault_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_cancel_ack (wStream *s, rpcconn_cancel_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_cancel_ack (rpcconn_cancel_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_orphaned (wStream *s, rpcconn_orphaned_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_orphaned (rpcconn_orphaned_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_request (wStream *s, rpcconn_request_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_request (rpcconn_request_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_response (wStream *s, rpcconn_response_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_response (rpcconn_response_hdr_t *ctx) |
|
static BOOL | rts_read_pdu_rts (wStream *s, rpcconn_rts_hdr_t *ctx, BOOL silent) |
|
static void | rts_free_pdu_rts (rpcconn_rts_hdr_t *ctx) |
|
void | rts_free_pdu_header (rpcconn_hdr_t *header, BOOL allocated) |
|
BOOL | rts_read_pdu_header (wStream *s, rpcconn_hdr_t *header) |
|
BOOL | rts_read_pdu_header_ex (wStream *s, rpcconn_hdr_t *header, BOOL silent) |
|
static BOOL | rts_write_pdu_header (wStream *s, const rpcconn_rts_hdr_t *header) |
|
static BOOL | rts_receive_window_size_command_read (rdpRpc *rpc, wStream *buffer, UINT64 *ReceiveWindowSize) |
|
static BOOL | rts_receive_window_size_command_write (wStream *s, UINT32 ReceiveWindowSize) |
|
static int | rts_flow_control_ack_command_read (rdpRpc *rpc, wStream *buffer, UINT32 *BytesReceived, UINT32 *AvailableWindow, BYTE *ChannelCookie) |
|
static BOOL | rts_flow_control_ack_command_write (wStream *s, UINT32 BytesReceived, UINT32 AvailableWindow, BYTE *ChannelCookie) |
|
static BOOL | rts_connection_timeout_command_read (rdpRpc *rpc, wStream *buffer, UINT64 *ConnectionTimeout) |
|
static BOOL | rts_cookie_command_write (wStream *s, const BYTE *Cookie) |
|
static BOOL | rts_channel_lifetime_command_write (wStream *s, UINT32 ChannelLifetime) |
|
static BOOL | rts_client_keepalive_command_write (wStream *s, UINT32 ClientKeepalive) |
|
static BOOL | rts_version_command_read (rdpRpc *rpc, wStream *buffer) |
|
static BOOL | rts_version_command_write (wStream *buffer) |
|
static BOOL | rts_empty_command_write (wStream *s) |
|
static BOOL | rts_padding_command_read (wStream *s, size_t *length, BOOL silent) |
|
static BOOL | rts_client_address_command_read (wStream *s, size_t *length, BOOL silent) |
|
static BOOL | rts_association_group_id_command_write (wStream *s, const BYTE *AssociationGroupId) |
|
static BOOL | rts_destination_command_write (wStream *s, UINT32 Destination) |
|
void | rts_generate_cookie (BYTE *cookie) |
|
static BOOL | rts_send_buffer (RpcChannel *channel, wStream *s, size_t frag_length) |
|
BOOL | rts_send_CONN_A1_pdu (rdpRpc *rpc) |
|
BOOL | rts_recv_CONN_A3_pdu (rdpRpc *rpc, wStream *buffer) |
|
BOOL | rts_send_CONN_B1_pdu (rdpRpc *rpc) |
|
BOOL | rts_recv_CONN_C2_pdu (rdpRpc *rpc, wStream *buffer) |
|
BOOL | rts_send_flow_control_ack_pdu (rdpRpc *rpc) |
|
static int | rts_recv_flow_control_ack_pdu (rdpRpc *rpc, wStream *buffer) |
|
static int | rts_recv_flow_control_ack_with_destination_pdu (rdpRpc *rpc, wStream *buffer) |
|
BOOL | rts_recv_ping_pdu (rdpRpc *rpc, wStream *s) |
|
static int | rts_send_ping_pdu (rdpRpc *rpc) |
|
BOOL | rts_command_length (UINT32 CommandType, wStream *s, size_t *length, BOOL silent) |
|
static int | rts_send_OUT_R2_A7_pdu (rdpRpc *rpc) |
|
static int | rts_send_OUT_R2_C1_pdu (rdpRpc *rpc) |
|
BOOL | rts_send_OUT_R1_A3_pdu (rdpRpc *rpc) |
|
static int | rts_recv_OUT_R1_A2_pdu (rdpRpc *rpc, wStream *buffer) |
|
static int | rts_recv_OUT_R2_A6_pdu (rdpRpc *rpc, wStream *buffer) |
|
static int | rts_recv_OUT_R2_B3_pdu (rdpRpc *rpc, wStream *buffer) |
|
BOOL | rts_recv_out_of_sequence_pdu (rdpRpc *rpc, wStream *buffer, const rpcconn_hdr_t *header) |
|
BOOL | rts_write_pdu_auth3 (wStream *s, const rpcconn_rpc_auth_3_hdr_t *auth) |
|
BOOL | rts_write_pdu_bind (wStream *s, const rpcconn_bind_hdr_t *bind) |
|
BOOL | rts_conditional_check_and_log (const char *tag, wStream *s, size_t size, BOOL silent, const char *fkt, const char *file, size_t line) |
|
BOOL | rts_conditional_safe_seek (wStream *s, size_t size, BOOL silent, const char *fkt, const char *file, size_t line) |
|
static int rts_destination_command_read |
( |
rdpRpc * |
rpc, |
|
|
wStream * |
buffer, |
|
|
UINT32 * |
Destination |
|
) |
| |
|
static |
RTS PDU Header
The RTS PDU Header has the same layout as the common header of the connection-oriented RPC PDU as specified in [C706] section 12.6.1, with a few additional requirements around the contents of the header fields. The additional requirements are as follows:
All fields MUST use little-endian byte order.
Fragmentation MUST NOT occur for an RTS PDU.
PFC_FIRST_FRAG and PFC_LAST_FRAG MUST be present in all RTS PDUs, and all other PFC flags MUST NOT be present.
The rpc_vers and rpc_vers_minor fields MUST contain version information as described in [MS-RPCE] section 1.7.
PTYPE MUST be set to a value of 20 (0x14). This field differentiates RTS packets from other RPC packets.
The packed_drep MUST indicate little-endian integer and floating-pointer byte order, IEEE float-point format representation, and ASCII character format as specified in [C706] section 12.6.
The auth_length MUST be set to 0.
The frag_length field MUST reflect the size of the header plus the size of all commands, including the variable portion of variable-sized commands.
The call_id MUST be set to 0 by senders and MUST be 0 on receipt.