FreeRDP
Loading...
Searching...
No Matches
libfreerdp/core/multitransport.h
1
20#ifndef FREERDP_LIB_CORE_MULTITRANSPORT_H
21#define FREERDP_LIB_CORE_MULTITRANSPORT_H
22
23typedef struct rdp_multitransport rdpMultitransport;
24
25#include "rdp.h"
26#include "state.h"
27
28#include <freerdp/freerdp.h>
29#include <freerdp/api.h>
30
31#include <winpr/stream.h>
32
33typedef enum
34{
35 INITIATE_REQUEST_PROTOCOL_UDPFECR = 0x01,
36 INITIATE_REQUEST_PROTOCOL_UDPFECL = 0x02
37} MultitransportRequestProtocol;
38
39typedef state_run_t (*MultiTransportRequestCb)(rdpMultitransport* multi, UINT32 reqId,
40 UINT16 reqProto, const BYTE* cookie);
41typedef state_run_t (*MultiTransportResponseCb)(rdpMultitransport* multi, UINT32 reqId,
42 UINT32 hrResponse);
43
44#define RDPUDP_COOKIE_LEN 16
45#define RDPUDP_COOKIE_HASHLEN 32
46
47WINPR_ATTR_NODISCARD
48FREERDP_LOCAL state_run_t multitransport_recv_request(rdpMultitransport* multi, wStream* s);
49
50WINPR_ATTR_NODISCARD
51FREERDP_LOCAL state_run_t multitransport_server_request(rdpMultitransport* multi, UINT16 reqProto);
52
53WINPR_ATTR_NODISCARD
54FREERDP_LOCAL state_run_t multitransport_recv_response(rdpMultitransport* multi, wStream* s);
55
56WINPR_ATTR_NODISCARD
57FREERDP_LOCAL BOOL multitransport_client_send_response(rdpMultitransport* multi, UINT32 reqId,
58 HRESULT hr);
59
61WINPR_ATTR_NODISCARD
62FREERDP_LOCAL HANDLE multitransport_get_event_handle(rdpMultitransport* multi);
63
65WINPR_ATTR_NODISCARD
66FREERDP_LOCAL BOOL multitransport_check(rdpMultitransport* multi);
67
70WINPR_ATTR_NODISCARD
71FREERDP_LOCAL BOOL multitransport_send_autodetect_response(rdpMultitransport* multi,
72 const BYTE* data, size_t length);
73
76WINPR_ATTR_NODISCARD
77FREERDP_LOCAL BOOL multitransport_ended_connection(const rdpMultitransport* multi);
78
80FREERDP_LOCAL void multitransport_reset(rdpMultitransport* multi);
81
82FREERDP_LOCAL void multitransport_free(rdpMultitransport* multi);
83
84WINPR_ATTR_MALLOC(multitransport_free, 1)
85WINPR_ATTR_NODISCARD
86FREERDP_LOCAL rdpMultitransport* multitransport_new(rdpRdp* rdp, UINT16 protocol);
87
88#endif /* FREERDP_LIB_CORE_MULTITRANSPORT_H */