20#ifndef FREERDP_LIB_CORE_MULTITRANSPORT_H
21#define FREERDP_LIB_CORE_MULTITRANSPORT_H
23typedef struct rdp_multitransport rdpMultitransport;
28#include <freerdp/freerdp.h>
29#include <freerdp/api.h>
31#include <winpr/stream.h>
35 INITIATE_REQUEST_PROTOCOL_UDPFECR = 0x01,
36 INITIATE_REQUEST_PROTOCOL_UDPFECL = 0x02
37} MultitransportRequestProtocol;
39typedef state_run_t (*MultiTransportRequestCb)(rdpMultitransport* multi, UINT32 reqId,
40 UINT16 reqProto,
const BYTE* cookie);
41typedef state_run_t (*MultiTransportResponseCb)(rdpMultitransport* multi, UINT32 reqId,
44#define RDPUDP_COOKIE_LEN 16
45#define RDPUDP_COOKIE_HASHLEN 32
47FREERDP_LOCAL state_run_t multitransport_recv_request(rdpMultitransport* multi,
wStream* s);
48FREERDP_LOCAL state_run_t multitransport_server_request(rdpMultitransport* multi, UINT16 reqProto);
50FREERDP_LOCAL state_run_t multitransport_recv_response(rdpMultitransport* multi,
wStream* s);
51FREERDP_LOCAL BOOL multitransport_client_send_response(rdpMultitransport* multi, UINT32 reqId,
54FREERDP_LOCAL
void multitransport_free(rdpMultitransport* multi);
56WINPR_ATTR_MALLOC(multitransport_free, 1)
57FREERDP_LOCAL rdpMultitransport* multitransport_new(rdpRdp* rdp, UINT16 protocol);