FreeRDP
rts.c File Reference
#include <winpr/assert.h>
#include <winpr/crt.h>
#include <winpr/crypto.h>
#include <winpr/winhttp.h>
#include <freerdp/log.h>
#include "ncacn_http.h"
#include "rpc_client.h"
#include "rts_signature.h"
#include "rts.h"

Macros

#define TAG   FREERDP_TAG("core.gateway.rts")
 

Functions

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)
 
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)
 
static BOOL rts_read_auth_verifier_no_checks (wStream *s, auth_verifier_co_t *auth, const rpcconn_common_hdr_t *header, size_t *startPos)
 
static BOOL rts_read_auth_verifier (wStream *s, auth_verifier_co_t *auth, const rpcconn_common_hdr_t *header)
 
static BOOL rts_read_auth_verifier_with_stub (wStream *s, auth_verifier_co_t *auth, rpcconn_common_hdr_t *header)
 
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)
 
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)
 
static BOOL rts_read_port_any (wStream *s, port_any_t *port)
 
static void rts_free_port_any (port_any_t *port)
 
static BOOL rts_read_uuid (wStream *s, p_uuid_t *uuid)
 
static BOOL rts_write_uuid (wStream *s, const p_uuid_t *uuid)
 
static p_syntax_id_trts_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)
 
static BOOL rts_write_syntax_id (wStream *s, const p_syntax_id_t *syntax_id)
 
p_cont_elem_trts_context_elem_new (size_t count)
 
void rts_context_elem_free (p_cont_elem_t *ptr)
 
static BOOL rts_read_context_elem (wStream *s, p_cont_elem_t *element)
 
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)
 
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_trts_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)
 
static void rts_free_result (p_result_t *result)
 
static BOOL rts_read_result_list (wStream *s, p_result_list_t *list)
 
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)
 
static BOOL rts_read_pdu_alter_context_response (wStream *s, rpcconn_alter_context_response_hdr_t *ctx)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
static void rts_free_pdu_orphaned (rpcconn_orphaned_hdr_t *ctx)
 
static BOOL rts_read_pdu_request (wStream *s, rpcconn_request_hdr_t *ctx)
 
static void rts_free_pdu_request (rpcconn_request_hdr_t *ctx)
 
static BOOL rts_read_pdu_response (wStream *s, rpcconn_response_hdr_t *ctx)
 
static void rts_free_pdu_response (rpcconn_response_hdr_t *ctx)
 
static BOOL rts_read_pdu_rts (wStream *s, rpcconn_rts_hdr_t *ctx)
 
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)
 
static BOOL rts_write_pdu_header (wStream *s, const rpcconn_rts_hdr_t *header)
 
static int rts_receive_window_size_command_read (rdpRpc *rpc, wStream *buffer, UINT32 *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, UINT32 *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)
 
static BOOL rts_client_address_command_read (wStream *s, size_t *length)
 
static BOOL rts_association_group_id_command_write (wStream *s, const BYTE *AssociationGroupId)
 
static int rts_destination_command_read (rdpRpc *rpc, wStream *buffer, UINT32 *Destination)
 
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)
 
static int rts_send_ping_pdu (rdpRpc *rpc)
 
BOOL rts_command_length (UINT32 CommandType, wStream *s, size_t *length)
 
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)
 

Macro Definition Documentation

◆ TAG

#define TAG   FREERDP_TAG("core.gateway.rts")

FreeRDP: A Remote Desktop Protocol Implementation Request To Send (RTS) PDUs

Copyright 2012 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ rts_align_stream()

static BOOL rts_align_stream ( wStream *  s,
size_t  alignment 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_association_group_id_command_write()

static BOOL rts_association_group_id_command_write ( wStream *  s,
const BYTE AssociationGroupId 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_channel_lifetime_command_write()

static BOOL rts_channel_lifetime_command_write ( wStream *  s,
UINT32  ChannelLifetime 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_client_address_command_read()

static BOOL rts_client_address_command_read ( wStream *  s,
size_t *  length 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_client_keepalive_command_write()

static BOOL rts_client_keepalive_command_write ( wStream *  s,
UINT32  ClientKeepalive 
)
static

An unsigned integer that specifies the keep-alive interval, in milliseconds, that this connection is configured to use. This value MUST be 0 or in the inclusive range of 60,000 through 4,294,967,295. If it is 0, it MUST be interpreted as 300,000.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_command_length()

BOOL rts_command_length ( UINT32  CommandType,
wStream *  s,
size_t *  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_connection_timeout_command_read()

static BOOL rts_connection_timeout_command_read ( rdpRpc *  rpc,
wStream *  buffer,
UINT32 *  ConnectionTimeout 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_context_elem_free()

void rts_context_elem_free ( p_cont_elem_t ptr)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_context_elem_new()

p_cont_elem_t* rts_context_elem_new ( size_t  count)
Here is the caller graph for this function:

◆ rts_cookie_command_write()

static BOOL rts_cookie_command_write ( wStream *  s,
const BYTE Cookie 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_destination_command_read()

static int rts_destination_command_read ( rdpRpc *  rpc,
wStream *  buffer,
UINT32 *  Destination 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_destination_command_write()

static BOOL rts_destination_command_write ( wStream *  s,
UINT32  Destination 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_empty_command_write()

static BOOL rts_empty_command_write ( wStream *  s)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_flow_control_ack_command_read()

static int rts_flow_control_ack_command_read ( rdpRpc *  rpc,
wStream *  buffer,
UINT32 *  BytesReceived,
UINT32 *  AvailableWindow,
BYTE ChannelCookie 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_flow_control_ack_command_write()

static BOOL rts_flow_control_ack_command_write ( wStream *  s,
UINT32  BytesReceived,
UINT32  AvailableWindow,
BYTE ChannelCookie 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_auth_verifier()

static void rts_free_auth_verifier ( auth_verifier_co_t *  auth)
static
Here is the caller graph for this function:

◆ rts_free_context_list()

static void rts_free_context_list ( p_cont_list_t list)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_alter_context()

static void rts_free_pdu_alter_context ( rpcconn_alter_context_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_alter_context_response()

static void rts_free_pdu_alter_context_response ( rpcconn_alter_context_response_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_auth3()

static void rts_free_pdu_auth3 ( rpcconn_rpc_auth_3_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_bind()

static void rts_free_pdu_bind ( rpcconn_bind_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_bind_ack()

static void rts_free_pdu_bind_ack ( rpcconn_bind_ack_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_bind_nak()

static void rts_free_pdu_bind_nak ( rpcconn_bind_nak_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_cancel_ack()

static void rts_free_pdu_cancel_ack ( rpcconn_cancel_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_fault()

static void rts_free_pdu_fault ( rpcconn_fault_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_header()

void rts_free_pdu_header ( rpcconn_hdr_t header,
BOOL  allocated 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_orphaned()

static void rts_free_pdu_orphaned ( rpcconn_orphaned_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_request()

static void rts_free_pdu_request ( rpcconn_request_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_response()

static void rts_free_pdu_response ( rpcconn_response_hdr_t ctx)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_pdu_rts()

static void rts_free_pdu_rts ( rpcconn_rts_hdr_t ctx)
static
Here is the caller graph for this function:

◆ rts_free_port_any()

static void rts_free_port_any ( port_any_t port)
static
Here is the caller graph for this function:

◆ rts_free_result()

static void rts_free_result ( p_result_t result)
static
Here is the caller graph for this function:

◆ rts_free_result_list()

static void rts_free_result_list ( p_result_list_t list)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_free_supported_versions()

void rts_free_supported_versions ( p_rt_versions_supported_t versions)
Here is the caller graph for this function:

◆ rts_generate_cookie()

void rts_generate_cookie ( BYTE cookie)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_padding_command_read()

static BOOL rts_padding_command_read ( wStream *  s,
size_t *  length 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_pdu_header_init()

static rpcconn_rts_hdr_t rts_pdu_header_init ( void  )
static
Here is the caller graph for this function:

◆ rts_pdu_ptype_to_string()

static const char* rts_pdu_ptype_to_string ( UINT32  ptype)
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.

Here is the caller graph for this function:

◆ rts_read_auth_verifier()

static BOOL rts_read_auth_verifier ( wStream *  s,
auth_verifier_co_t *  auth,
const rpcconn_common_hdr_t header 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_auth_verifier_no_checks()

static BOOL rts_read_auth_verifier_no_checks ( wStream *  s,
auth_verifier_co_t *  auth,
const rpcconn_common_hdr_t header,
size_t *  startPos 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_auth_verifier_with_stub()

static BOOL rts_read_auth_verifier_with_stub ( wStream *  s,
auth_verifier_co_t *  auth,
rpcconn_common_hdr_t header 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_common_pdu_header()

BOOL rts_read_common_pdu_header ( wStream *  s,
rpcconn_common_hdr_t header 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_context_elem()

static BOOL rts_read_context_elem ( wStream *  s,
p_cont_elem_t element 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_context_list()

static BOOL rts_read_context_list ( wStream *  s,
p_cont_list_t list 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_alter_context()

static BOOL rts_read_pdu_alter_context ( wStream *  s,
rpcconn_alter_context_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_alter_context_response()

static BOOL rts_read_pdu_alter_context_response ( wStream *  s,
rpcconn_alter_context_response_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_auth3()

static BOOL rts_read_pdu_auth3 ( wStream *  s,
rpcconn_rpc_auth_3_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_bind()

static BOOL rts_read_pdu_bind ( wStream *  s,
rpcconn_bind_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_bind_ack()

static BOOL rts_read_pdu_bind_ack ( wStream *  s,
rpcconn_bind_ack_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_bind_nak()

static BOOL rts_read_pdu_bind_nak ( wStream *  s,
rpcconn_bind_nak_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_cancel_ack()

static BOOL rts_read_pdu_cancel_ack ( wStream *  s,
rpcconn_cancel_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_fault()

static BOOL rts_read_pdu_fault ( wStream *  s,
rpcconn_fault_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_header()

BOOL rts_read_pdu_header ( wStream *  s,
rpcconn_hdr_t header 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_orphaned()

static BOOL rts_read_pdu_orphaned ( wStream *  s,
rpcconn_orphaned_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_request()

static BOOL rts_read_pdu_request ( wStream *  s,
rpcconn_request_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_response()

static BOOL rts_read_pdu_response ( wStream *  s,
rpcconn_response_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_pdu_rts()

static BOOL rts_read_pdu_rts ( wStream *  s,
rpcconn_rts_hdr_t ctx 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_port_any()

static BOOL rts_read_port_any ( wStream *  s,
port_any_t port 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_result()

static BOOL rts_read_result ( wStream *  s,
p_result_t result 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_result_list()

static BOOL rts_read_result_list ( wStream *  s,
p_result_list_t list 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_supported_versions()

static BOOL rts_read_supported_versions ( wStream *  s,
p_rt_versions_supported_t versions 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_syntax_id()

static BOOL rts_read_syntax_id ( wStream *  s,
p_syntax_id_t syntax_id 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_uuid()

static BOOL rts_read_uuid ( wStream *  s,
p_uuid_t uuid 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_read_version()

static BOOL rts_read_version ( wStream *  s,
p_rt_version_t version 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_receive_window_size_command_read()

static int rts_receive_window_size_command_read ( rdpRpc *  rpc,
wStream *  buffer,
UINT32 *  ReceiveWindowSize 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_receive_window_size_command_write()

static BOOL rts_receive_window_size_command_write ( wStream *  s,
UINT32  ReceiveWindowSize 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_recv_CONN_A3_pdu()

BOOL rts_recv_CONN_A3_pdu ( rdpRpc *  rpc,
wStream *  buffer 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_recv_CONN_C2_pdu()

BOOL rts_recv_CONN_C2_pdu ( rdpRpc *  rpc,
wStream *  buffer 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_recv_flow_control_ack_pdu()

static int rts_recv_flow_control_ack_pdu ( rdpRpc *  rpc,
wStream *  buffer 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_recv_flow_control_ack_with_destination_pdu()

static int rts_recv_flow_control_ack_with_destination_pdu ( rdpRpc *  rpc,
wStream *  buffer 
)
static

When the sender receives a FlowControlAck RTS PDU, it MUST use the following formula to recalculate its Sender AvailableWindow variable:

Sender AvailableWindow = Receiver AvailableWindow_from_ack - (BytesSent - BytesReceived_from_ack)

Where:

Receiver AvailableWindow_from_ack is the Available Window field in the Flow Control Acknowledgement Structure (section 2.2.3.4) in the PDU received.

BytesReceived_from_ack is the Bytes Received field in the Flow Control Acknowledgement structure in the PDU received.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_recv_out_of_sequence_pdu()

BOOL rts_recv_out_of_sequence_pdu ( rdpRpc *  rpc,
wStream *  buffer,
const rpcconn_hdr_t header 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_recv_OUT_R1_A2_pdu()

static int rts_recv_OUT_R1_A2_pdu ( rdpRpc *  rpc,
wStream *  buffer 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_recv_OUT_R2_A6_pdu()

static int rts_recv_OUT_R2_A6_pdu ( rdpRpc *  rpc,
wStream *  buffer 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_recv_OUT_R2_B3_pdu()

static int rts_recv_OUT_R2_B3_pdu ( rdpRpc *  rpc,
wStream *  buffer 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_result_free()

static void rts_result_free ( p_result_t results)
static
Here is the caller graph for this function:

◆ rts_result_new()

static p_result_t* rts_result_new ( size_t  count)
static
Here is the caller graph for this function:

◆ rts_send_buffer()

static BOOL rts_send_buffer ( RpcChannel *  channel,
wStream *  s,
size_t  frag_length 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_send_CONN_A1_pdu()

BOOL rts_send_CONN_A1_pdu ( rdpRpc *  rpc)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_send_CONN_B1_pdu()

BOOL rts_send_CONN_B1_pdu ( rdpRpc *  rpc)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_send_flow_control_ack_pdu()

BOOL rts_send_flow_control_ack_pdu ( rdpRpc *  rpc)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_send_OUT_R1_A3_pdu()

BOOL rts_send_OUT_R1_A3_pdu ( rdpRpc *  rpc)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_send_OUT_R2_A7_pdu()

static int rts_send_OUT_R2_A7_pdu ( rdpRpc *  rpc)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rts_send_OUT_R2_C1_pdu()

static int rts_send_OUT_R2_C1_pdu ( rdpRpc *  rpc)
static
Here is the call graph for this function:
Here is the caller graph for this function: