FreeRDP
libfreerdp/core/gateway/rpc.c File Reference
#include <freerdp/config.h>
#include "../settings.h"
#include <winpr/crt.h>
#include <winpr/assert.h>
#include <winpr/tchar.h>
#include <winpr/synch.h>
#include <winpr/dsparse.h>
#include <winpr/crypto.h>
#include <freerdp/log.h>
#include "../proxy.h"
#include "http.h"
#include "../credssp_auth.h"
#include "ncacn_http.h"
#include "rpc_bind.h"
#include "rpc_fault.h"
#include "rpc_client.h"
#include "rpc.h"
#include "rts.h"

Macros

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

Functions

static const char * client_in_state_str (CLIENT_IN_CHANNEL_STATE state)
 
static const char * client_out_state_str (CLIENT_OUT_CHANNEL_STATE state)
 
const char * rpc_vc_state_str (VIRTUAL_CONNECTION_STATE state)
 
void rpc_pdu_header_print (wLog *log, const rpcconn_hdr_t *header)
 
rpcconn_common_hdr_t rpc_pdu_header_init (const rdpRpc *rpc)
 
size_t rpc_offset_align (size_t *offset, size_t alignment)
 
size_t rpc_offset_pad (size_t *offset, size_t pad)
 
BOOL rpc_get_stub_data_info (rdpRpc *rpc, const rpcconn_hdr_t *header, size_t *poffset, size_t *length)
 
SSIZE_T rpc_channel_read (RpcChannel *channel, wStream *s, size_t length)
 
SSIZE_T rpc_channel_write (RpcChannel *channel, const BYTE *data, size_t length)
 
BOOL rpc_in_channel_transition_to_state (RpcInChannel *inChannel, CLIENT_IN_CHANNEL_STATE state)
 
static int rpc_channel_rpch_init (RpcClient *client, RpcChannel *channel, const char *inout, const GUID *guid)
 
static int rpc_in_channel_init (rdpRpc *rpc, RpcInChannel *inChannel, const GUID *guid)
 
static RpcInChannelrpc_in_channel_new (rdpRpc *rpc, const GUID *guid)
 
void rpc_channel_free (RpcChannel *channel)
 
BOOL rpc_out_channel_transition_to_state (RpcOutChannel *outChannel, CLIENT_OUT_CHANNEL_STATE state)
 
static int rpc_out_channel_init (rdpRpc *rpc, RpcOutChannel *outChannel, const GUID *guid)
 
RpcOutChannelrpc_out_channel_new (rdpRpc *rpc, const GUID *guid)
 
BOOL rpc_virtual_connection_transition_to_state (rdpRpc *rpc, RpcVirtualConnection *connection, VIRTUAL_CONNECTION_STATE state)
 
static void rpc_virtual_connection_free (RpcVirtualConnection *connection)
 
static RpcVirtualConnectionrpc_virtual_connection_new (rdpRpc *rpc)
 
static BOOL rpc_channel_tls_connect (RpcChannel *channel, UINT32 timeout)
 
static int rpc_in_channel_connect (RpcInChannel *inChannel, UINT32 timeout)
 
static int rpc_out_channel_connect (RpcOutChannel *outChannel, int timeout)
 
int rpc_out_channel_replacement_connect (RpcOutChannel *outChannel, int timeout)
 
BOOL rpc_connect (rdpRpc *rpc, UINT32 timeout)
 
rdpRpc * rpc_new (rdpTransport *transport)
 
void rpc_free (rdpRpc *rpc)
 

Variables

static const char * PTYPE_STRINGS []
 

Macro Definition Documentation

◆ TAG

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

Function Documentation

◆ client_in_state_str()

static const char* client_in_state_str ( CLIENT_IN_CHANNEL_STATE  state)
static
Here is the caller graph for this function:

◆ client_out_state_str()

static const char* client_out_state_str ( CLIENT_OUT_CHANNEL_STATE  state)
static
Here is the caller graph for this function:

◆ rpc_channel_free()

void rpc_channel_free ( RpcChannel channel)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_channel_read()

SSIZE_T rpc_channel_read ( RpcChannel channel,
wStream s,
size_t  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_channel_rpch_init()

static int rpc_channel_rpch_init ( RpcClient client,
RpcChannel channel,
const char *  inout,
const GUID *  guid 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_channel_tls_connect()

static BOOL rpc_channel_tls_connect ( RpcChannel channel,
UINT32  timeout 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_channel_write()

SSIZE_T rpc_channel_write ( RpcChannel channel,
const BYTE data,
size_t  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_connect()

BOOL rpc_connect ( rdpRpc *  rpc,
UINT32  timeout 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_free()

void rpc_free ( rdpRpc *  rpc)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_get_stub_data_info()

BOOL rpc_get_stub_data_info ( rdpRpc *  rpc,
const rpcconn_hdr_t header,
size_t *  poffset,
size_t *  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_in_channel_connect()

static int rpc_in_channel_connect ( RpcInChannel inChannel,
UINT32  timeout 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_in_channel_init()

static int rpc_in_channel_init ( rdpRpc *  rpc,
RpcInChannel inChannel,
const GUID *  guid 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_in_channel_new()

static RpcInChannel* rpc_in_channel_new ( rdpRpc *  rpc,
const GUID *  guid 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_in_channel_transition_to_state()

BOOL rpc_in_channel_transition_to_state ( RpcInChannel inChannel,
CLIENT_IN_CHANNEL_STATE  state 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_new()

rdpRpc* rpc_new ( rdpTransport *  transport)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_offset_align()

size_t rpc_offset_align ( size_t *  offset,
size_t  alignment 
)
Here is the caller graph for this function:

◆ rpc_offset_pad()

size_t rpc_offset_pad ( size_t *  offset,
size_t  pad 
)
Here is the caller graph for this function:

◆ rpc_out_channel_connect()

static int rpc_out_channel_connect ( RpcOutChannel outChannel,
int  timeout 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_out_channel_init()

static int rpc_out_channel_init ( rdpRpc *  rpc,
RpcOutChannel outChannel,
const GUID *  guid 
)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_out_channel_new()

RpcOutChannel* rpc_out_channel_new ( rdpRpc *  rpc,
const GUID *  guid 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_out_channel_replacement_connect()

int rpc_out_channel_replacement_connect ( RpcOutChannel outChannel,
int  timeout 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_out_channel_transition_to_state()

BOOL rpc_out_channel_transition_to_state ( RpcOutChannel outChannel,
CLIENT_OUT_CHANNEL_STATE  state 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_pdu_header_init()

rpcconn_common_hdr_t rpc_pdu_header_init ( const rdpRpc *  rpc)
Here is the caller graph for this function:

◆ rpc_pdu_header_print()

void rpc_pdu_header_print ( wLog *  log,
const rpcconn_hdr_t header 
)

◆ rpc_vc_state_str()

const char* rpc_vc_state_str ( VIRTUAL_CONNECTION_STATE  state)
Here is the caller graph for this function:

◆ rpc_virtual_connection_free()

static void rpc_virtual_connection_free ( RpcVirtualConnection connection)
static
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_virtual_connection_new()

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

◆ rpc_virtual_connection_transition_to_state()

BOOL rpc_virtual_connection_transition_to_state ( rdpRpc *  rpc,
RpcVirtualConnection connection,
VIRTUAL_CONNECTION_STATE  state 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ PTYPE_STRINGS

const char* PTYPE_STRINGS[]
static
Initial value:
= { "PTYPE_REQUEST", "PTYPE_PING",
"PTYPE_RESPONSE", "PTYPE_FAULT",
"PTYPE_WORKING", "PTYPE_NOCALL",
"PTYPE_REJECT", "PTYPE_ACK",
"PTYPE_CL_CANCEL", "PTYPE_FACK",
"PTYPE_CANCEL_ACK", "PTYPE_BIND",
"PTYPE_BIND_ACK", "PTYPE_BIND_NAK",
"PTYPE_ALTER_CONTEXT", "PTYPE_ALTER_CONTEXT_RESP",
"PTYPE_RPC_AUTH_3", "PTYPE_SHUTDOWN",
"PTYPE_CO_CANCEL", "PTYPE_ORPHANED",
"PTYPE_RTS", "" }