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
950ca2ba8c
wintun: put mutex into private namespace
2019-08-30 11:03:21 -06: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
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
a2249449d6
wintun: get interface path properly with cfgmgr
2019-07-23 14:58:46 +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
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
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
Jason A. Donenfeld
c69d026649
tun: windows: never retry open on Windows 10
2019-06-18 17:51:29 +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
Jason A. Donenfeld
e924280baa
wintun: allow controlling GUID
2019-06-10 10:43:02 +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
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
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
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