| 
    FreeRDP
    
   | 
 
#include <winpr/wtypes.h>#include <winpr/stream.h>#include <winpr/collections.h>#include <winpr/interlocked.h>#include <freerdp/log.h>#include <freerdp/utils/ringbuffer.h>#include "../../crypto/tls.h"#include "../tcp.h"#include "../transport.h"#include "http.h"#include "../credssp_auth.h"#include <time.h>#include <winpr/sspi.h>#include <freerdp/types.h>#include <freerdp/settings.h>#include <freerdp/crypto/crypto.h>#include <freerdp/api.h>#include <winpr/print.h>
Typedefs | |
| typedef struct RPC_PDU * | PRPC_PDU | 
| typedef UINT16 | p_context_id_t | 
| typedef UINT16 | p_reject_reason_t | 
| typedef struct ndr_format_t * | ndr_format_p_t | 
| typedef version_t | p_rt_version_t | 
| typedef UINT16 | rpcrt_reason_code_t | 
| #define CALLED_PADDR_UNKNOWN 3 | 
| #define DEFAULT_CONTEXT_NOT_SUPPORTED 5 | 
| #define DEFINE_RPC_FAULT_CODE | ( | _code, | |
| cat | |||
| ) | 
| #define LOCAL_LIMIT_EXCEEDED 2 | 
| #define nca_s_bad_actid 0x1C00000A | 
| #define nca_s_comm_failure 0x1C010001 | 
| #define nca_s_fault_addr_error 0x1C000002 | 
| #define nca_s_fault_cancel 0x1C00000D | 
| #define nca_s_fault_codeset_conv_error 0x1C000023 | 
| #define nca_s_fault_context_mismatch 0x1C00001A | 
| #define nca_s_fault_fp_div_zero 0x1C000003 | 
| #define nca_s_fault_fp_error 0x1C00000F | 
| #define nca_s_fault_fp_overflow 0x1C000005 | 
| #define nca_s_fault_fp_underflow 0x1C000004 | 
| #define nca_s_fault_ill_inst 0x1C00000E | 
| #define nca_s_fault_int_div_by_zero 0x1C000001 | 
| #define nca_s_fault_int_overflow 0x1C000010 | 
| #define nca_s_fault_invalid_bound 0x1C000007 | 
| #define nca_s_fault_invalid_tag 0x1C000006 | 
| #define nca_s_fault_no_client_stub 0x1C000025 | 
| #define nca_s_fault_object_not_found 0x1C000024 | 
| #define nca_s_fault_pipe_closed 0x1C000015 | 
| #define nca_s_fault_pipe_comm_error 0x1C000018 | 
| #define nca_s_fault_pipe_discipline 0x1C000017 | 
| #define nca_s_fault_pipe_empty 0x1C000014 | 
| #define nca_s_fault_pipe_memory 0x1C000019 | 
| #define nca_s_fault_pipe_order 0x1C000016 | 
| #define nca_s_fault_remote_comm_failure 0x1C000013 | 
| #define nca_s_fault_remote_no_memory 0x1C00001B | 
| #define nca_s_fault_string_too_long 0x1C010015 | 
| #define nca_s_fault_tx_open_failed 0x1C000022 | 
| #define nca_s_fault_unspec 0x1C000012 | 
| #define nca_s_fault_user_defined 0x1C000021 | 
| #define nca_s_invalid_checksum 0x1C00001F | 
| #define nca_s_invalid_crc 0x1C000020 | 
| #define nca_s_invalid_pres_context_id 0x1C00001C | 
| #define nca_s_manager_not_entered 0x1C00000C | 
| #define nca_s_op_rng_error 0x1C010002 | 
| #define nca_s_out_args_too_big 0x1C010013 | 
| #define nca_s_proto_error 0x1C01000B | 
| #define nca_s_rpc_version_mismatch 0x1C000008 | 
| #define nca_s_server_too_busy 0x1C010014 | 
| #define nca_s_unk_if 0x1C010003 | 
| #define nca_s_unspec_reject 0x1C000009 | 
| #define nca_s_unsupported_authn_level 0x1C00001D | 
| #define nca_s_unsupported_type 0x1C010017 | 
| #define nca_s_who_are_you_failed 0x1C00000B | 
| #define nca_s_wrong_boot_time 0x1C010006 | 
| #define nca_s_you_crashed 0x1C010009 | 
| #define ndr_c_char_ascii 0 | 
| #define ndr_c_char_ebcdic 1 | 
| #define ndr_c_float_cray 2 | 
| #define ndr_c_float_ibm 3 | 
| #define ndr_c_float_ieee 0 | 
| #define ndr_c_float_vax 1 | 
| #define ndr_c_int_big_endian 0 | 
| #define ndr_c_int_little_endian 1 | 
| #define NO_PSAP_AVAILABLE 7 | 
| #define PFC_CONC_MPX 0x10 | 
| #define PFC_DID_NOT_EXECUTE 0x20 | 
| #define PFC_FIRST_FRAG 0x01 | 
| #define PFC_LAST_FRAG 0x02 | 
| #define PFC_MAYBE 0x40 | 
| #define PFC_OBJECT_UUID 0x80 | 
| #define PFC_PENDING_CANCEL 0x04 | 
| #define PFC_RESERVED_1 0x08 | 
| #define PFC_SUPPORT_HEADER_SIGN 0x04 | 
| #define PROTOCOL_VERSION_NOT_SUPPORTED 4 | 
| #define PTYPE_ACK 0x07 | 
| #define PTYPE_ALTER_CONTEXT 0x0E | 
| #define PTYPE_ALTER_CONTEXT_RESP 0x0F | 
| #define PTYPE_BIND 0x0B | 
| #define PTYPE_BIND_ACK 0x0C | 
| #define PTYPE_BIND_NAK 0x0D | 
| #define PTYPE_CANCEL_ACK 0x0A | 
| #define PTYPE_CL_CANCEL 0x08 | 
| #define PTYPE_CO_CANCEL 0x12 | 
| #define PTYPE_FACK 0x09 | 
| #define PTYPE_FAULT 0x03 | 
| #define PTYPE_NOCALL 0x05 | 
| #define PTYPE_ORPHANED 0x13 | 
| #define PTYPE_PING 0x01 | 
| #define PTYPE_REJECT 0x06 | 
| #define PTYPE_REQUEST 0x00 | 
CAE Specification DCE 1.1: Remote Procedure Call Document Number: C706 http://pubs.opengroup.org/onlinepubs/9629399/
| #define PTYPE_RESPONSE 0x02 | 
| #define PTYPE_RPC_AUTH_3 0x10 | 
| #define PTYPE_RTS 0x14 | 
| #define PTYPE_SHUTDOWN 0x11 | 
| #define PTYPE_WORKING 0x04 | 
| #define REASON_NOT_SPECIFIED 0 | 
| #define RPC_CL_MUST_RECV_FRAG_SIZE 1464 | 
| #define RPC_CO_MUST_RECV_FRAG_SIZE 1432 | 
| #define RPC_COMMON_FIELDS_LENGTH sizeof(rpcconn_common_hdr_t) | 
| #define RPC_PDU_FLAG_STUB 0x00000001 | 
| #define RPC_PDU_HEADER_MAX_LENGTH 32 | 
The PDU maximum header length is enough to contain either the RPC common fields or all fields up to the stub data in PDUs that use it (request, response, fault)
| #define RPC_UUID_FORMAT_ARGUMENTS | ( | _rpc_uuid | ) | 
| #define RPC_UUID_FORMAT_STRING "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x" | 
| #define RTS_PDU_HEADER_LENGTH 20 | 
| #define TEMPORARY_CONGESTION 1 | 
| #define USER_DATA_NOT_READABLE 6 | 
| typedef struct ndr_format_t * ndr_format_p_t | 
| typedef UINT16 p_context_id_t | 
| typedef UINT16 p_reject_reason_t | 
| typedef version_t p_rt_version_t | 
| typedef UINT16 rpcrt_reason_code_t | 
| enum p_cont_def_result_t | 
| enum p_provider_reason_t | 
| enum RPC_CLIENT_STATE | 
| FREERDP_LOCAL void rpc_channel_free | ( | RpcChannel * | channel | ) | 


| FREERDP_LOCAL SSIZE_T rpc_channel_read | ( | RpcChannel * | channel, | 
| wStream * | s, | ||
| size_t | length | ||
| ) | 


| FREERDP_LOCAL SSIZE_T rpc_channel_write | ( | RpcChannel * | channel, | 
| const BYTE * | data, | ||
| size_t | length | ||
| ) | 


| FREERDP_LOCAL BOOL rpc_connect | ( | rdpRpc * | rpc, | 
| UINT32 | timeout | ||
| ) | 


| FREERDP_LOCAL void rpc_free | ( | rdpRpc * | rpc | ) | 


| FREERDP_LOCAL BOOL rpc_get_stub_data_info | ( | rdpRpc * | rpc, | 
| const rpcconn_hdr_t * | header, | ||
| size_t * | offset, | ||
| size_t * | length | ||
| ) | 


| FREERDP_LOCAL BOOL rpc_in_channel_transition_to_state | ( | RpcInChannel * | inChannel, | 
| CLIENT_IN_CHANNEL_STATE | state | ||
| ) | 


| FREERDP_LOCAL rdpRpc* rpc_new | ( | rdpTransport * | transport | ) | 


| FREERDP_LOCAL size_t rpc_offset_align | ( | size_t * | offset, | 
| size_t | alignment | ||
| ) | 

| FREERDP_LOCAL size_t rpc_offset_pad | ( | size_t * | offset, | 
| size_t | pad | ||
| ) | 

| FREERDP_LOCAL RpcOutChannel* rpc_out_channel_new | ( | rdpRpc * | rpc, | 
| const GUID * | guid | ||
| ) | 


| FREERDP_LOCAL int rpc_out_channel_replacement_connect | ( | RpcOutChannel * | outChannel, | 
| int | timeout | ||
| ) | 


| FREERDP_LOCAL BOOL rpc_out_channel_transition_to_state | ( | RpcOutChannel * | outChannel, | 
| CLIENT_OUT_CHANNEL_STATE | state | ||
| ) | 


| FREERDP_LOCAL rpcconn_common_hdr_t rpc_pdu_header_init | ( | const rdpRpc * | rpc | ) | 

| FREERDP_LOCAL void rpc_pdu_header_print | ( | wLog * | log, | 
| const rpcconn_hdr_t * | header | ||
| ) | 
| FREERDP_LOCAL const char* rpc_vc_state_str | ( | VIRTUAL_CONNECTION_STATE | state | ) | 

| FREERDP_LOCAL BOOL rpc_virtual_connection_transition_to_state | ( | rdpRpc * | rpc, | 
| RpcVirtualConnection * | connection, | ||
| VIRTUAL_CONNECTION_STATE | state | ||
| ) | 

