aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLev Stipakov2019-12-17 14:50:41 +0200
committerGert Doering2019-12-17 21:00:50 +0100
commitda2e66ca74688094a3dcbf8e2ce0a3bc54478a53 (patch)
treeb0a51cb81756d9597ba5b57ae7666b195b1cab8b /include
parentd5fc4bd41616ee01816df873cb6b6567872a29e2 (diff)
downloadopenvpn-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.h10
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_ */