David Crawshaw 
								
							 
						 
						
							
							
							
							
								
							
							
								de374bfb44 
								
							 
						 
						
							
							
								
								device: give handshake state a type  
							
							... 
							
							
							
							And unexport handshake constants.
Signed-off-by: David Crawshaw <crawshaw@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 
							
								 
							
						 
					 
				
					
						
							
								
								
									David Crawshaw 
								
							 
						 
						
							
							
							
							
								
							
							
								203554620d 
								
							 
						 
						
							
							
								
								conn: introduce new package that splits out the Bind and Endpoint types  
							
							... 
							
							
							
							The sticky socket code stays in the device package for now,
as it reaches deeply into the peer list.
This is the first step in an effort to split some code out of
the very busy device package.
Signed-off-by: David Crawshaw <crawshaw@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 
							
								 
							
						 
					 
				
					
						
							
								
								
									David Anderson 
								
							 
						 
						
							
							
							
							
								
							
							
								3dce460c88 
								
							 
						 
						
							
							
								
								device: add test to ensure Peer fields are safe for atomic access on 32-bit  
							
							... 
							
							
							
							Adds a test that will fail consistently on 32-bit platforms if the
struct ever changes again to violate the rules. This is likely not
needed because unaligned access crashes reliably, but this will reliably
fail even if tests accidentally pass due to lucky alignment.
Signed-Off-By: David Anderson <danderson@tailscale.com> 
							
						 
						
							2020-05-02 01:44:58 -06:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									David Crawshaw 
								
							 
						 
						
							
							
							
							
								
							
							
								224bc9e60c 
								
							 
						 
						
							
							
								
								rwcancel: no-op builds for windows and darwin  
							
							... 
							
							
							
							This lets us include the package on those platforms in a
followup commit where we split out a conn package from device.
It also lets us run `go test ./...` when developing on macOS.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com> 
							
						 
						
							2020-03-30 18:41:39 +11:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									David Crawshaw 
								
							 
						 
						
							
							
							
							
								
							
							
								9cd8909df2 
								
							 
						 
						
							
							
								
								ratelimiter: use a fake clock in tests and style cleanups  
							
							... 
							
							
							
							The existing test would occasionally flake out with:
	--- FAIL: TestRatelimiter (0.12s)
	    ratelimiter_test.go:99: Test failed for 127.0.0.1 , on: 7 ( not having refilled enough ) expected: false got: true
	FAIL
	FAIL    golang.zx2c4.com/wireguard/ratelimiter  0.171s
The fake clock also means the tests run much faster, so
testing this package with -count=1000 now takes < 100ms.
While here, several style cleanups. The most significant one
is unembeding the sync.Mutex fields in the rate limiter objects.
Embedded as they were, the lock methods were accessible
outside the ratelimiter package. As they aren't needed externally,
keep them internal to make them easier to reason about.
Passes `go test -race -count=10000 ./ratelimiter`
Signed-off-by: David Crawshaw <crawshaw@tailscale.com> 
							
						 
						
							2020-03-30 18:38:36 +11:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								ae88e2a2cd 
								
							 
						 
						
							
							
								
								version: bump snapshot  
							
							
							
						 
						
							2020-03-20 12:00:53 -06:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								4739708ca4 
								
							 
						 
						
							
							
								
								noise: unify zero checking of ecdh  
							
							
							
						 
						
							2020-03-17 23:07:14 -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 
								
							 
						 
						
							
							
							
							
								
							
							
								9cbcff10dd 
								
							 
						 
						
							
							
								
								send: account for zero mtu  
							
							... 
							
							
							
							Don't divide by zero. 
							
						 
						
							2020-02-14 18:53:55 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								6ed56ff2df 
								
							 
						 
						
							
							
								
								device: fix private key removal logic  
							
							
							
						 
						
							2020-02-04 22:02:53 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								cb4bb63030 
								
							 
						 
						
							
							
								
								uapi: allow unsetting device private key with /dev/null  
							
							
							
						 
						
							2020-02-04 22:02:53 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								05b03c6750 
								
							 
						 
						
							
							
								
								version: bump snapshot  
							
							
							
						 
						
							2020-01-21 16:27:19 +01: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 
								
							 
						 
						
							
							
							
							
								
							
							
								89dd065e53 
								
							 
						 
						
							
							
								
								README: update repo urls  
							
							
							
						 
						
							2019-12-30 11:53:39 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								ddfad453cf 
								
							 
						 
						
							
							
								
								device: SendmsgN mutates the input sockaddr  
							
							... 
							
							
							
							So we take a new granular lock to prevent concurrent writes from
racing.
WARNING: DATA RACE
Write at 0x00c0011f2740 by goroutine 27:
  golang.org/x/sys/unix.(*SockaddrInet4).sockaddr()
      /go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:384
+0x114
  golang.org/x/sys/unix.SendmsgN()
      /go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:1304
+0x288
  golang.zx2c4.com/wireguard/device.send4()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:485
+0x11f
  golang.zx2c4.com/wireguard/device.(*nativeBind).Send()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:268
+0x1d6
  golang.zx2c4.com/wireguard/device.(*Peer).SendBuffer()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/peer.go:151
+0x285
  golang.zx2c4.com/wireguard/device.(*Peer).SendHandshakeInitiation()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:163
+0x692
  golang.zx2c4.com/wireguard/device.(*Device).RoutineReadFromTUN()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:318
+0x4b8
Previous write at 0x00c0011f2740 by goroutine 386:
  golang.org/x/sys/unix.(*SockaddrInet4).sockaddr()
      /go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:384
+0x114
  golang.org/x/sys/unix.SendmsgN()
      /go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:1304
+0x288
  golang.zx2c4.com/wireguard/device.send4()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:485
+0x11f
  golang.zx2c4.com/wireguard/device.(*nativeBind).Send()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:268
+0x1d6
  golang.zx2c4.com/wireguard/device.(*Peer).SendBuffer()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/peer.go:151
+0x285
  golang.zx2c4.com/wireguard/device.(*Peer).SendHandshakeInitiation()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:163
+0x692
  golang.zx2c4.com/wireguard/device.expiredRetransmitHandshake()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/timers.go:110
+0x40c
  golang.zx2c4.com/wireguard/device.(*Peer).NewTimer.func1()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/timers.go:42
+0xd8
Goroutine 27 (running) created at:
  golang.zx2c4.com/wireguard/device.NewDevice()
      /go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/device.go:322
+0x5e8
  main.main()
      /go/src/x/main.go:102 +0x58e
Goroutine 386 (finished) created at:
  time.goFunc()
      /usr/local/go/src/time/sleep.go:168 +0x51
Reported-by: Ben Burkert <ben@benburkert.com> 
							
						 
						
							2019-11-28 11:11:13 +01: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 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								4cdf805b29 
								
							 
						 
						
							
							
								
								constants: recalculate rekey max based on a one minute flood  
							
							... 
							
							
							
							Discussed-with: Mathias Hall-Andersen <mathias@hall-andersen.dk> 
							
						 
						
							2019-10-30 14:29:32 +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 
								
							 
						 
						
							
							
							
							
								
							
							
								ffffbbcc8a 
								
							 
						 
						
							
							
								
								device: allow blackholing sockets  
							
							
							
						 
						
							2019-10-21 13:29:57 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								47b02c618b 
								
							 
						 
						
							
							
								
								device: remove dead error reporting code  
							
							
							
						 
						
							2019-10-21 11:46:54 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								fd23c66fcd 
								
							 
						 
						
							
							
								
								namespaceapi: remove tasteless comment  
							
							
							
						 
						
							2019-10-21 09:02:29 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								ae492d1b35 
								
							 
						 
						
							
							
								
								device: recheck counters while holding write lock  
							
							
							
						 
						
							2019-10-17 15:43:06 +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 
							
								 
							
						 
					 
				
					
						
							
								
								
									Avery Pennarun 
								
							 
						 
						
							
							
							
							
								
							
							
								0abb6b668c 
								
							 
						 
						
							
							
								
								rwcancel: handle EINTR and EAGAIN in unixSelect()  
							
							... 
							
							
							
							On my Chromebook (Linux 4.19.44 in a VM) and on an AWS EC2
machine, select() was sometimes returning EINTR. This is
harmless and just means you should try again. So let's try
again.
This eliminates a problem where the tunnel fails to come up
correctly and the program needs to be restarted.
Signed-off-by: Avery Pennarun <apenwarr@gmail.com> 
							
						 
						
							2019-10-17 15:19:17 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									David Crawshaw 
								
							 
						 
						
							
							
							
							
								
							
							
								540d01e54a 
								
							 
						 
						
							
							
								
								device: test packets between two fake devices  
							
							... 
							
							
							
							Signed-off-by: David Crawshaw <crawshaw@tailscale.io> 
							
						 
						
							2019-10-16 11:38:28 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								f2ea85e9f9 
								
							 
						 
						
							
							
								
								version: bump snapshot  
							
							
							
						 
						
							2019-10-12 22:34:10 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								222f0f8000 
								
							 
						 
						
							
							
								
								Makefile: remove v prefix  
							
							
							
						 
						
							2019-10-08 16:48:18 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								1f146a5e7a 
								
							 
						 
						
							
							
								
								wintun: expose version  
							
							
							
						 
						
							2019-10-08 09:58:58 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								f2501aa6c8 
								
							 
						 
						
							
							
								
								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> 
							
						 
						
							2019-10-04 11:41:02 +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 
								
							 
						 
						
							
							
							
							
								
							
							
								7c97fdb1e3 
								
							 
						 
						
							
							
								
								version: bump snapshot  
							
							
							
						 
						
							2019-09-08 10:56:55 -05:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								84b5a4d83d 
								
							 
						 
						
							
							
								
								main: simplify warnings  
							
							
							
						 
						
							2019-09-08 10:56:00 -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 
								
							 
						 
						
							
							
							
							
								
							
							
								7937840f96 
								
							 
						 
						
							
							
								
								ipc: windows: use protected prefix  
							
							
							
						 
						
							2019-08-31 07:48:42 -06:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								e4b957183c 
								
							 
						 
						
							
							
								
								winpipe: enforce ownership of client connection  
							
							
							
						 
						
							2019-08-30 13:21: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