FreeRDP
transport.h File Reference
#include "tcp.h"
#include "nla.h"
#include "gateway/tsg.h"
#include "gateway/rdg.h"
#include <winpr/sspi.h>
#include <winpr/wlog.h>
#include <winpr/synch.h>
#include <winpr/thread.h>
#include <winpr/stream.h>
#include <winpr/collections.h>
#include <freerdp/api.h>
#include <freerdp/crypto/tls.h>
#include <time.h>
#include <freerdp/types.h>
#include <freerdp/settings.h>
This graph shows which files directly or indirectly include this file:

Data Structures

struct  rdpTransport
 

Typedefs

typedef int(* TransportRecv) (rdpTransport *transport, wStream *stream, void *extra)
 

Enumerations

enum  TRANSPORT_LAYER {
  TRANSPORT_LAYER_TCP, TRANSPORT_LAYER_TLS, TRANSPORT_LAYER_TSG, TRANSPORT_LAYER_TSG_TLS,
  TRANSPORT_LAYER_CLOSED
}
 

Functions

FREERDP_LOCAL wStream * transport_send_stream_init (rdpTransport *transport, int size)
 
FREERDP_LOCAL BOOL transport_connect (rdpTransport *transport, const char *hostname, UINT16 port, int timeout)
 
FREERDP_LOCAL BOOL transport_attach (rdpTransport *transport, int sockfd)
 
FREERDP_LOCAL BOOL transport_disconnect (rdpTransport *transport)
 
FREERDP_LOCAL BOOL transport_connect_rdp (rdpTransport *transport)
 
FREERDP_LOCAL BOOL transport_connect_tls (rdpTransport *transport)
 
FREERDP_LOCAL BOOL transport_connect_nla (rdpTransport *transport)
 
FREERDP_LOCAL BOOL transport_accept_rdp (rdpTransport *transport)
 
FREERDP_LOCAL BOOL transport_accept_tls (rdpTransport *transport)
 
FREERDP_LOCAL BOOL transport_accept_nla (rdpTransport *transport)
 
FREERDP_LOCAL int transport_read_pdu (rdpTransport *transport, wStream *s)
 Try to read a complete PDU (NLA, fast-path or tpkt) from the underlying transport. More...
 
FREERDP_LOCAL int transport_write (rdpTransport *transport, wStream *s)
 
FREERDP_LOCAL void transport_get_fds (rdpTransport *transport, void **rfds, int *rcount)
 
FREERDP_LOCAL int transport_check_fds (rdpTransport *transport)
 
FREERDP_LOCAL DWORD transport_get_event_handles (rdpTransport *transport, HANDLE *events, DWORD nCount)
 
FREERDP_LOCAL BOOL transport_set_blocking_mode (rdpTransport *transport, BOOL blocking)
 
FREERDP_LOCAL void transport_set_gateway_enabled (rdpTransport *transport, BOOL GatewayEnabled)
 
FREERDP_LOCAL void transport_set_nla_mode (rdpTransport *transport, BOOL NlaMode)
 
FREERDP_LOCAL BOOL transport_is_write_blocked (rdpTransport *transport)
 
FREERDP_LOCAL int transport_drain_output_buffer (rdpTransport *transport)
 
FREERDP_LOCAL wStream * transport_receive_pool_take (rdpTransport *transport)
 
FREERDP_LOCAL int transport_receive_pool_return (rdpTransport *transport, wStream *pdu)
 
FREERDP_LOCAL rdpTransport * transport_new (rdpContext *context)
 
FREERDP_LOCAL void transport_free (rdpTransport *transport)
 

Typedef Documentation

typedef int(* TransportRecv) (rdpTransport *transport, wStream *stream, void *extra)

Enumeration Type Documentation

FreeRDP: A Remote Desktop Protocol Implementation Network Transport Layer

Copyright 2011 Vic Lee

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.

Enumerator
TRANSPORT_LAYER_TCP 
TRANSPORT_LAYER_TLS 
TRANSPORT_LAYER_TSG 
TRANSPORT_LAYER_TSG_TLS 
TRANSPORT_LAYER_CLOSED 

Function Documentation

FREERDP_LOCAL BOOL transport_accept_nla ( rdpTransport *  transport)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_accept_rdp ( rdpTransport *  transport)

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_accept_tls ( rdpTransport *  transport)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_attach ( rdpTransport *  transport,
int  sockfd 
)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL int transport_check_fds ( rdpTransport *  transport)

Note: transport_read_pdu tries to read one PDU from the transport layer. The ReceiveBuffer might have a position > 0 in case of a non blocking transport. If transport_read_pdu returns 0 the pdu couldn't be read at this point. Note that transport->ReceiveBuffer is replaced after each iteration of this loop with a fresh stream instance from a pool.

status: -1: error 0: success 1: redirection

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_connect ( rdpTransport *  transport,
const char *  hostname,
UINT16  port,
int  timeout 
)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_connect_nla ( rdpTransport *  transport)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_connect_rdp ( rdpTransport *  transport)

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_connect_tls ( rdpTransport *  transport)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_disconnect ( rdpTransport *  transport)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL int transport_drain_output_buffer ( rdpTransport *  transport)

Here is the caller graph for this function:

FREERDP_LOCAL void transport_free ( rdpTransport *  transport)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL DWORD transport_get_event_handles ( rdpTransport *  transport,
HANDLE *  events,
DWORD  nCount 
)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL void transport_get_fds ( rdpTransport *  transport,
void **  rfds,
int *  rcount 
)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_is_write_blocked ( rdpTransport *  transport)

Here is the caller graph for this function:

FREERDP_LOCAL rdpTransport* transport_new ( rdpContext *  context)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL int transport_read_pdu ( rdpTransport *  transport,
wStream *  s 
)

Try to read a complete PDU (NLA, fast-path or tpkt) from the underlying transport.

If possible a complete PDU is read, in case of non blocking transport this might not succeed. Except in case of an error the passed stream will point to the last byte read (correct position). When the pdu read is completed the stream is sealed and the pointer set to 0

Parameters
[in]transportrdpTransport
[in]swStream
Returns
< 0 on error; 0 if not enough data is available (non blocking mode); > 0 number of bytes of the complete pdu read

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL int transport_receive_pool_return ( rdpTransport *  transport,
wStream *  pdu 
)
FREERDP_LOCAL wStream* transport_receive_pool_take ( rdpTransport *  transport)
FREERDP_LOCAL wStream* transport_send_stream_init ( rdpTransport *  transport,
int  size 
)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL transport_set_blocking_mode ( rdpTransport *  transport,
BOOL  blocking 
)

Here is the caller graph for this function:

FREERDP_LOCAL void transport_set_gateway_enabled ( rdpTransport *  transport,
BOOL  GatewayEnabled 
)

Here is the caller graph for this function:

FREERDP_LOCAL void transport_set_nla_mode ( rdpTransport *  transport,
BOOL  NlaMode 
)

Here is the caller graph for this function:

FREERDP_LOCAL int transport_write ( rdpTransport *  transport,
wStream *  s 
)

Here is the call graph for this function:

Here is the caller graph for this function: