]>
git.ipfire.org Git - thirdparty/wireguard-go.git/log
Jason A. Donenfeld [Wed, 29 May 2019 16:43:17 +0000 (18:43 +0200)]
tai64n: account for whitening in test
Matt Layher [Wed, 29 May 2019 16:18:20 +0000 (12:18 -0400)]
device, tun: rearrange code and fix device tests
Signed-off-by: Matt Layher <mdlayher@gmail.com>
Jason A. Donenfeld [Sun, 26 May 2019 00:20:01 +0000 (02:20 +0200)]
wintun: remove extra /
Jason A. Donenfeld [Sat, 25 May 2019 16:10:52 +0000 (18:10 +0200)]
device: darwin actually doesn't need bound interfaces
Jason A. Donenfeld [Sat, 25 May 2019 00:07:18 +0000 (02:07 +0200)]
device: make initiations per second match kernel implementation
Jason A. Donenfeld [Fri, 24 May 2019 11:48:03 +0000 (13:48 +0200)]
device: timers: add jitter on ack failure reinitiation
Simon Rozman [Fri, 24 May 2019 07:28:50 +0000 (09:28 +0200)]
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>
Jason A. Donenfeld [Thu, 23 May 2019 13:25:53 +0000 (15:25 +0200)]
wintun: never return nil, nil
Jason A. Donenfeld [Thu, 23 May 2019 12:53:44 +0000 (14:53 +0200)]
ipc: use simplified fork of winio
Simon Rozman [Wed, 22 May 2019 17:31:52 +0000 (19:31 +0200)]
setupapi: trim "Get" from getters
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Fri, 17 May 2019 14:06:02 +0000 (16:06 +0200)]
wintun: don't try to flush interface, but rather delete
Jason A. Donenfeld [Fri, 17 May 2019 13:35:20 +0000 (15:35 +0200)]
device: fail to give bind if it doesn't exist
Jason A. Donenfeld [Fri, 17 May 2019 12:26:46 +0000 (14:26 +0200)]
wintun: make certain methods private
Jason A. Donenfeld [Fri, 17 May 2019 08:28:04 +0000 (10:28 +0200)]
version: bump snapshot
Jason A. Donenfeld [Fri, 17 May 2019 08:27:12 +0000 (10:27 +0200)]
makefile: do not show warning on non-linux
Simon Rozman [Thu, 16 May 2019 08:33:47 +0000 (10:33 +0200)]
wintun: change acronyms to uppercase
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Tue, 14 May 2019 07:09:52 +0000 (09:09 +0200)]
global: regroup all imports
Jason A. Donenfeld [Sat, 11 May 2019 15:25:48 +0000 (17:25 +0200)]
wintun: registry: fix nits
Simon Rozman [Sat, 11 May 2019 04:21:02 +0000 (06:21 +0200)]
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>
Jason A. Donenfeld [Fri, 10 May 2019 19:31:37 +0000 (21:31 +0200)]
wintun: call HrRenameConnection in another thread
Jason A. Donenfeld [Fri, 10 May 2019 19:30:23 +0000 (21:30 +0200)]
wintun: add LUID accessor
Jason A. Donenfeld [Fri, 10 May 2019 18:30:59 +0000 (20:30 +0200)]
wintun: enumerate faster by using COMPATDRIVER instead of CLASSDRIVER
Jason A. Donenfeld [Fri, 10 May 2019 18:19:11 +0000 (20:19 +0200)]
wintun: destroy devinfolist after usage
Simon Rozman [Fri, 10 May 2019 15:37:03 +0000 (17:37 +0200)]
wintun: registry: replace REG_NOTIFY with NOTIFY
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Fri, 10 May 2019 16:01:47 +0000 (18:01 +0200)]
wintun: IpConfig is a MULTI_SZ, and fix errors
Jason A. Donenfeld [Fri, 10 May 2019 15:34:03 +0000 (17:34 +0200)]
wintun: poll for device key
It's actually pretty hard to guess where it is.
Jason A. Donenfeld [Fri, 10 May 2019 14:59:24 +0000 (16:59 +0200)]
wintun: fix scope of error object
Simon Rozman [Thu, 9 May 2019 08:11:15 +0000 (10:11 +0200)]
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>
Jason A. Donenfeld [Thu, 9 May 2019 13:33:57 +0000 (15:33 +0200)]
conn: remove scope when sanity checking IP address format
Simon Rozman [Thu, 9 May 2019 09:45:14 +0000 (11:45 +0200)]
wintun: fix GUID leading zero padding
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Fri, 3 May 2019 07:37:29 +0000 (09:37 +0200)]
mod: update deps
Jason A. Donenfeld [Fri, 3 May 2019 07:34:00 +0000 (09:34 +0200)]
setupapi: safer aliasing of slice types
Jason A. Donenfeld [Thu, 2 May 2019 22:11:59 +0000 (00:11 +0200)]
wintun: work around GetInterface staleness bug
Jason A. Donenfeld [Thu, 2 May 2019 21:53:15 +0000 (23:53 +0200)]
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.
Jason A. Donenfeld [Mon, 29 Apr 2019 12:00:49 +0000 (14:00 +0200)]
wintun: try harder to open registry key
This sucks. Can we please find a deterministic way of doing this
instead?
Jason A. Donenfeld [Mon, 29 Apr 2019 06:09:38 +0000 (08:09 +0200)]
go.mod: use vendored winio
Jason A. Donenfeld [Sat, 20 Apr 2019 02:29:07 +0000 (11:29 +0900)]
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.
Simon Rozman [Fri, 19 Apr 2019 08:05:04 +0000 (10:05 +0200)]
setupapi: Fix struct size mismatches
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Fri, 19 Apr 2019 01:19:00 +0000 (10:19 +0900)]
setupapi: actually fix padding by rounding up to sizeof(void*)
Jason A. Donenfeld [Thu, 18 Apr 2019 22:53:19 +0000 (07:53 +0900)]
tun: darwin: write routeSocket variable in helper
Otherwise the race detector "complains".
Jason A. Donenfeld [Thu, 18 Apr 2019 22:48:09 +0000 (07:48 +0900)]
main: revise warnings
Jason A. Donenfeld [Thu, 18 Apr 2019 14:22:03 +0000 (23:22 +0900)]
device: send: check packet length before freeing element
Simon Rozman [Thu, 18 Apr 2019 08:37:04 +0000 (10:37 +0200)]
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>
Jason A. Donenfeld [Fri, 12 Apr 2019 23:58:53 +0000 (01:58 +0200)]
windows: use proper constants from updated x/sys
Jason A. Donenfeld [Fri, 12 Apr 2019 13:27:27 +0000 (15:27 +0200)]
conn: linux: RTA_MARK has moved to x/sys
Simon Rozman [Thu, 11 Apr 2019 17:34:43 +0000 (19:34 +0200)]
tun: windows: Adopt new error codes returned by Wintun
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 11 Apr 2019 17:37:04 +0000 (19:37 +0200)]
tun: windows: do not sleep after OPERATION_ABORTED on write
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Tue, 9 Apr 2019 08:45:36 +0000 (10:45 +0200)]
main_windows: use proper version constant
Jason A. Donenfeld [Tue, 9 Apr 2019 08:39:36 +0000 (10:39 +0200)]
version: put version in right place
Jason A. Donenfeld [Tue, 9 Apr 2019 05:37:22 +0000 (07:37 +0200)]
version: bump snapshot
Jason A. Donenfeld [Tue, 9 Apr 2019 05:36:03 +0000 (07:36 +0200)]
tun: windows: do not sleep after OPERATION_ABORTED
Simon Rozman [Thu, 4 Apr 2019 07:19:35 +0000 (09:19 +0200)]
tun: windows: Retry R/W on ERROR_OPERATION_ABORTED
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Wed, 3 Apr 2019 03:40:35 +0000 (05:40 +0200)]
tun: windows: Attempt to reopen handle on all errors
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Mon, 1 Apr 2019 10:00:33 +0000 (12:00 +0200)]
wintun: rename device using undocumented API that netsh.exe uses
Jason A. Donenfeld [Sun, 31 Mar 2019 08:17:11 +0000 (10:17 +0200)]
wintun: add more retry loops
Jason A. Donenfeld [Tue, 26 Mar 2019 14:57:53 +0000 (15:57 +0100)]
tun: windows: cancel ongoing reads on closing and delete after close
This reverts commit
52ec440d7977fad966002c3710ed9df957943407 and adds
some spice.
Jason A. Donenfeld [Fri, 22 Mar 2019 22:48:40 +0000 (16:48 -0600)]
wintun: query for NetCfgInstanceId several times
Jason A. Donenfeld [Fri, 22 Mar 2019 22:45:03 +0000 (16:45 -0600)]
tun: windows: delete interface before deleting file handles
Simon Rozman [Fri, 22 Mar 2019 14:57:23 +0000 (15:57 +0100)]
tun: windows: Make adapter rename asynchronous
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 22 Mar 2019 14:28:33 +0000 (15:28 +0100)]
tun: windows: Adapter devices renamed to WINTUN<LUID Index>
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 22 Mar 2019 11:45:31 +0000 (12:45 +0100)]
tun: windows: Increase unavailable adapter timeout to 30sec
5 seconds was too short when debugging.
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 22 Mar 2019 11:44:14 +0000 (12:44 +0100)]
tun: windows: Make writing persistent too
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 22 Mar 2019 11:40:13 +0000 (12:40 +0100)]
tun: windows: Fix paused adapter test
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Thu, 21 Mar 2019 21:20:09 +0000 (15:20 -0600)]
tun: windows: just open two file handles
Jason A. Donenfeld [Thu, 21 Mar 2019 20:43:04 +0000 (14:43 -0600)]
receive: implement flush semantics
Jason A. Donenfeld [Thu, 21 Mar 2019 06:16:07 +0000 (00:16 -0600)]
tun: windows: add dummy overlapped events back
These seem basically wrong to me, but we get crashes without them.
Jason A. Donenfeld [Thu, 21 Mar 2019 05:42:30 +0000 (23:42 -0600)]
tun: windows: use new constants in sys
Jason A. Donenfeld [Thu, 21 Mar 2019 05:40:20 +0000 (23:40 -0600)]
uapi: remove unhelpful log messages
Simon Rozman [Wed, 20 Mar 2019 20:45:40 +0000 (21:45 +0100)]
wintun: Use native Win32 API for I/O
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Tue, 19 Mar 2019 06:34:04 +0000 (00:34 -0600)]
uapi: report endpoint error
Jason A. Donenfeld [Mon, 18 Mar 2019 08:42:00 +0000 (02:42 -0600)]
tun: windows: wintun does iocp
Jason A. Donenfeld [Wed, 13 Mar 2019 08:52:32 +0000 (02:52 -0600)]
tun: windows: temporary hack for forcing MTU
Jason A. Donenfeld [Sun, 10 Mar 2019 02:47:54 +0000 (03:47 +0100)]
wintun: Poll more often
Jason A. Donenfeld [Sun, 10 Mar 2019 01:49:27 +0000 (02:49 +0100)]
uapi: make ipcerror conform to interface
Simon Rozman [Fri, 8 Mar 2019 08:45:59 +0000 (09:45 +0100)]
wintun: Make errors more descriptive
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 8 Mar 2019 08:45:18 +0000 (09:45 +0100)]
wintun: Return correct reboot-req flag on CreateInterface() error too
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 8 Mar 2019 08:43:54 +0000 (09:43 +0100)]
wintun: Fix double-quoted strings escaping on output
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Fri, 8 Mar 2019 08:42:34 +0000 (09:42 +0100)]
wintun: Introduce SetupAPI enumerator and machineName consts
Signed-off-by: Simon Rozman <simon@rozman.si>
Odd Stranne [Wed, 6 Mar 2019 13:58:25 +0000 (14:58 +0100)]
Windows: Apply strict security descriptor on pipe server
Signed-off-by: Odd Stranne <odd@mullvad.net>
Jason A. Donenfeld [Fri, 8 Mar 2019 00:40:54 +0000 (01:40 +0100)]
uapi: windows: work out pipe semantics
Pipes can be arranged like this, so that's fine. We also apply a strict
SDDL that can't be inherited and only gives access to local system.
Developed-with: Odd Stranne <odd@mullvad.net>
Simon Rozman [Thu, 7 Mar 2019 14:45:17 +0000 (15:45 +0100)]
wintun: Cleanup
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Mar 2019 14:34:34 +0000 (15:34 +0100)]
wintun: Refactor network registry key name generation
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Thu, 7 Mar 2019 14:19:27 +0000 (15:19 +0100)]
wintun: Revise interface creation wait
DIF_INSTALLDEVICE returns almost immediately, while the device
installation continues in the background. It might take a while, before
all registry keys and values are populated.
Previously, wireguard-go waited for HKLM\SYSTEM\CurrentControlSet\
Control\Class\{
4D36E972 -E325-11CE-BFC1-
08002BE10318 }\<id> registry key
only.
Followed by a SetInterfaceName() method of Wintun struct which tried to
access HKLM\SYSTEM\CurrentControlSet\Control\Network\
{
4D36E972 -E325-11CE-BFC1-
08002BE10318 }\<id>\Connection registry key
might not be available yet.
This commit loops until both registry keys are available before
returning from CreateInterface() function.
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Thu, 7 Mar 2019 01:03:48 +0000 (02:03 +0100)]
receive: squelch tear down error
Jason A. Donenfeld [Thu, 7 Mar 2019 00:51:41 +0000 (01:51 +0100)]
tun: linux: work out netpoll trick
Simon Rozman [Mon, 4 Mar 2019 13:27:16 +0000 (14:27 +0100)]
wintun: Resolve some of golint warnings
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Mar 2019 13:08:13 +0000 (14:08 +0100)]
Elaborate the failing step when forwarding errors on return
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Mar 2019 12:25:18 +0000 (13:25 +0100)]
Simplify reading NetCfgInstanceId from registry
As querying non-existing registry value and reading non-existing
registry string value both return ERROR_FILE_NOT_FOUND, we can
use later only.
Signed-off-by: Simon Rozman <simon@rozman.si>
Simon Rozman [Mon, 4 Mar 2019 10:58:02 +0000 (11:58 +0100)]
Unify interface-specific network registry key open
Signed-off-by: Simon Rozman <simon@rozman.si>
Jason A. Donenfeld [Sun, 3 Mar 2019 04:20:13 +0000 (05:20 +0100)]
tun: import mobile particularities
Jason A. Donenfeld [Sun, 3 Mar 2019 04:01:06 +0000 (05:01 +0100)]
boundif: introduce API for socket binding
Jason A. Donenfeld [Sun, 3 Mar 2019 03:04:41 +0000 (04:04 +0100)]
global: begin modularization
Jason A. Donenfeld [Thu, 28 Feb 2019 23:11:12 +0000 (00:11 +0100)]
tun: windows: expose GUID
Jason A. Donenfeld [Thu, 28 Feb 2019 23:05:57 +0000 (00:05 +0100)]
tun: allow special methods in NativeTun
Jason A. Donenfeld [Wed, 27 Feb 2019 03:10:01 +0000 (04:10 +0100)]
tun: linux: netpoll is broken for tun's epoll
So this mostly reverts the switch to Sysconn for Linux.
Issue: https://github.com/golang/go/issues/30426
Jason A. Donenfeld [Wed, 27 Feb 2019 01:20:17 +0000 (02:20 +0100)]
tun: linux: netlink sock needs cleaning up but file will be gc'd
Jason A. Donenfeld [Wed, 27 Feb 2019 00:48:58 +0000 (01:48 +0100)]
tun: use netpoll instead of rwcancel
The new sysconn function of Go 1.12 makes this possible:
package main
import "log"
import "os"
import "unsafe"
import "time"
import "syscall"
import "sync"
import "golang.org/x/sys/unix"
func main() {
fd, err := os.OpenFile("/dev/net/tun", os.O_RDWR, 0)
if err != nil {
log.Fatal(err)
}
var ifr [unix.IFNAMSIZ + 64]byte
copy(ifr[:], []byte("cheese"))
*(*uint16)(unsafe.Pointer(&ifr[unix.IFNAMSIZ])) = unix.IFF_TUN
var errno syscall.Errno
s, _ := fd.SyscallConn()
s.Control(func(fd uintptr) {
_, _, errno = unix.Syscall(
unix.SYS_IOCTL,
fd,
uintptr(unix.TUNSETIFF),
uintptr(unsafe.Pointer(&ifr[0])),
)
})
if errno != 0 {
log.Fatal(errno)
}
b := [4]byte{}
wait := sync.WaitGroup{}
wait.Add(1)
go func() {
_, err := fd.Read(b[:])
log.Print("Read errored: ", err)
wait.Done()
}()
time.Sleep(time.Second)
log.Print("Closing")
err = fd.Close()
if err != nil {
log.Print("Close errored: " , err)
}
wait.Wait()
log.Print("Exiting")
}
Jason A. Donenfeld [Wed, 27 Feb 2019 00:06:43 +0000 (01:06 +0100)]
tun: use sysconn instead of .Fd with Go 1.12
Jason A. Donenfeld [Fri, 22 Feb 2019 19:59:43 +0000 (20:59 +0100)]
Rearrange imports
Jason A. Donenfeld [Fri, 22 Feb 2019 18:33:28 +0000 (19:33 +0100)]
device: send persistent keepalive when bringing up device
Reported-by: Marcelo Bello