]> git.ipfire.org Git - thirdparty/wireguard-go.git/log
thirdparty/wireguard-go.git
5 years agoversion: bump snapshot 0.0.20191012
Jason A. Donenfeld [Sat, 12 Oct 2019 20:34:10 +0000 (22:34 +0200)] 
version: bump snapshot

5 years agoMakefile: remove v prefix
Jason A. Donenfeld [Tue, 8 Oct 2019 14:48:18 +0000 (16:48 +0200)] 
Makefile: remove v prefix

5 years agowintun: expose version
Jason A. Donenfeld [Tue, 8 Oct 2019 07:58:58 +0000 (09:58 +0200)] 
wintun: expose version

5 years agouapi: allow preventing creation of new peers when updating
Jason A. Donenfeld [Sat, 28 Sep 2019 18:12:46 +0000 (20:12 +0200)] 
uapi: allow preventing creation of new peers when updating

This enables race-free updates for wg-dynamic and similar tools.

Suggested-by: Thomas Gschwantner <tharre3@gmail.com>
5 years agomod: bump versions
Jason A. Donenfeld [Sat, 21 Sep 2019 19:13:54 +0000 (21:13 +0200)] 
mod: bump versions

5 years agowinpipe: use x/sys/windows instead of syscall
Jason A. Donenfeld [Tue, 17 Sep 2019 05:39:16 +0000 (23:39 -0600)] 
winpipe: use x/sys/windows instead of syscall

5 years agowintun: use correct length for security attributes
Jason A. Donenfeld [Tue, 17 Sep 2019 01:38:33 +0000 (19:38 -0600)] 
wintun: use correct length for security attributes

5 years agotun: windows: unify error message format
Jason A. Donenfeld [Sun, 8 Sep 2019 18:52:44 +0000 (13:52 -0500)] 
tun: windows: unify error message format

5 years agoversion: bump snapshot 0.0.20190908
Jason A. Donenfeld [Sun, 8 Sep 2019 15:56:55 +0000 (10:56 -0500)] 
version: bump snapshot

5 years agomain: simplify warnings
Jason A. Donenfeld [Sun, 8 Sep 2019 15:56:00 +0000 (10:56 -0500)] 
main: simplify warnings

5 years agotun: openbsd: check for interface already being up
Jason A. Donenfeld [Sat, 7 Sep 2019 05:02:07 +0000 (00:02 -0500)] 
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>
5 years agonamespaceapi: AddSIDToBoundaryDescriptor modifies the handle
Jason A. Donenfeld [Fri, 6 Sep 2019 03:48:21 +0000 (21:48 -0600)] 
namespaceapi: AddSIDToBoundaryDescriptor modifies the handle

5 years agowintun: take mutex first always
Jason A. Donenfeld [Mon, 2 Sep 2019 03:32:28 +0000 (21:32 -0600)] 
wintun: take mutex first always

This prevents an ABA deadlock with setupapi's internal locks.

5 years agowintun: consider abandoned mutexes as released
Jason A. Donenfeld [Mon, 2 Sep 2019 03:25:47 +0000 (21:25 -0600)] 
wintun: consider abandoned mutexes as released

5 years agoipc: windows: use protected prefix
Jason A. Donenfeld [Sat, 31 Aug 2019 13:48:42 +0000 (07:48 -0600)] 
ipc: windows: use protected prefix

5 years agowinpipe: enforce ownership of client connection
Jason A. Donenfeld [Fri, 30 Aug 2019 19:21:47 +0000 (13:21 -0600)] 
winpipe: enforce ownership of client connection

5 years agowintun: put mutex into private namespace
Jason A. Donenfeld [Fri, 30 Aug 2019 16:31:27 +0000 (10:31 -0600)] 
wintun: put mutex into private namespace

5 years agonamespaceapi: fix mistake
Jason A. Donenfeld [Fri, 30 Aug 2019 15:59:25 +0000 (09:59 -0600)] 
namespaceapi: fix mistake

5 years agonamespaceapi: initial version
Simon Rozman [Fri, 30 Aug 2019 12:41:33 +0000 (14:41 +0200)] 
namespaceapi: initial version

Signed-off-by: Simon Rozman <simon@rozman.si>
5 years agowintun: take mutex so that deletion uses the right name
Jason A. Donenfeld [Thu, 29 Aug 2019 23:42:28 +0000 (17:42 -0600)] 
wintun: take mutex so that deletion uses the right name

5 years agowintun: move ring constants into module
Jason A. Donenfeld [Thu, 29 Aug 2019 18:47:16 +0000 (12:47 -0600)] 
wintun: move ring constants into module

5 years agowintun: delete all interfaces is not used anymore
Jason A. Donenfeld [Thu, 29 Aug 2019 18:22:15 +0000 (12:22 -0600)] 
wintun: delete all interfaces is not used anymore

5 years agowintun: Wintun->Interface
Jason A. Donenfeld [Thu, 29 Aug 2019 18:20:40 +0000 (12:20 -0600)] 
wintun: Wintun->Interface

5 years agowintun: keep reference to pool in wintun object
Jason A. Donenfeld [Thu, 29 Aug 2019 18:13:16 +0000 (12:13 -0600)] 
wintun: keep reference to pool in wintun object

5 years agowintun: introduce adapter pools
Simon Rozman [Thu, 29 Aug 2019 16:00:44 +0000 (18:00 +0200)] 
wintun: introduce adapter pools

This makes wintun package reusable for non-WireGuard applications.

Signed-off-by: Simon Rozman <simon@rozman.si>
5 years agowintun: simplify rename logic
Jason A. Donenfeld [Thu, 29 Aug 2019 01:31:20 +0000 (19:31 -0600)] 
wintun: simplify rename logic

5 years agowintun: give better errors when ndis interface listing fails
Jason A. Donenfeld [Wed, 28 Aug 2019 14:39:26 +0000 (08:39 -0600)] 
wintun: give better errors when ndis interface listing fails

5 years agowintun: also check for numbered suffix and friendly name
Jason A. Donenfeld [Wed, 28 Aug 2019 14:08:07 +0000 (08:08 -0600)] 
wintun: also check for numbered suffix and friendly name

5 years agowintun: upgrade deleting all interfaces and make it reusable
Simon Rozman [Wed, 28 Aug 2019 09:39:01 +0000 (11:39 +0200)] 
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>
5 years agowintun: cleanup earlier
Jason A. Donenfeld [Tue, 27 Aug 2019 16:54:49 +0000 (10:54 -0600)] 
wintun: cleanup earlier

5 years agowintun: rename duplicate adapters instead of ourselves
Jason A. Donenfeld [Tue, 27 Aug 2019 16:09:16 +0000 (10:09 -0600)] 
wintun: rename duplicate adapters instead of ourselves

5 years agowintun: match suffix numbers
Jason A. Donenfeld [Mon, 26 Aug 2019 20:46:43 +0000 (14:46 -0600)] 
wintun: match suffix numbers

5 years agodevice: getsockname on linux to determine port
Jason A. Donenfeld [Sun, 25 Aug 2019 18:45:13 +0000 (12:45 -0600)] 
device: getsockname on linux to determine port

It turns out Go isn't passing the pointer properly so we wound up with a
zero port every time.

5 years agowintun: make description consistent across fields
Jason A. Donenfeld [Sat, 24 Aug 2019 10:29:17 +0000 (12:29 +0200)] 
wintun: make description consistent across fields

5 years agowintun: try multiple names until one isn't a duplicate
Jason A. Donenfeld [Thu, 22 Aug 2019 06:52:59 +0000 (08:52 +0200)] 
wintun: try multiple names until one isn't a duplicate

5 years agowintun: use nci.dll directly instead of buggy netshell
Jason A. Donenfeld [Wed, 21 Aug 2019 06:40:44 +0000 (08:40 +0200)] 
wintun: use nci.dll directly instead of buggy netshell

5 years agowintun: set friendly a bit better
Jason A. Donenfeld [Tue, 20 Aug 2019 13:48:08 +0000 (15:48 +0200)] 
wintun: set friendly a bit better

This is still wrong, but NETSETUPPKEY_Driver_FriendlyName seems a bit
tricky to use.

5 years agowintun: also set friendly name after setting interface name
Jason A. Donenfeld [Mon, 19 Aug 2019 07:20:23 +0000 (09:20 +0200)] 
wintun: also set friendly name after setting interface name

5 years agowintun: defer requires unique variable
Jason A. Donenfeld [Mon, 19 Aug 2019 07:11:21 +0000 (09:11 +0200)] 
wintun: defer requires unique variable

5 years agowintun: set adapter description name
Jason A. Donenfeld [Mon, 19 Aug 2019 07:01:53 +0000 (09:01 +0200)] 
wintun: set adapter description name

5 years agotun: windows: don't spin unless we really need it
Jason A. Donenfeld [Sun, 18 Aug 2019 09:49:37 +0000 (11:49 +0200)] 
tun: windows: don't spin unless we really need it

6 years agoversion: bump snapshot 0.0.20190805
Jason A. Donenfeld [Mon, 5 Aug 2019 17:29:12 +0000 (19:29 +0200)] 
version: bump snapshot

6 years agodevice: drop lock before expiring keys
Jason A. Donenfeld [Mon, 5 Aug 2019 15:46:34 +0000 (17:46 +0200)] 
device: drop lock before expiring keys

6 years agouapi: skip peers with invalid keys
Jason A. Donenfeld [Mon, 5 Aug 2019 14:57:41 +0000 (16:57 +0200)] 
uapi: skip peers with invalid keys

6 years agotun: windows: spin for only a millisecond/80
Jason A. Donenfeld [Sat, 3 Aug 2019 17:05:53 +0000 (19:05 +0200)] 
tun: windows: spin for only a millisecond/80

Performance stays the same as before.

6 years agowintun: merge opening device registry key
Simon Rozman [Fri, 2 Aug 2019 13:48:41 +0000 (15:48 +0200)] 
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>
6 years agowintun: simplify checking reboot requirement
Simon Rozman [Fri, 2 Aug 2019 13:37:08 +0000 (15:37 +0200)] 
wintun: simplify checking reboot requirement

We never checked checkReboot() reported error anyway.

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agowintun: refactor `err == nil` error checking
Simon Rozman [Fri, 2 Aug 2019 12:53:02 +0000 (14:53 +0200)] 
wintun: refactor `err == nil` error checking

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agowintun: handle error for deadgwdetect
Jason A. Donenfeld [Fri, 2 Aug 2019 12:37:09 +0000 (14:37 +0200)] 
wintun: handle error for deadgwdetect

6 years agotun: darwin: do not attempt to close tun.event twice
Jason A. Donenfeld [Fri, 2 Aug 2019 10:24:00 +0000 (12:24 +0200)] 
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.

6 years agowintun: get interface path properly with cfgmgr
Jason A. Donenfeld [Tue, 23 Jul 2019 12:58:46 +0000 (14:58 +0200)] 
wintun: get interface path properly with cfgmgr

6 years agotun: windows: style
Jason A. Donenfeld [Tue, 23 Jul 2019 09:45:48 +0000 (11:45 +0200)] 
tun: windows: style

6 years agowintun: simplify resolution of dev node
Jason A. Donenfeld [Tue, 23 Jul 2019 09:45:13 +0000 (11:45 +0200)] 
wintun: simplify resolution of dev node

6 years agowintun: enable sharing of pnp node
Jason A. Donenfeld [Mon, 22 Jul 2019 15:01:27 +0000 (17:01 +0200)] 
wintun: enable sharing of pnp node

6 years agotun: windows: close event handle on shutdown
Jason A. Donenfeld [Mon, 22 Jul 2019 07:37:20 +0000 (09:37 +0200)] 
tun: windows: close event handle on shutdown

6 years agoipc: windows: match SDDL of WDK and make monkeyable
Jason A. Donenfeld [Fri, 19 Jul 2019 13:34:26 +0000 (15:34 +0200)] 
ipc: windows: match SDDL of WDK and make monkeyable

6 years agotun: windows: get rid of retry logic
Jason A. Donenfeld [Fri, 19 Jul 2019 11:51:56 +0000 (13:51 +0200)] 
tun: windows: get rid of retry logic

Things work fine on Windows 8.

6 years agotun: windows: use specific IOCTL code
Jason A. Donenfeld [Fri, 19 Jul 2019 06:30:19 +0000 (08:30 +0200)] 
tun: windows: use specific IOCTL code

6 years agodevice: do not crash on nil'd bind in windows binding
Jason A. Donenfeld [Thu, 18 Jul 2019 17:34:45 +0000 (19:34 +0200)] 
device: do not crash on nil'd bind in windows binding

6 years agotun: windows: open file at startup time
Jason A. Donenfeld [Thu, 18 Jul 2019 17:26:25 +0000 (19:26 +0200)] 
tun: windows: open file at startup time

6 years agotun: windows: silently drop packet when ring is full
Jason A. Donenfeld [Thu, 18 Jul 2019 13:48:34 +0000 (15:48 +0200)] 
tun: windows: silently drop packet when ring is full

6 years agotun: windows: switch to NDIS device object
Jason A. Donenfeld [Thu, 18 Jul 2019 10:26:57 +0000 (12:26 +0200)] 
tun: windows: switch to NDIS device object

6 years agowintun: calculate path of NDIS device object symbolic link
Jason A. Donenfeld [Thu, 18 Jul 2019 08:25:12 +0000 (10:25 +0200)] 
wintun: calculate path of NDIS device object symbolic link

6 years agotun: openbsd: don't change MTU when it's already the expected size
Michael Zeltner [Wed, 17 Jul 2019 21:04:01 +0000 (23:04 +0200)] 
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>
6 years agotun: windows: spin for a bit before falling back to event object
Jason A. Donenfeld [Wed, 17 Jul 2019 07:06:34 +0000 (09:06 +0200)] 
tun: windows: spin for a bit before falling back to event object

6 years agotun: windows: implement ring buffers
Simon Rozman [Thu, 11 Jul 2019 08:35:47 +0000 (10:35 +0200)] 
tun: windows: implement ring buffers

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agodevice: immediately rekey all peers after changing device private key
Jason A. Donenfeld [Thu, 11 Jul 2019 15:36:36 +0000 (17:36 +0200)] 
device: immediately rekey all peers after changing device private key

Reported-by: Derrick Pallas <derrick@pallas.us>
6 years agoREADME: update windows info
Jason A. Donenfeld [Mon, 8 Jul 2019 12:52:49 +0000 (14:52 +0200)] 
README: update windows info

6 years agotun: windows: registration of write buffer no longer required
Jason A. Donenfeld [Fri, 5 Jul 2019 05:54:25 +0000 (07:54 +0200)] 
tun: windows: registration of write buffer no longer required

6 years agotun: windows: decrease alignment to 4
Jason A. Donenfeld [Fri, 5 Jul 2019 05:53:19 +0000 (07:53 +0200)] 
tun: windows: decrease alignment to 4

6 years agotun: windows: delay initial write
Jason A. Donenfeld [Thu, 4 Jul 2019 20:41:42 +0000 (22:41 +0200)] 
tun: windows: delay initial write

Otherwise we provoke Wintun 0.3.

6 years agodevice: receive: uniform message for source address check
Jason A. Donenfeld [Mon, 1 Jul 2019 13:24:50 +0000 (15:24 +0200)] 
device: receive: uniform message for source address check

6 years agotun: windows: packetNum is unused
Jason A. Donenfeld [Mon, 1 Jul 2019 11:37:54 +0000 (13:37 +0200)] 
tun: windows: packetNum is unused

6 years agodevice: receive: simplify flush loop
Jason A. Donenfeld [Mon, 1 Jul 2019 13:23:24 +0000 (15:23 +0200)] 
device: receive: simplify flush loop

6 years agotun: windows: inform wintun of maximum buffer length for writes
Jason A. Donenfeld [Wed, 26 Jun 2019 11:27:48 +0000 (13:27 +0200)] 
tun: windows: inform wintun of maximum buffer length for writes

6 years agotun: windows: never retry open on Windows 10
Jason A. Donenfeld [Tue, 18 Jun 2019 14:08:28 +0000 (16:08 +0200)] 
tun: windows: never retry open on Windows 10

6 years agotun: remove TUN prefix from types to reduce stutter elsewhere
Matt Layher [Mon, 10 Jun 2019 21:33:40 +0000 (17:33 -0400)] 
tun: remove TUN prefix from types to reduce stutter elsewhere

Signed-off-by: Matt Layher <mdlayher@gmail.com>
6 years agodevice: update transfer counters correctly
Jason A. Donenfeld [Tue, 11 Jun 2019 16:13:52 +0000 (18:13 +0200)] 
device: update transfer counters correctly

The rule is to always update them to the full packet size minus UDP/IP
encapsulation for all authenticated packet types.

6 years agowintun: increase registry timeout
Jason A. Donenfeld [Mon, 10 Jun 2019 22:33:07 +0000 (00:33 +0200)] 
wintun: increase registry timeout

6 years agowintun: add helper for cleaning up
Jason A. Donenfeld [Mon, 10 Jun 2019 09:20:49 +0000 (11:20 +0200)] 
wintun: add helper for cleaning up

6 years agowintun: simplify error matching and remove dumb comments
Jason A. Donenfeld [Mon, 10 Jun 2019 09:10:49 +0000 (11:10 +0200)] 
wintun: simplify error matching and remove dumb comments

6 years agowintun: fix comments and remove hwnd param
Jason A. Donenfeld [Mon, 10 Jun 2019 09:02:18 +0000 (11:02 +0200)] 
wintun: fix comments and remove hwnd param

This now looks more idiomatic.

6 years agosetupapi: add SetDeviceRegistryPropertyString description
Simon Rozman [Mon, 10 Jun 2019 06:47:47 +0000 (08:47 +0200)] 
setupapi: add SetDeviceRegistryPropertyString description

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agosetupapi: unify ERROR_INSUFFICIENT_BUFFER handling
Simon Rozman [Mon, 10 Jun 2019 06:47:16 +0000 (08:47 +0200)] 
setupapi: unify ERROR_INSUFFICIENT_BUFFER handling

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agowintun: allow controlling GUID
Jason A. Donenfeld [Sun, 9 Jun 2019 17:20:17 +0000 (19:20 +0200)] 
wintun: allow controlling GUID

6 years agosetupapi: add DeviceInstanceID()
Jason A. Donenfeld [Sun, 9 Jun 2019 15:22:59 +0000 (17:22 +0200)] 
setupapi: add DeviceInstanceID()

6 years agoglobal: fixup TODO comment spacing
Jason A. Donenfeld [Thu, 6 Jun 2019 21:00:15 +0000 (23:00 +0200)] 
global: fixup TODO comment spacing

6 years agowintun: guid functions are upstream
Jason A. Donenfeld [Thu, 6 Jun 2019 20:28:13 +0000 (22:28 +0200)] 
wintun: guid functions are upstream

6 years agowintun: simplify DeleteInterface method signature
Simon Rozman [Mon, 3 Jun 2019 12:16:34 +0000 (14:16 +0200)] 
wintun: simplify DeleteInterface method signature

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agowintun: don't run HrRenameConnection in separate thread
Jason A. Donenfeld [Wed, 5 Jun 2019 11:09:00 +0000 (13:09 +0200)] 
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.

6 years agotun: windows: obsolete 256 packets per exchange buffer limitation
Simon Rozman [Wed, 5 Jun 2019 09:55:28 +0000 (11:55 +0200)] 
tun: windows: obsolete 256 packets per exchange buffer limitation

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agosetupapi, wintun: replace syscall with golang.org/x/sys/windows
Simon Rozman [Tue, 4 Jun 2019 12:54:56 +0000 (14:54 +0200)] 
setupapi, wintun: replace syscall with golang.org/x/sys/windows

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agowintun: set DI_QUIETINSTALL flag for GUI-less device management
Simon Rozman [Tue, 4 Jun 2019 11:57:36 +0000 (13:57 +0200)] 
wintun: set DI_QUIETINSTALL flag for GUI-less device management

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agosetupapi: define PropChangeParams struct
Simon Rozman [Mon, 3 Jun 2019 12:12:50 +0000 (14:12 +0200)] 
setupapi: define PropChangeParams struct

This structure is required for calling DIF_PROPERTYCHANGE installer
class.

Signed-off-by: Simon Rozman <simon@rozman.si>
6 years agodevice: remove redundant return statements
Matt Layher [Mon, 3 Jun 2019 20:25:32 +0000 (16:25 -0400)] 
device: remove redundant return statements

More staticcheck fixes:

$ staticcheck ./... | grep S1023
device/noise-helpers.go:45:2: redundant return statement (S1023)
device/noise-helpers.go:54:2: redundant return statement (S1023)
device/noise-helpers.go:64:2: redundant return statement (S1023)

Signed-off-by: Matt Layher <mdlayher@gmail.com>
6 years agodevice: use bytes.Equal for equality check, simplify assertEqual
Matt Layher [Mon, 3 Jun 2019 20:44:06 +0000 (16:44 -0400)] 
device: use bytes.Equal for equality check, simplify assertEqual

Signed-off-by: Matt Layher <mdlayher@gmail.com>
6 years agodevice, ratelimiter: replace uses of time.Now().Sub() with time.Since()
Matt Layher [Mon, 3 Jun 2019 19:46:46 +0000 (15:46 -0400)] 
device, ratelimiter: replace uses of time.Now().Sub() with time.Since()

Simplification found by staticcheck:

$ staticcheck ./... | grep S1012
device/cookie.go:90:5: should use time.Since instead of time.Now().Sub (S1012)
device/cookie.go:127:5: should use time.Since instead of time.Now().Sub (S1012)
device/cookie.go:242:5: should use time.Since instead of time.Now().Sub (S1012)
device/noise-protocol.go:304:13: should use time.Since instead of time.Now().Sub (S1012)
device/receive.go:82:46: should use time.Since instead of time.Now().Sub (S1012)
device/send.go:132:5: should use time.Since instead of time.Now().Sub (S1012)
device/send.go:139:5: should use time.Since instead of time.Now().Sub (S1012)
device/send.go:235:59: should use time.Since instead of time.Now().Sub (S1012)
device/send.go:393:9: should use time.Since instead of time.Now().Sub (S1012)
ratelimiter/ratelimiter.go:79:10: should use time.Since instead of time.Now().Sub (S1012)
ratelimiter/ratelimiter.go:87:10: should use time.Since instead of time.Now().Sub (S1012)

Change applied using:

$ find . -type f -name "*.go" -exec sed -i "s/Now().Sub(/Since(/g" {} \;

Signed-off-by: Matt Layher <mdlayher@gmail.com>
6 years agoipc/winpipe: go fmt
Matt Layher [Mon, 3 Jun 2019 18:38:42 +0000 (14:38 -0400)] 
ipc/winpipe: go fmt

Signed-off-by: Matt Layher <mdlayher@gmail.com>
6 years agotun: windows: mitigate infinite loop in Flush()
Jason A. Donenfeld [Fri, 31 May 2019 13:40:08 +0000 (15:40 +0200)] 
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.

6 years agodevice: add SendKeepalivesToPeersWithCurrentKeypair for handover
Jason A. Donenfeld [Thu, 30 May 2019 13:15:54 +0000 (15:15 +0200)] 
device: add SendKeepalivesToPeersWithCurrentKeypair for handover