You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Existing mechanism of userspace notifications (by erroring out pending read requests) is not flexible enough to be used by multipeer. For instance, we need to pass:
peer-id
event type - peer deleted, key rotate, peer floated etc
For that, add a new IOCTL, which client will send and then will expect response via, for example, overlapped IO.
The text was updated successfully, but these errors were encountered:
Existing mechanism of userspace notifications
(by erroring out pending read requests) is not
flexible enough to be used by multipeer.
This adds a new OVPN_IOCTL_NOTIFY_EVENT ioctl.
When request arrives, we check if there are pending
notifications. If yes, then we complete request, writing
notification command, peer-id and peer delete reason (if applicable).
If there are no pending notifications, request is queued.
When notification occurs (such as peer keepalive timeout),
we check if there is a pending requests in the queue (see above).
If yes, we complete request with notification details. If there
are no pending requests, we add notification event to a queue.
Events queue is implemented with a C++ class and a kernel linked
lists. The queue is a member of device context. Since there is no
C++ runtime and constructors are not called for context members,
we have to use a separate method for initialization.
GitHub: OpenVPN#87
Signed-off-by: Lev Stipakov <[email protected]>
lstipakov
added a commit
to lstipakov/ovpn-dco-win
that referenced
this issue
Oct 22, 2024
Use overlapped I/O with OVPN_IOCTL_NOTIFY_EVENT ioctl
to get notifications from the kernel.
Factor out read/write/notification callbacks into own
functions for better readability.
GitHub: OpenVPN#87
Signed-off-by: Lev Stipakov <[email protected]>
Existing mechanism of userspace notifications (by erroring out pending read requests) is not flexible enough to be used by multipeer. For instance, we need to pass:
For that, add a new IOCTL, which client will send and then will expect response via, for example, overlapped IO.
The text was updated successfully, but these errors were encountered: