FreeRDP
multitransport.h
1 
20 #ifndef FREERDP_LIB_CORE_MULTITRANSPORT_H
21 #define FREERDP_LIB_CORE_MULTITRANSPORT_H
22 
23 typedef 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 
33 typedef enum
34 {
35  INITIATE_REQUEST_PROTOCOL_UDPFECR = 0x01,
36  INITIATE_REQUEST_PROTOCOL_UDPFECL = 0x02
37 } MultitransportRequestProtocol;
38 
39 typedef state_run_t (*MultiTransportRequestCb)(rdpMultitransport* multi, UINT32 reqId,
40  UINT16 reqProto, const BYTE* cookie);
41 typedef 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 
47 FREERDP_LOCAL state_run_t multitransport_recv_request(rdpMultitransport* multi, wStream* s);
48 FREERDP_LOCAL state_run_t multitransport_server_request(rdpMultitransport* multi, UINT16 reqProto);
49 
50 FREERDP_LOCAL state_run_t multitransport_recv_response(rdpMultitransport* multi, wStream* s);
51 FREERDP_LOCAL BOOL multitransport_client_send_response(rdpMultitransport* multi, UINT32 reqId,
52  HRESULT hr);
53 
54 FREERDP_LOCAL void multitransport_free(rdpMultitransport* multi);
55 
56 WINPR_ATTR_MALLOC(multitransport_free, 1)
57 FREERDP_LOCAL rdpMultitransport* multitransport_new(rdpRdp* rdp, UINT16 protocol);
58 
59 #endif /* FREERDP_LIB_CORE_MULTITRANSPORT_H */