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 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								a12b765784 
								
							 
						 
						
							
							
								
								namespaceapi: initial version  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-08-30 15:34:17 +02: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