Tobias Klauser
3b490f30aa
tun: use SockaddrCtl from golang.org/x/sys/unix on macOS
...
Direct syscalls using unix.Syscall(unix.SYS_*, ...) are discouraged on
macOS and might not be supported in future versions. Switch to use
unix.Connect with unix.SockaddrCtl instead.
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-10-27 16:20:09 +01:00
Tobias Klauser
e6b7c4eef3
tun: use Ioctl{Get,Set}IfreqMTU from golang.org/x/sys/unix on macOS
...
Direct syscalls using unix.Syscall(unix.SYS_*, ...) are discouraged on
macOS and might not be supported in future versions. Switch to use
unix.Ioctl{Get,Set}IfreqMTU to get and set an interface's MTU.
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-10-27 16:20:09 +01:00
Tobias Klauser
8ae09213a7
tun: use IoctlCtlInfo from golang.org/x/sys/unix on macOS
...
Direct syscalls using unix.Syscall(unix.SYS_*, ...) are discouraged on
macOS and might not be supported in future versions. Switch to use
unix.IoctlCtlInfo to get the kernel control info.
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-10-27 16:20:09 +01:00
Tobias Klauser
36dc8b6994
tun: use GetsockoptString in (*NativeTun).Name on macOS
...
Direct syscalls using unix.Syscall(unix.SYS_*, ...) are discouraged on
macOS and might not be supported in future versions. Instead, use the
existing unix.GetsockoptString wrapper to get the interface name.
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-10-27 16:20:09 +01:00
Brad Fitzpatrick
58a8f05f50
tun/wintun/registry: fix Go 1.15 race/checkptr failure
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
[Jason: ran go mod tidy.]
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-10-21 18:26:10 +02:00
Jason A. Donenfeld
db0aa39b76
global: update header comments and modules
...
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-05-02 02:08:26 -06:00
Simon Rozman
fdba6c183a
wintun: make remaining HWID comparisons case insensitive
...
c85e4a410f
introduced preliminary HWID
checking to speed up Wintun adapter enumeration. However, all HWID are
case insensitive by Windows convention.
Furthermore, a device might have multiple HWIDs. When DevInfo's
DeviceRegistryProperty(SPDRP_HARDWAREID) method returns []string, all
strings returned should be checked against given hardware ID.
This issue was discovered when researching Wintun and wireguard-go on
Windows 10 ARM64. The Wintun adapter was created using devcon.exe
utility with "wintun" hardware ID, causing wireguard-go fail to
enumerate the adapter properly.
Signed-off-by: Simon Rozman <simon@rozman.si>
2020-05-02 01:50:47 -06:00
Simon Rozman
250b9795f3
setupapi: extend struct size constant definitions for arm(64)
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2020-05-02 01:50:47 -06:00
Brad Fitzpatrick
2fb0a712f0
tun: return a better error message if /dev/net/tun doesn't exist
...
It was just returning "no such file or directory" (the String of the
syscall.Errno returned by CreateTUN).
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-05-02 01:50:47 -06:00
Avery Pennarun
c76b818466
tun: NetlinkListener: don't send EventDown before sending EventUp
...
This works around a startup race condition when competing with
HackListener, which is trying to do the same job. If HackListener
detects that the tundev is running while there is still an event in the
netlink queue that says it isn't running, then the device receives a
string of events like
EventUp (HackListener)
EventDown (NetlinkListener)
EventUp (NetlinkListener)
Unfortunately, after the first EventDown, the device stops itself,
thinking incorrectly that the administrator has downed its tundev.
The device is ignoring the initial EventDown anyway, so just don't emit
it.
Signed-off-by: Avery Pennarun <apenwarr@tailscale.com>
2020-05-02 01:46:42 -06:00
David Crawshaw
1a1c3d0968
tuntest: split out testing package
...
This code is useful to other packages writing tests.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2020-05-02 01:46:42 -06:00
Brad Fitzpatrick
85a45a9651
tun: fix data race on name field
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-05-02 01:46:42 -06:00
Brad Fitzpatrick
abd287159e
tun: remove unused isUp method
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-05-02 01:46:42 -06:00
Avery Pennarun
6aefb61355
wintun: split error message for create vs open namespace.
...
Signed-off-by: Avery Pennarun <apenwarr@tailscale.com>
2020-05-02 01:44:58 -06:00
Tobias Klauser
b33219c2cf
global: use RTMGRP_* consts from x/sys/unix
...
Update the golang.org/x/sys/unix dependency and use the newly introduced
RTMGRP_* consts instead of using the corresponding RTNLGRP_* const to
create a mask.
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2020-03-17 23:07:11 -06:00
Jason A. Donenfeld
caebdfe9d0
tun: darwin: ignore ENOMEM errors
...
Coauthored-by: Andrej Mihajlov <and@mullvad.net>
2020-01-15 13:39:37 -05:00
Jason A. Donenfeld
4fa2ea6a2d
tun: windows: serialize write calls
2020-01-07 11:40:45 -05:00
Jason A. Donenfeld
2b242f9393
wintun: manage ring memory manually
...
It's large and Go's garbage collector doesn't deal with it especially
well.
2019-11-22 13:13:55 +01:00
Jonathan Tooker
f7d0edd2ec
global: fix a few typos courtesy of codespell
...
Signed-off-by: Jonathan Tooker <jonathan.tooker@netprotect.com>
2019-10-22 11:51:25 +02:00
Jason A. Donenfeld
fd23c66fcd
namespaceapi: remove tasteless comment
2019-10-21 09:02:29 +02:00
Jason A. Donenfeld
95fbfccf60
wintun: normalize variable names for their types
2019-10-17 15:30:56 +02:00
Avery Pennarun
c85e4a410f
wintun: quickly ignore non-Wintun devices
...
Some devices take ~2 seconds to enumerate on Windows if we try to get
their instance name. The hardware id property, on the other hand,
is available right away.
Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
[zx2c4: inlined this to where it makes sense, reused setupapi const]
2019-10-17 15:19:20 +02:00
Avery Pennarun
1b6c8ddbe8
tun: match windows CreateTUN signature to the Linux variant
...
Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
[zx2c4: fix default value]
2019-10-17 15:19:20 +02:00
Jason A. Donenfeld
1f146a5e7a
wintun: expose version
2019-10-08 09:58:58 +02:00
Jason A. Donenfeld
cb8d01f58a
mod: bump versions
2019-10-04 11:41:02 +02:00
Jason A. Donenfeld
01f8ef4e84
winpipe: use x/sys/windows instead of syscall
2019-09-16 23:39:16 -06:00
Jason A. Donenfeld
70f6c42556
wintun: use correct length for security attributes
2019-09-16 19:38:33 -06:00
Jason A. Donenfeld
bb0b2514c0
tun: windows: unify error message format
2019-09-08 13:52:44 -05:00
Jason A. Donenfeld
4cd06c0925
tun: openbsd: check for interface already being up
...
In some cases, we operate on an already-up interface, or the user brings
up the interface before we start monitoring. For those situations, we
should first check if the interface is already up.
This still technically races between the initial check and the start of
the route loop, but fixing that is a bit ugly and probably not worth it
at the moment.
Reported-by: Theo Buehler <tb@theobuehler.org>
2019-09-07 00:13:23 -05:00
Jason A. Donenfeld
d12eb91f9a
namespaceapi: AddSIDToBoundaryDescriptor modifies the handle
2019-09-05 21:48:21 -06:00
Jason A. Donenfeld
73d3bd9cd5
wintun: take mutex first always
...
This prevents an ABA deadlock with setupapi's internal locks.
2019-09-01 21:32:28 -06:00
Jason A. Donenfeld
f3dba4c194
wintun: consider abandoned mutexes as released
2019-09-01 21:25:47 -06:00
Jason A. Donenfeld
950ca2ba8c
wintun: put mutex into private namespace
2019-08-30 11:03:21 -06:00
Jason A. Donenfeld
df2bf34373
namespaceapi: fix mistake
2019-08-30 09:59:36 -06:00
Simon Rozman
a12b765784
namespaceapi: initial version
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-08-30 15:34:17 +02:00
Jason A. Donenfeld
14df9c3e75
wintun: take mutex so that deletion uses the right name
2019-08-30 15:34:17 +02:00
Jason A. Donenfeld
353f0956bc
wintun: move ring constants into module
2019-08-29 13:22:17 -06:00
Jason A. Donenfeld
fa7763c268
wintun: delete all interfaces is not used anymore
2019-08-29 12:22:15 -06:00
Jason A. Donenfeld
d94bae8348
wintun: Wintun->Interface
2019-08-29 12:20:40 -06:00
Jason A. Donenfeld
7689d09336
wintun: keep reference to pool in wintun object
2019-08-29 12:13:16 -06:00
Simon Rozman
69c26dc258
wintun: introduce adapter pools
...
This makes wintun package reusable for non-WireGuard applications.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-08-29 18:00:44 +02:00
Jason A. Donenfeld
e862131d3c
wintun: simplify rename logic
2019-08-28 19:31:20 -06:00
Jason A. Donenfeld
da28a3e9f3
wintun: give better errors when ndis interface listing fails
2019-08-28 08:39:26 -06:00
Jason A. Donenfeld
3bf3322b2c
wintun: also check for numbered suffix and friendly name
2019-08-28 08:08:07 -06:00
Simon Rozman
7305b4ce93
wintun: upgrade deleting all interfaces and make it reusable
...
DeleteAllInterfaces() didn't check if SPDRP_DEVICEDESC == "WireGuard
Tunnel". It deleted _all_ Wintun adapters, not just WireGuard's.
Furthermore, the DeleteAllInterfaces() was upgraded into a new function
called DeleteMatchingInterfaces() for selectively deletion. This will
be used by WireGuard to clean stale Wintun adapters.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-08-28 11:39:01 +02:00
Jason A. Donenfeld
26fb615b11
wintun: cleanup earlier
2019-08-27 11:59:15 -06:00
Jason A. Donenfeld
7fbb24afaa
wintun: rename duplicate adapters instead of ourselves
2019-08-27 11:59:15 -06:00
Jason A. Donenfeld
d9008ac35c
wintun: match suffix numbers
2019-08-26 14:46:43 -06:00
Jason A. Donenfeld
0c540ad60e
wintun: make description consistent across fields
2019-08-24 12:29:17 +02:00
Jason A. Donenfeld
3cedc22d7b
wintun: try multiple names until one isn't a duplicate
2019-08-22 08:52:59 +02:00
Jason A. Donenfeld
68fea631d8
wintun: use nci.dll directly instead of buggy netshell
2019-08-21 09:16:12 +02:00
Jason A. Donenfeld
ef23100a4f
wintun: set friendly a bit better
...
This is still wrong, but NETSETUPPKEY_Driver_FriendlyName seems a bit
tricky to use.
2019-08-20 16:06:55 +02:00
Jason A. Donenfeld
eb786cd7c1
wintun: also set friendly name after setting interface name
2019-08-19 10:12:50 +02:00
Jason A. Donenfeld
333de75370
wintun: defer requires unique variable
2019-08-19 10:12:50 +02:00
Jason A. Donenfeld
d20459dc69
wintun: set adapter description name
2019-08-19 10:12:50 +02:00
Jason A. Donenfeld
01786286c1
tun: windows: don't spin unless we really need it
2019-08-19 10:12:50 +02:00
Jason A. Donenfeld
b4010123f7
tun: windows: spin for only a millisecond/80
...
Performance stays the same as before.
2019-08-03 19:11:21 +02:00
Simon Rozman
1ff37e2b07
wintun: merge opening device registry key
...
This also introduces waiting for key to appear on initial access.
See if this resolves the issue caused by HDD power-up delay resulting in
failure to create the adapter.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-08-02 16:08:49 +02:00
Simon Rozman
f5e54932e6
wintun: simplify checking reboot requirement
...
We never checked checkReboot() reported error anyway.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-08-02 16:08:49 +02:00
Simon Rozman
73698066d1
wintun: refactor err == nil
error checking
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-08-02 15:18:58 +02:00
Jason A. Donenfeld
05ece4d167
wintun: handle error for deadgwdetect
2019-08-02 14:37:09 +02:00
Jason A. Donenfeld
6d78f89557
tun: darwin: do not attempt to close tun.event twice
...
Previously it was possible for this to race. It turns out we really
don't need to set anything to -1 anyway.
2019-08-02 12:24:17 +02:00
Jason A. Donenfeld
a2249449d6
wintun: get interface path properly with cfgmgr
2019-07-23 14:58:46 +02:00
Jason A. Donenfeld
eeeac287ef
tun: windows: style
2019-07-23 11:45:48 +02:00
Jason A. Donenfeld
b5a7cbf069
wintun: simplify resolution of dev node
2019-07-23 11:45:13 +02:00
Jason A. Donenfeld
50cd522cb0
wintun: enable sharing of pnp node
2019-07-22 17:01:27 +02:00
Jason A. Donenfeld
5ba866a5c8
tun: windows: close event handle on shutdown
2019-07-22 09:37:20 +02:00
Jason A. Donenfeld
3341e2d444
tun: windows: get rid of retry logic
...
Things work fine on Windows 8.
2019-07-19 14:01:34 +02:00
Jason A. Donenfeld
1b550f6583
tun: windows: use specific IOCTL code
2019-07-19 08:30:19 +02:00
Jason A. Donenfeld
31ff9c02fe
tun: windows: open file at startup time
2019-07-18 19:27:27 +02:00
Jason A. Donenfeld
1e39c33ab1
tun: windows: silently drop packet when ring is full
2019-07-18 15:48:34 +02:00
Jason A. Donenfeld
6c50fedd8e
tun: windows: switch to NDIS device object
2019-07-18 12:26:57 +02:00
Jason A. Donenfeld
298d759f3e
wintun: calculate path of NDIS device object symbolic link
2019-07-18 10:25:20 +02:00
Michael Zeltner
4d5819183e
tun: openbsd: don't change MTU when it's already the expected size
...
Allows for running wireguard-go as non-root user.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2019-07-18 10:25:20 +02:00
Jason A. Donenfeld
9ea9a92117
tun: windows: spin for a bit before falling back to event object
2019-07-18 10:25:20 +02:00
Simon Rozman
2e24e7dcae
tun: windows: implement ring buffers
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-07-17 14:32:13 +02:00
Jason A. Donenfeld
5c3d333f10
tun: windows: registration of write buffer no longer required
2019-07-05 14:17:48 +02:00
Jason A. Donenfeld
d8448f8a02
tun: windows: decrease alignment to 4
2019-07-05 07:53:19 +02:00
Jason A. Donenfeld
13abbdf14b
tun: windows: delay initial write
...
Otherwise we provoke Wintun 0.3.
2019-07-04 22:41:42 +02:00
Jason A. Donenfeld
b844f1b3cc
tun: windows: packetNum is unused
2019-07-01 15:23:44 +02:00
Jason A. Donenfeld
5e6eff81b6
tun: windows: inform wintun of maximum buffer length for writes
2019-06-26 13:27:48 +02:00
Jason A. Donenfeld
c69d026649
tun: windows: never retry open on Windows 10
2019-06-18 17:51:29 +02:00
Matt Layher
1f48971a80
tun: remove TUN prefix from types to reduce stutter elsewhere
...
Signed-off-by: Matt Layher <mdlayher@gmail.com>
2019-06-14 18:35:57 +02:00
Jason A. Donenfeld
41fdbf0971
wintun: increase registry timeout
2019-06-11 00:33:07 +02:00
Jason A. Donenfeld
03eee4a778
wintun: add helper for cleaning up
2019-06-10 11:34:59 +02:00
Jason A. Donenfeld
700860f8e6
wintun: simplify error matching and remove dumb comments
2019-06-10 11:10:49 +02:00
Jason A. Donenfeld
a304f69e0d
wintun: fix comments and remove hwnd param
...
This now looks more idiomatic.
2019-06-10 11:03:36 +02:00
Simon Rozman
baafe92888
setupapi: add SetDeviceRegistryPropertyString description
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-06-10 10:43:04 +02:00
Simon Rozman
a1a97d1e41
setupapi: unify ERROR_INSUFFICIENT_BUFFER handling
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-06-10 10:43:03 +02:00
Jason A. Donenfeld
e924280baa
wintun: allow controlling GUID
2019-06-10 10:43:02 +02:00
Jason A. Donenfeld
bb3f1932fa
setupapi: add DeviceInstanceID()
2019-06-10 10:43:01 +02:00
Jason A. Donenfeld
eaf17becfa
global: fixup TODO comment spacing
2019-06-06 23:00:15 +02:00
Jason A. Donenfeld
6d8b68c8f3
wintun: guid functions are upstream
2019-06-06 22:39:20 +02:00
Simon Rozman
c2ed133df8
wintun: simplify DeleteInterface method signature
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-06-06 08:58:26 +02:00
Jason A. Donenfeld
108c37a056
wintun: don't run HrRenameConnection in separate thread
...
It's very slow, but unfortunately we haven't a choice. NLA needs this to
have completed.
2019-06-05 13:09:20 +02:00
Simon Rozman
e4b0ef29a1
tun: windows: obsolete 256 packets per exchange buffer limitation
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-06-05 11:55:28 +02:00
Simon Rozman
625e445b22
setupapi, wintun: replace syscall with golang.org/x/sys/windows
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-06-04 14:54:56 +02:00
Simon Rozman
85b85e62e5
wintun: set DI_QUIETINSTALL flag for GUI-less device management
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-06-04 14:45:23 +02:00
Simon Rozman
014f736480
setupapi: define PropChangeParams struct
...
This structure is required for calling DIF_PROPERTYCHANGE installer
class.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-06-04 14:45:23 +02:00
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
Matt Layher
32912dc778
device, tun: rearrange code and fix device tests
...
Signed-off-by: Matt Layher <mdlayher@gmail.com>
2019-05-29 18:34:55 +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
Jason A. Donenfeld
8fdcf5ee30
wintun: never return nil, nil
2019-05-23 15:25:53 +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
3bf41b06ae
global: regroup all imports
2019-05-14 09:09:52 +02:00
Jason A. Donenfeld
3147f00089
wintun: registry: fix nits
2019-05-11 17:25:48 +02:00
Simon Rozman
6c1b66802f
wintun: registry: revise value reading
...
- Make getStringValueRetry() reusable for reading any value type. This
merges code from GetIntegerValueWait().
- expandString() >> toString() and extend to support REG_MULTI_SZ
(to return first value of REG_MULTI_SZ). Furthermore, doing our own
UTF-16 to UTF-8 conversion works around a bug in windows/registry's
GetStringValue() non-zero terminated string handling.
- Provide toInteger() analogous to toString()
- GetStringValueWait() tolerates and reads REG_MULTI_SZ too now. It
returns REG_MULTI_SZ[0], making GetFirstStringValueWait() redundant.
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-05-11 17:14:37 +02:00
Jason A. Donenfeld
5669ed326f
wintun: call HrRenameConnection in another thread
2019-05-10 21:31:37 +02:00
Jason A. Donenfeld
2d847a38a2
wintun: add LUID accessor
2019-05-10 21:30:23 +02:00
Jason A. Donenfeld
7a8553aef0
wintun: enumerate faster by using COMPATDRIVER instead of CLASSDRIVER
2019-05-10 20:30:59 +02:00
Jason A. Donenfeld
a6045ac042
wintun: destroy devinfolist after usage
2019-05-10 20:19:11 +02:00
Simon Rozman
1c92b48415
wintun: registry: replace REG_NOTIFY with NOTIFY
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-05-10 18:09:20 +02:00
Jason A. Donenfeld
c267965bf8
wintun: IpConfig is a MULTI_SZ, and fix errors
2019-05-10 18:06:49 +02:00
Jason A. Donenfeld
1bf1dadf15
wintun: poll for device key
...
It's actually pretty hard to guess where it is.
2019-05-10 17:34:03 +02:00
Jason A. Donenfeld
f9dcfccbb7
wintun: fix scope of error object
2019-05-10 16:59:24 +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
Simon Rozman
dcb8f1aa6b
wintun: fix GUID leading zero padding
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-05-09 12:16:21 +02:00
Jason A. Donenfeld
81ca08f1b3
setupapi: safer aliasing of slice types
2019-05-03 09:34:00 +02:00
Jason A. Donenfeld
2e988467c2
wintun: work around GetInterface staleness bug
2019-05-03 00:42:36 +02:00
Jason A. Donenfeld
46dbf54040
wintun: don't retry when not creating
...
The only time we're trying to counteract the race condition is when
we're creating a driver. When we're simply looking up all drivers, it
doesn't make sense to retry.
2019-05-02 23:53:15 +02:00
Jason A. Donenfeld
247e14693a
wintun: try harder to open registry key
...
This sucks. Can we please find a deterministic way of doing this
instead?
2019-04-29 14:00:49 +02:00
Jason A. Donenfeld
bb42ec7d18
tun: freebsd: work around numerous kernel panics on shutdown
...
There are numerous race conditions. But even this will crash it:
while true; do ifconfig tun0 create; ifconfig tun0 destroy; done
It seems like LLv6 is related, which we're not using anyway, so
explicitly disable it on the interface.
2019-04-23 18:00:23 +09:00
Simon Rozman
f1dc167901
setupapi: Fix struct size mismatches
...
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-04-19 10:08:11 +02:00
Jason A. Donenfeld
c7a26dfef3
setupapi: actually fix padding by rounding up to sizeof(void*)
2019-04-19 10:19:00 +09:00
Jason A. Donenfeld
d024393335
tun: darwin: write routeSocket variable in helper
...
Otherwise the race detector "complains".
2019-04-19 07:53:19 +09:00
Simon Rozman
5811447b38
setupapi: Revise DrvInfoDetailData struct size calculation
...
Go adds trailing padding to DrvInfoDetailData struct in GOARCH=386 which
confuses SetupAPI expecting exactly sizeof(SP_DRVINFO_DETAIL_DATA).
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-04-18 10:39:22 +02:00
Jason A. Donenfeld
e0a8c22aa6
windows: use proper constants from updated x/sys
2019-04-13 02:02:02 +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
ac25702eaf
wintun: rename device using undocumented API that netsh.exe uses
2019-04-01 12:04:44 +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
2fa80c0cb7
wintun: query for NetCfgInstanceId several times
2019-03-22 16:48:40 -06: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