]>
git.ipfire.org Git - thirdparty/wireguard-go.git/log
Florent Daigniere [Sat, 23 Feb 2019 20:50:04 +0000 (21:50 +0100)]
net: implement ECN handling, rfc6040 style
To decide whether we should use the compatibility mode or the normal
mode with a peer, we use the handshake messages as a signaling channel.
If we receive the expected ECN bits, it most likely means they're
running a compatible version.
Signed-off-by: Florent Daigniere <nextgens@freenetproject.org>
Florent Daigniere [Sat, 23 Feb 2019 13:14:09 +0000 (14:14 +0100)]
send: propagate DSCP bits to the outer tunnel
Like many, I am using WiFi a lot and often on congested networks.
Without this, Wireguard strips the DSCP bits, preventing WME from
kicking in and improving the audio/video experience.
Yes, it's technically an information leak. Who cares? It's not like if
traffic analysis based on packet sizes or timings wasn't a thing.
This is the first patch of the serie, more work has to happen on ECN
Signed-off-by: Florent Daigniere <nextgens@freenetproject.org>
Jason A. Donenfeld [Mon, 18 Feb 2019 03:44:41 +0000 (04:44 +0100)]
Change package path
Jason A. Donenfeld [Thu, 14 Feb 2019 09:59:01 +0000 (10:59 +0100)]
Bump dependencies for ARM ChaCha20
Simon Rozman [Fri, 8 Feb 2019 14:21:24 +0000 (15:21 +0100)]
wintun: Auto-calculate TUN exchange buffer size
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 8 Feb 2019 13:31:05 +0000 (14:31 +0100)]
wintun: Simplify Read method()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 8 Feb 2019 07:55:23 +0000 (08:55 +0100)]
wintun: Make constants private and adopt Go recommended case
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 8 Feb 2019 07:48:35 +0000 (08:48 +0100)]
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>
Simon Rozman [Thu, 7 Feb 2019 23:19:56 +0000 (00:19 +0100)]
wintun: Adjust tunRWQueue.left member to match Wintun driver
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 22:45:11 +0000 (23:45 +0100)]
setupapi: Merge _SP_DRVINFO_DETAIL_DATA and DrvInfoDetailData
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 22:12:58 +0000 (23:12 +0100)]
setupapi: Merge SP_DRVINFO_DATA and DrvInfoData
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 22:00:52 +0000 (23:00 +0100)]
setupapi: Rename SP_REMOVEDEVICE_PARAMS to RemoveDeviceParams
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 21:37:14 +0000 (22:37 +0100)]
setupapi: Rename SP_CLASSINSTALL_HEADER to ClassInstallHeader
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 21:35:03 +0000 (22:35 +0100)]
setupapi: Merge _SP_DEVINSTALL_PARAMS and DevInstallParams
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 21:23:03 +0000 (22:23 +0100)]
setupapi: Merge _SP_DEVINFO_LIST_DETAIL_DATA and DevInfoListDetailData
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 21:09:18 +0000 (22:09 +0100)]
setupapi: Rename SP_DEVINFO_DATA to DevInfoData
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 21:02:51 +0000 (22:02 +0100)]
wintun: Detect if a foreign interface with the same name exists
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 19:49:41 +0000 (20:49 +0100)]
wintun: Clean excessive setupapi.DevInfo.GetDeviceInfoListDetail() call
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 18:42:59 +0000 (19:42 +0100)]
wintun: Explain rationale behind case-insensitive interface names
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Feb 2019 17:49:21 +0000 (18:49 +0100)]
wintun: Implement TODO in TestSetupDiGetDeviceRegistryProperty()
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Thu, 7 Feb 2019 17:24:28 +0000 (18:24 +0100)]
wintun: add FlushInterface stub
Jason A. Donenfeld [Thu, 7 Feb 2019 14:44:07 +0000 (15:44 +0100)]
main_windows: Get iface name from argument
Jason A. Donenfeld [Thu, 7 Feb 2019 03:49:15 +0000 (04:49 +0100)]
wintun: Compare values of GUID, not pointers, when removing
Jason A. Donenfeld [Thu, 7 Feb 2019 03:42:35 +0000 (04:42 +0100)]
main_windows: Catch more exit events
Jason A. Donenfeld [Thu, 7 Feb 2019 03:18:27 +0000 (04:18 +0100)]
wintun: Introduce new package for obscuring Windows bits
Jason A. Donenfeld [Thu, 7 Feb 2019 03:08:05 +0000 (04:08 +0100)]
tun_windows: Style
Jason A. Donenfeld [Thu, 7 Feb 2019 02:24:58 +0000 (03:24 +0100)]
setupapi: Lower case params
Jason A. Donenfeld [Thu, 7 Feb 2019 01:56:31 +0000 (02:56 +0100)]
setupapi: Do not export the toGo/toWindows functions
Jason A. Donenfeld [Thu, 7 Feb 2019 01:26:50 +0000 (02:26 +0100)]
setupapi: Pass pointers instead of values
Simon Rozman [Wed, 6 Feb 2019 21:30:14 +0000 (22:30 +0100)]
tun_windows: Introduce preliminary TUN interface creation
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Wed, 6 Feb 2019 19:22:04 +0000 (20:22 +0100)]
tun_windows: Stop checking minimum size of received TUN packets
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Wed, 6 Feb 2019 19:18:44 +0000 (20:18 +0100)]
setupapi: Add DrvInfoDetailData.IsCompatible() to simplify HID detection
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Wed, 6 Feb 2019 19:17:47 +0000 (20:17 +0100)]
setupapi: Add SP_DRVINFO_DATA.IsNewer() method to simplify comparison
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Wed, 6 Feb 2019 19:15:40 +0000 (20:15 +0100)]
setupapi: Make toUTF16() public and add UTF16ToBuf() counterpart
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Tue, 5 Feb 2019 13:06:25 +0000 (22:06 +0900)]
Fix up errors and paths
Jason A. Donenfeld [Tue, 5 Feb 2019 12:55:33 +0000 (21:55 +0900)]
conn: close ipv4 socket when ipv6 socket fails
Simon Rozman [Tue, 5 Feb 2019 15:29:17 +0000 (16:29 +0100)]
setupapi: Add support for driver info lists
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Tue, 5 Feb 2019 13:03:28 +0000 (14:03 +0100)]
setupapi: Move Go<>Windows struct marshaling to types_windows.go
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Tue, 5 Feb 2019 10:44:47 +0000 (11:44 +0100)]
setupapi: Add support for SetupDi(Get|Set)DeviceRegistryProperty()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Tue, 5 Feb 2019 07:45:44 +0000 (08:45 +0100)]
setupapi: Introduce DevInfo methods for cleaner code
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 14:50:59 +0000 (15:50 +0100)]
Add support for setupapi.SetupDi(Get|Set)SelectedDevice()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 14:21:19 +0000 (15:21 +0100)]
Reorder data-types and functions to match SetupAPI.h
Adding functions with non-consistent order made setupapi package a mess.
While we could reorder data-types and functions by alphabet - it would
make searching easier - it would put ...Get... and ...Set... functions
quite apart.
Therefore, the SetupAPI.h order was adopted.
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 10:52:42 +0000 (11:52 +0100)]
Add support for setupapi.SetupDiCreateDeviceInfo()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 10:49:26 +0000 (11:49 +0100)]
Add support for setupapi.setupDiCreateDeviceInfoListEx()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 10:45:37 +0000 (11:45 +0100)]
Stop accessing SetupDiGetDeviceInfoListDetail() output on error
The data returned by SetupDiGetDeviceInfoListDetail() is nil on error
which will cause the test to crash should the function fail.
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 10:42:51 +0000 (11:42 +0100)]
Unify certain variable names
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 10:40:44 +0000 (11:40 +0100)]
Simplify SetupDiEnumDeviceInfo() synopsis
The SetupDiEnumDeviceInfo() now returns a SP_DEVINFO_DATA rather than
taking it on input to fill it on return.
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 08:51:19 +0000 (09:51 +0100)]
Change generic local variable names with meaningful replacements
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 08:36:42 +0000 (09:36 +0100)]
Add support for setupapi.SetupDiClassGuidsFromNameEx()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 07:40:06 +0000 (08:40 +0100)]
Clean an unused constant
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 07:39:31 +0000 (08:39 +0100)]
Replace SetupDiClassNameFromGuid() with SetupDiClassNameFromGuidEx()
The former is only a subset of the later. To minimize future
maintenance, we'll provide support for extended version only.
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 07:23:55 +0000 (08:23 +0100)]
Add support for setupapi.SetupDiClassNameFromGuid()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 07:22:49 +0000 (08:22 +0100)]
Stop checking for valid handle in DevInfo.Close()
User should not have called or deferred the Close() method should
SetupDiGetClassDevsEx() return an error (and invalid handle). And even
if user does that, a SetupDiDestroyDeviceInfoList(INVALID_HANDLE_VALUE)
is harmless. It just returns ERROR_INVALID_HANDLE - we have a unit test
for this in TestSetupDiDestroyDeviceInfoList().
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Feb 2019 06:50:30 +0000 (07:50 +0100)]
Add support for setupapi.SetupDiCallClassInstaller()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 1 Feb 2019 13:58:59 +0000 (14:58 +0100)]
Add support for setupapi.SetupDi(Get|Set)ClassInstallParams()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 1 Feb 2019 12:59:53 +0000 (13:59 +0100)]
Add support for setupapi.SetupDi(Get|Set)DeviceInstallParams()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 1 Feb 2019 12:00:44 +0000 (13:00 +0100)]
Add support for setupapi.SetupDiOpenDevRegKey()
Furthermore setupapi.DevInfoData has been obsoleted.
SetupDiEnumDeviceInfo() fills existing SP_DEVINFO_DATA structure now.
As other functions of SetupAPI use SP_DEVINFO_DATA, converting it to
DevInfoData and back would hurt performance.
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 1 Feb 2019 11:17:09 +0000 (12:17 +0100)]
Add support for setupapi.SetupDiEnumDeviceInfo()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 1 Feb 2019 10:51:39 +0000 (11:51 +0100)]
Update exported types and functions annotations
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 1 Feb 2019 10:39:57 +0000 (11:39 +0100)]
Add support for setupapi.SetupDiGetDeviceInfoListDetail()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 1 Feb 2019 09:58:06 +0000 (10:58 +0100)]
Finish support for setupapi.SetupDiGetClassDevsEx()
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 31 Jan 2019 14:20:11 +0000 (15:20 +0100)]
Introduce SetupAPI - Windows device and driver management API
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Mon, 4 Feb 2019 16:29:52 +0000 (17:29 +0100)]
Import windows scafolding
Jason A. Donenfeld [Sun, 3 Feb 2019 21:00:36 +0000 (22:00 +0100)]
noise: store clamped key instead of raw key
Jason A. Donenfeld [Sun, 3 Feb 2019 01:08:16 +0000 (02:08 +0100)]
tai64n: whiten nano seconds
Avoid being too precise of a time oracle.
Jason A. Donenfeld [Wed, 23 Jan 2019 21:05:07 +0000 (22:05 +0100)]
uapi: Simpler function signature
Jason A. Donenfeld [Thu, 3 Jan 2019 18:04:00 +0000 (19:04 +0100)]
Extend structs rather than embed, when possible
Jason A. Donenfeld [Wed, 2 Jan 2019 00:55:51 +0000 (01:55 +0100)]
Update copyright
Jason A. Donenfeld [Tue, 25 Dec 2018 21:56:36 +0000 (22:56 +0100)]
Properly bubble up setsockopt error from closure
Jason A. Donenfeld [Sat, 22 Dec 2018 16:34:23 +0000 (17:34 +0100)]
version: bump snapshot
Jason A. Donenfeld [Tue, 18 Dec 2018 23:35:53 +0000 (00:35 +0100)]
Make error messages consistent
Jason A. Donenfeld [Tue, 11 Dec 2018 17:33:13 +0000 (18:33 +0100)]
Freebsd is finally normal in sys/unix
Jason A. Donenfeld [Tue, 11 Dec 2018 17:21:11 +0000 (18:21 +0100)]
Separate out mark setting for Windows
Jason A. Donenfeld [Mon, 10 Dec 2018 03:23:17 +0000 (04:23 +0100)]
Use upstream's xchacha20poly1305
Jason A. Donenfeld [Mon, 10 Dec 2018 01:00:03 +0000 (02:00 +0100)]
Update go x/ libraries
Android 9's Bionic disallows inotify_init with seccomp, so we want the
latest unix change, and while we're at it, we update the others too.
Reported-by: Berk D. Demir <bdd@mindcast.org>
Go CL: https://go-review.googlesource.com/c/sys/+/153318
Fixes: https://lists.zx2c4.com/pipermail/wireguard/2018-December/003642.html
Jason A. Donenfeld [Thu, 6 Dec 2018 16:17:51 +0000 (17:17 +0100)]
tun: remove nonblock hack for linux
This is no longer necessary and actually breaks things
Reported-by: Chris Branch <cbranch@cloudflare.com>
Jason A. Donenfeld [Thu, 8 Nov 2018 02:58:01 +0000 (03:58 +0100)]
tai64n: use proper nanoseconds offset
The code before was obviously wrong.
Reported-by: Vlad Krasnov <vlad@cloudflare.com>
Jason A. Donenfeld [Tue, 6 Nov 2018 15:24:35 +0000 (16:24 +0100)]
Use darwin tun on ios
Jason A. Donenfeld [Mon, 5 Nov 2018 04:46:27 +0000 (05:46 +0100)]
uapi: typo
Jason A. Donenfeld [Thu, 1 Nov 2018 18:54:25 +0000 (19:54 +0100)]
receive: make started status uniform
Jason A. Donenfeld [Thu, 18 Oct 2018 16:15:24 +0000 (18:15 +0200)]
send: do not unlock already freed object
Jason A. Donenfeld [Thu, 18 Oct 2018 00:38:29 +0000 (02:38 +0200)]
version: bump snapshot
Jason A. Donenfeld [Wed, 17 Oct 2018 19:45:16 +0000 (21:45 +0200)]
Makefile: rename default to all
Jason A. Donenfeld [Wed, 17 Oct 2018 19:26:53 +0000 (21:26 +0200)]
tun: only call .Fd() once
Doing so tends to make the tunnel blocking, so we only retrieve it once
before we call SetNonblock, and then cache the result.
Jason A. Donenfeld [Thu, 11 Oct 2018 23:45:33 +0000 (01:45 +0200)]
Use go modules always
Jason A. Donenfeld [Thu, 11 Oct 2018 23:12:00 +0000 (01:12 +0200)]
Do not build if nothing to do
Jason A. Donenfeld [Tue, 9 Oct 2018 16:11:36 +0000 (18:11 +0200)]
Switch to go modules
Jason A. Donenfeld [Mon, 1 Oct 2018 15:58:31 +0000 (17:58 +0200)]
version: bump snapshot
Jason A. Donenfeld [Mon, 1 Oct 2018 14:11:31 +0000 (16:11 +0200)]
Adding missing queueconstants file
Chris Branch [Thu, 20 Sep 2018 12:28:53 +0000 (13:28 +0100)]
Fix transport message length check
wireguard-go has a bad length check in its transport message handling.
Although it cannot be exploited because of another length check earlier in the
function, this should be fixed regardless.
Jason A. Donenfeld [Tue, 25 Sep 2018 00:31:02 +0000 (02:31 +0200)]
Make it easy to restrict queue sizes more
Jason A. Donenfeld [Sun, 23 Sep 2018 23:52:02 +0000 (01:52 +0200)]
Fix shutdown races
Jason A. Donenfeld [Sat, 22 Sep 2018 04:29:02 +0000 (06:29 +0200)]
More pooling
Jason A. Donenfeld [Sun, 16 Sep 2018 22:43:23 +0000 (00:43 +0200)]
Fixup buffer freeing
Jason A. Donenfeld [Sun, 16 Sep 2018 21:42:31 +0000 (23:42 +0200)]
send: more precise padding calculation
Jason A. Donenfeld [Sun, 16 Sep 2018 21:10:19 +0000 (23:10 +0200)]
device: preallocated buffers scheme
Not useful now but quite possibly later.
Jason A. Donenfeld [Sun, 16 Sep 2018 19:50:58 +0000 (21:50 +0200)]
Change queueing drop order and fix memory leaks
If the queues are full, we drop the present packet, which is better for
network traffic flow. Also, we try to fix up the memory leaks with not
putting buffers from our shared pool.
Jason A. Donenfeld [Sun, 16 Sep 2018 15:30:46 +0000 (17:30 +0200)]
send: use accessor function for buffer pool
Mathias Hall-Andersen [Sun, 16 Sep 2018 13:05:08 +0000 (15:05 +0200)]
Fixed port overwrite issue on kernels without ipv6
Fixed an issue in CreateBind for Linux:
If ipv6 was not supported the error code would be
correctly identified as EAFNOSUPPORT and ipv4 binding attempted.
However the port would be set to 0,
which results in the subsequent create4 call requesting
a random port rather than the one provided to CreateBind.
This issue was identified by:
Kent Friis <leeloored@gmx.com>
Jason A. Donenfeld [Wed, 5 Sep 2018 21:54:31 +0000 (15:54 -0600)]
global: fix up copyright headers