diff options
author | Lev Stipakov | 2019-12-17 14:50:41 +0200 |
---|---|---|
committer | Gert Doering | 2019-12-17 21:00:50 +0100 |
commit | da2e66ca74688094a3dcbf8e2ce0a3bc54478a53 (patch) | |
tree | b0a51cb81756d9597ba5b57ae7666b195b1cab8b /include | |
parent | d5fc4bd41616ee01816df873cb6b6567872a29e2 (diff) | |
download | openvpn-da2e66ca74688094a3dcbf8e2ce0a3bc54478a53.zip openvpn-da2e66ca74688094a3dcbf8e2ce0a3bc54478a53.tar.gz |
wintun: interactive service support
Wintun requires ring buffers registration to be
performed by privileged process. In order to use
openvpn with wintun by non-Administrator, we
need to use interactive service and shared memory
to register buffers.
Openvpn process creates memory mapping object and event
for send and receive ring and passes handles to interactive
service. There handles are duplicated and memory mapped
object is mapped into the address space of service process.
Then address of mapped view and event handle is passed to
wintun kernel driver.
After interactive service preformed registration,
openvpn process maps memory mapped object into
own address space. Thus mapped views in openvpn
and service process represent the same memory region.
Signed-off-by: Lev Stipakov <lev@openvpn.net>
Acked-by: Simon Rozman <simon@rozman.si>
Message-Id: <20191217125041.207-1-lstipakov@gmail.com>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg19244.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/openvpn-msg.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/openvpn-msg.h b/include/openvpn-msg.h index 66177a2..3ed6206 100644 --- a/include/openvpn-msg.h +++ b/include/openvpn-msg.h @@ -39,6 +39,7 @@ typedef enum { msg_del_block_dns, msg_register_dns, msg_enable_dhcp, + msg_register_ring_buffers } message_type_t; typedef struct { @@ -117,4 +118,13 @@ typedef struct { interface_t iface; } enable_dhcp_message_t; +typedef struct { + message_header_t header; + HANDLE device; + HANDLE send_ring_handle; + HANDLE receive_ring_handle; + HANDLE send_tail_moved; + HANDLE receive_tail_moved; +} register_ring_buffers_message_t; + #endif /* ifndef OPENVPN_MSG_H_ */ |