Avery Pennarun 
								
							 
						 
						
							
							
							
							
								
							
							
								d60857e1a7 
								
							 
						 
						
							
							
								
								device: add debug logs describing handshake rejection  
							
							... 
							
							
							
							Useful in testing when bad network stacks repeat or
batch large numbers of packets.
Signed-off-by: Avery Pennarun <apenwarr@tailscale.com> 
							
						 
						
							2020-05-02 01:50:47 -06:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									David Anderson 
								
							 
						 
						
							
							
							
							
								
							
							
								f2c6faad44 
								
							 
						 
						
							
							
								
								device: return generic error from Ipc{Get,Set}Operation.  
							
							... 
							
							
							
							This makes uapi.go's public API conform to Go style in terms
of error types.
Signed-off-by: David Anderson <danderson@tailscale.com> 
							
						 
						
							2020-05-02 01:49:47 -06:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									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 
							
								 
							
						 
					 
				
					
						
							
								
								
									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 
							
								 
							
						 
					 
				
					
						
							
								
								
									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 
							
								 
							
						 
					 
				
					
						
							
								
								
									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 
								
							 
						 
						
							
							
							
							
								
							
							
								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 
								
							 
						 
						
							
							
							
							
								
							
							
								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 
								
							 
						 
						
							
							
							
							
								
							
							
								ae492d1b35 
								
							 
						 
						
							
							
								
								device: recheck counters while holding write lock  
							
							
							
						 
						
							2019-10-17 15:43:06 +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 
								
							 
						 
						
							
							
							
							
								
							
							
								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 
								
							 
						 
						
							
							
							
							
								
							
							
								7c97fdb1e3 
								
							 
						 
						
							
							
								
								version: bump snapshot  
							
							
							
						 
						
							2019-09-08 10:56:55 -05:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								f8198c0428 
								
							 
						 
						
							
							
								
								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. 
							
						 
						
							2019-08-25 12:45:13 -06:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								b16dba47a7 
								
							 
						 
						
							
							
								
								version: bump snapshot  
							
							
							
						 
						
							2019-08-05 19:29:12 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								4be9630ddc 
								
							 
						 
						
							
							
								
								device: drop lock before expiring keys  
							
							
							
						 
						
							2019-08-05 17:46:34 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								4e3018a967 
								
							 
						 
						
							
							
								
								uapi: skip peers with invalid keys  
							
							
							
						 
						
							2019-08-05 16:57:41 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								7bc0e11831 
								
							 
						 
						
							
							
								
								device: do not crash on nil'd bind in windows binding  
							
							
							
						 
						
							2019-07-18 19:34:45 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								a961aacc9f 
								
							 
						 
						
							
							
								
								device: immediately rekey all peers after changing device private key  
							
							... 
							
							
							
							Reported-by: Derrick Pallas <derrick@pallas.us> 
							
						 
						
							2019-07-11 17:37:35 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								f361e59001 
								
							 
						 
						
							
							
								
								device: receive: uniform message for source address check  
							
							
							
						 
						
							2019-07-01 15:24:50 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								dd8817f50e 
								
							 
						 
						
							
							
								
								device: receive: simplify flush loop  
							
							
							
						 
						
							2019-07-01 15:23:24 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Matt Layher 
								
							 
						 
						
							
							
							
							
								
							
							
								1f48971a80 
								
							 
						 
						
							
							
								
								tun: remove TUN prefix from types to reduce stutter elsewhere  
							
							... 
							
							
							
							Signed-off-by: Matt Layher <mdlayher@gmail.com> 
							
						 
						
							2019-06-14 18:35:57 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								3371f8dac6 
								
							 
						 
						
							
							
								
								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. 
							
						 
						
							2019-06-11 18:13:52 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Matt Layher 
								
							 
						 
						
							
							
							
							
								
							
							
								43a4589043 
								
							 
						 
						
							
							
								
								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> 
							
						 
						
							2019-06-04 13:01:52 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Matt Layher 
								
							 
						 
						
							
							
							
							
								
							
							
								8d76ac8cc4 
								
							 
						 
						
							
							
								
								device: use bytes.Equal for equality check, simplify assertEqual  
							
							... 
							
							
							
							Signed-off-by: Matt Layher <mdlayher@gmail.com> 
							
						 
						
							2019-06-04 13:01:52 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Matt Layher 
								
							 
						 
						
							
							
							
							
								
							
							
								18b6627f33 
								
							 
						 
						
							
							
								
								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> 
							
						 
						
							2019-06-03 22:15:41 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								d9f995209c 
								
							 
						 
						
							
							
								
								device: add SendKeepalivesToPeersWithCurrentKeypair for handover  
							
							
							
						 
						
							2019-05-30 15:16:16 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Matt Layher 
								
							 
						 
						
							
							
							
							
								
							
							
								32912dc778 
								
							 
						 
						
							
							
								
								device, tun: rearrange code and fix device tests  
							
							... 
							
							
							
							Signed-off-by: Matt Layher <mdlayher@gmail.com> 
							
						 
						
							2019-05-29 18:34:55 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								fbcd995ec1 
								
							 
						 
						
							
							
								
								device: darwin actually doesn't need bound interfaces  
							
							
							
						 
						
							2019-05-25 18:10:52 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								e7e286ba6c 
								
							 
						 
						
							
							
								
								device: make initiations per second match kernel implementation  
							
							
							
						 
						
							2019-05-25 02:07:18 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								f70546bc2e 
								
							 
						 
						
							
							
								
								device: timers: add jitter on ack failure reinitiation  
							
							
							
						 
						
							2019-05-24 13:48:25 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								c718f3940d 
								
							 
						 
						
							
							
								
								device: fail to give bind if it doesn't exist  
							
							
							
						 
						
							2019-05-17 15:35:20 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								583ebe99f1 
								
							 
						 
						
							
							
								
								version: bump snapshot  
							
							
							
						 
						
							2019-05-17 10:28:04 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								3bf41b06ae 
								
							 
						 
						
							
							
								
								global: regroup all imports  
							
							
							
						 
						
							2019-05-14 09:09:52 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								586112b5d7 
								
							 
						 
						
							
							
								
								conn: remove scope when sanity checking IP address format  
							
							
							
						 
						
							2019-05-09 15:42:35 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								d3dd991e4e 
								
							 
						 
						
							
							
								
								device: send: check packet length before freeing element  
							
							
							
						 
						
							2019-04-18 23:23:03 +09:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								0b77bf78cd 
								
							 
						 
						
							
							
								
								conn: linux: RTA_MARK has moved to x/sys  
							
							
							
						 
						
							2019-04-13 02:01:20 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								18fa270472 
								
							 
						 
						
							
							
								
								version: put version in right place  
							
							
							
						 
						
							2019-04-09 10:39:48 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								6440f010ee 
								
							 
						 
						
							
							
								
								receive: implement flush semantics  
							
							
							
						 
						
							2019-03-21 14:45:41 -06:00