26#ifndef OPENVPN_RING_BUFFER_H
27#define OPENVPN_RING_BUFFER_H
39#define WINTUN_RING_CAPACITY 0x800000
40#define WINTUN_RING_TRAILING_BYTES 0x10000
41#define WINTUN_MAX_PACKET_SIZE 0xffff
42#define WINTUN_PACKET_ALIGN 4
44#define TUN_IOCTL_REGISTER_RINGS CTL_CODE(51820U, 0x970U, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
101 HANDLE send_tail_moved,
102 HANDLE receive_tail_moved)
106 DWORD bytes_returned;
108 ZeroMemory(&rr,
sizeof(rr));
119 NULL, 0, &bytes_returned, NULL);
#define WINTUN_MAX_PACKET_SIZE
#define WINTUN_RING_TRAILING_BYTES
#define WINTUN_RING_CAPACITY
#define TUN_IOCTL_REGISTER_RINGS
static bool register_ring_buffers(HANDLE device, struct tun_ring *send_ring, struct tun_ring *receive_ring, HANDLE send_tail_moved, HANDLE receive_tail_moved)
Registers ring buffers used to exchange data between userspace openvpn process and wintun kernel driv...
UCHAR data[WINTUN_MAX_PACKET_SIZE]
Struct for ring buffers registration See https://github.com/WireGuard/wintun#registering-rings.
struct tun_register_rings::@19 receive
struct tun_register_rings::@19 send
Wintun ring buffer See https://github.com/WireGuard/wintun#ring-layout.
UCHAR data[WINTUN_RING_CAPACITY+WINTUN_RING_TRAILING_BYTES]