Jason A. Donenfeld
da61947ec3
tun: windows: mitigate infinite loop in Flush()
...
It's possible that for whatever reason, we keep returning EOF, resulting
in repeated close/open/write operations, except with empty packets.
2019-05-31 16:55:03 +02:00
Jason A. Donenfeld
d4034e5f8a
wintun: remove extra /
2019-05-26 02:20:01 +02:00
Simon Rozman
6a0a3a5406
wintun: revise GetInterface()
...
- Make foreign interface found error numeric to ease condition
detection.
- Update GetInterface() documentation.
- Make tun.CreateTUN() quit when foreign interface found before
attempting to create a Wintun interface with a duplicate name.
Creation is futile.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-05-24 09:29:57 +02:00
Simon Rozman
dc9bbec9db
setupapi: trim "Get" from getters
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-05-22 19:31:52 +02:00
Jason A. Donenfeld
a6dbe4f475
wintun: don't try to flush interface, but rather delete
2019-05-17 16:06:02 +02:00
Jason A. Donenfeld
95c70b8032
wintun: make certain methods private
2019-05-17 15:01:08 +02:00
Simon Rozman
7d5f5bcc0d
wintun: change acronyms to uppercase
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-05-17 10:22:34 +02:00
Jason A. Donenfeld
2d847a38a2
wintun: add LUID accessor
2019-05-10 21:30:23 +02:00
Simon Rozman
7e962a9932
wintun: wait for interface registry key on device creation
...
By using RegNotifyChangeKeyValue(). Also disable dead gateway detection.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-05-10 16:43:58 +02:00
Jason A. Donenfeld
2e988467c2
wintun: work around GetInterface staleness bug
2019-05-03 00:42:36 +02:00
Simon Rozman
ef5f3ad80a
tun: windows: Adopt new error codes returned by Wintun
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-04-11 19:38:11 +02:00
Simon Rozman
a291fdd746
tun: windows: do not sleep after OPERATION_ABORTED on write
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-04-11 19:37:04 +02:00
Jason A. Donenfeld
e680008700
tun: windows: do not sleep after OPERATION_ABORTED
2019-04-09 07:36:03 +02:00
Simon Rozman
767c86f8cb
tun: windows: Retry R/W on ERROR_OPERATION_ABORTED
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-04-04 09:20:18 +02:00
Simon Rozman
421c1f9143
tun: windows: Attempt to reopen handle on all errors
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-04-03 05:41:38 +02:00
Jason A. Donenfeld
92f8474832
wintun: add more retry loops
2019-04-01 09:07:43 +02:00
Jason A. Donenfeld
2e0ed4614a
tun: windows: cancel ongoing reads on closing and delete after close
...
This reverts commit 52ec440d79
and adds
some spice.
2019-03-26 16:14:32 +01:00
Jason A. Donenfeld
52ec440d79
tun: windows: delete interface before deleting file handles
2019-03-22 16:45:58 -06:00
Simon Rozman
2faf2dcf90
tun: windows: Make adapter rename asynchronous
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-03-22 16:36:30 +01:00
Simon Rozman
41c30a7279
tun: windows: Adapter devices renamed to WINTUN<LUID Index>
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-03-22 15:29:14 +01:00
Simon Rozman
4b1db1d39b
tun: windows: Increase unavailable adapter timeout to 30sec
...
5 seconds was too short when debugging.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-03-22 13:52:51 +01:00
Simon Rozman
a80db5e65e
tun: windows: Make writing persistent too
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-03-22 13:52:51 +01:00
Simon Rozman
9748a52073
tun: windows: Fix paused adapter test
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-03-22 13:52:51 +01:00
Jason A. Donenfeld
317d716d66
tun: windows: just open two file handles
2019-03-21 15:20:09 -06:00
Jason A. Donenfeld
6440f010ee
receive: implement flush semantics
2019-03-21 14:45:41 -06:00
Jason A. Donenfeld
49ea0c9b1a
tun: windows: add dummy overlapped events back
...
These seem basically wrong to me, but we get crashes without them.
2019-03-21 02:29:09 -06:00
Jason A. Donenfeld
ca59b60aa7
tun: windows: use new constants in sys
2019-03-20 23:42:30 -06:00
Simon Rozman
91b4e909bb
wintun: Use native Win32 API for I/O
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-03-21 00:56:45 +01:00
Jason A. Donenfeld
03f2e2614a
tun: windows: wintun does iocp
2019-03-18 02:42:45 -06:00
Jason A. Donenfeld
b0e0ab308d
tun: windows: temporary hack for forcing MTU
2019-03-13 02:52:32 -06:00
Simon Rozman
1fdf7b19a3
wintun: Resolve some of golint warnings
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-03-04 16:37:11 +01:00
Simon Rozman
a1aabb21ae
Elaborate the failing step when forwarding errors on return
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-03-04 16:37:11 +01:00
Jason A. Donenfeld
69f0fe67b6
global: begin modularization
2019-03-03 05:00:40 +01:00
Jason A. Donenfeld
d435be35ca
tun: windows: expose GUID
2019-03-01 00:11:12 +01:00
Jason A. Donenfeld
967d1a0f3d
tun: allow special methods in NativeTun
2019-03-01 00:05:57 +01:00
Simon Rozman
d002eff155
wintun: Read/write packet size from/to exchange buffer directly
...
Driver <-> user-space communication is local and using native endian.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-22 16:16:14 +01:00
Simon Rozman
e06a8f8f9f
wintun: Make two-step slicing a one step
...
Stop relying to Go compiler optimizations and calculate the end offset
directly.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-22 16:11:33 +01:00
Simon Rozman
ac4944a708
wintun: Write exchange buffer increased back to 1MiB
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20 20:13:33 +01:00
Simon Rozman
2491f9d454
wintun: Migrate from unsafe buffer handling to encoding/binary
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20 20:10:24 +01:00
Simon Rozman
8091c6474a
wintun: Adopt new packet data alignment
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20 19:56:10 +01:00
Simon Rozman
040da43889
wintun: Cleanup
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20 18:38:18 +01:00
Simon Rozman
b7025b5627
wintun: Add TUN device locking
...
In case reading from TUN device detected TUN device was closed, it
closed the file handle and set tunFile to nil. The tunFile is
automatically reopened on retry, but... If another packet comes in the
WireGuard calls Write() method. With tunFile set to nil, this will
cause access violation.
Therefore, locking was introduced.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20 13:12:08 +01:00
Simon Rozman
6581cfb885
wintun: Move exchange buffer in separate struct on heap
...
This allows buffer alignment and keeps it together with its meta-data.
Furthermore, the write buffer has been reduced - as long as we flush
after _every_ write, we don't need a 1MiB write buffer.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20 11:41:37 +01:00
Simon Rozman
4863089120
wintun: Switch to dynamic packet sizes
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-19 18:50:42 +01:00
Jason A. Donenfeld
42c6d0e261
Change package path
2019-02-18 05:11:39 +01:00
Simon Rozman
b719a09a26
wintun: Auto-calculate TUN exchange buffer size
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-08 15:21:24 +01:00
Simon Rozman
f05f52637f
wintun: Simplify Read method()
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-08 14:31:05 +01:00
Simon Rozman
713477cfb1
wintun: Make constants private and adopt Go recommended case
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-08 08:55:23 +01:00
Simon Rozman
5981d5cacf
wintun: Check for user close in read loop regardless the load
...
Do the WaitForSingleObject() always to provide high-load responsiveness.
Reorder events so TUN_SIGNAL_CLOSE has priority over
TUN_SIGNAL_DATA_AVAIL, to provide high-load responsiveness at all.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-08 08:48:35 +01:00
Simon Rozman
b13739ada2
wintun: Adjust tunRWQueue.left member to match Wintun driver
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-08 07:32:12 +01:00