18#ifndef FREERDP_LIB_CORE_RDPUDP_H
19#define FREERDP_LIB_CORE_RDPUDP_H
21#include <winpr/wtypes.h>
22#include <winpr/winsock.h>
23#include <winpr/wlog.h>
25#include <freerdp/api.h>
39typedef struct rdp_udp rdpUdp;
44 RDPUDP_STATE_SYN_SENT,
45 RDPUDP_STATE_ESTABLISHED,
49#define RDPUDP_PROTOCOL_VERSION_1 0x0001
50#define RDPUDP_PROTOCOL_VERSION_2 0x0002
51#define RDPUDP_PROTOCOL_VERSION_3 0x0101
54typedef BOOL (*rdpUdpReceiveFn)(
void* custom,
const BYTE* data,
size_t length);
56FREERDP_LOCAL
void rdpudp_free(rdpUdp* udp);
59WINPR_ATTR_MALLOC(rdpudp_free, 1)
61FREERDP_LOCAL rdpUdp* rdpudp_new(wLog* log, const BYTE* cookieHash, rdpUdpReceiveFn receive,
66FREERDP_LOCAL BOOL rdpudp_connect(rdpUdp* udp, const struct sockaddr* addr,
size_t addrlen);
69FREERDP_LOCAL SOCKET rdpudp_get_socket(const rdpUdp* udp);
72FREERDP_LOCAL RDPUDP_STATE rdpudp_get_state(const rdpUdp* udp);
75FREERDP_LOCAL UINT16 rdpudp_get_version(const rdpUdp* udp);
79FREERDP_LOCAL
size_t rdpudp_get_max_payload(const rdpUdp* udp);
83FREERDP_LOCAL UINT32 rdpudp_get_timeout(const rdpUdp* udp);
88FREERDP_LOCAL BOOL rdpudp_check(rdpUdp* udp);
92FREERDP_LOCAL BOOL rdpudp_send(rdpUdp* udp, const BYTE* data,
size_t length);