Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							d024393335 
							
						 
					 
					
						
						
							
							tun: darwin: write routeSocket variable in helper  
						
						 
						
						... 
						
						
						
						Otherwise the race detector "complains". 
						
					 
					
						2019-04-19 07:53:19 +09:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							5811447b38 
							
						 
					 
					
						
						
							
							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> 
						
					 
					
						2019-04-18 10:39:22 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							e0a8c22aa6 
							
						 
					 
					
						
						
							
							windows: use proper constants from updated x/sys  
						
						 
						
						
						
					 
					
						2019-04-13 02:02:02 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							ef5f3ad80a 
							
						 
					 
					
						
						
							
							tun: windows: Adopt new error codes returned by Wintun  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-04-11 19:38:11 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							a291fdd746 
							
						 
					 
					
						
						
							
							tun: windows: do not sleep after OPERATION_ABORTED on write  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-04-11 19:37:04 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							e680008700 
							
						 
					 
					
						
						
							
							tun: windows: do not sleep after OPERATION_ABORTED  
						
						 
						
						
						
					 
					
						2019-04-09 07:36:03 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							767c86f8cb 
							
						 
					 
					
						
						
							
							tun: windows: Retry R/W on ERROR_OPERATION_ABORTED  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-04-04 09:20:18 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							421c1f9143 
							
						 
					 
					
						
						
							
							tun: windows: Attempt to reopen handle on all errors  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-04-03 05:41:38 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							ac25702eaf 
							
						 
					 
					
						
						
							
							wintun: rename device using undocumented API that netsh.exe uses  
						
						 
						
						
						
					 
					
						2019-04-01 12:04:44 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							92f8474832 
							
						 
					 
					
						
						
							
							wintun: add more retry loops  
						
						 
						
						
						
					 
					
						2019-04-01 09:07:43 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							2e0ed4614a 
							
						 
					 
					
						
						
							
							tun: windows: cancel ongoing reads on closing and delete after close  
						
						 
						
						... 
						
						
						
						This reverts commit 52ec440d79  and adds
some spice. 
						
					 
					
						2019-03-26 16:14:32 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							2fa80c0cb7 
							
						 
					 
					
						
						
							
							wintun: query for NetCfgInstanceId several times  
						
						 
						
						
						
					 
					
						2019-03-22 16:48:40 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							52ec440d79 
							
						 
					 
					
						
						
							
							tun: windows: delete interface before deleting file handles  
						
						 
						
						
						
					 
					
						2019-03-22 16:45:58 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							2faf2dcf90 
							
						 
					 
					
						
						
							
							tun: windows: Make adapter rename asynchronous  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-22 16:36:30 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							41c30a7279 
							
						 
					 
					
						
						
							
							tun: windows: Adapter devices renamed to WINTUN<LUID Index>  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-22 15:29:14 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							4b1db1d39b 
							
						 
					 
					
						
						
							
							tun: windows: Increase unavailable adapter timeout to 30sec  
						
						 
						
						... 
						
						
						
						5 seconds was too short when debugging.
Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-22 13:52:51 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							a80db5e65e 
							
						 
					 
					
						
						
							
							tun: windows: Make writing persistent too  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-22 13:52:51 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							9748a52073 
							
						 
					 
					
						
						
							
							tun: windows: Fix paused adapter test  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-22 13:52:51 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							317d716d66 
							
						 
					 
					
						
						
							
							tun: windows: just open two file handles  
						
						 
						
						
						
					 
					
						2019-03-21 15:20:09 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							6440f010ee 
							
						 
					 
					
						
						
							
							receive: implement flush semantics  
						
						 
						
						
						
					 
					
						2019-03-21 14:45:41 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							49ea0c9b1a 
							
						 
					 
					
						
						
							
							tun: windows: add dummy overlapped events back  
						
						 
						
						... 
						
						
						
						These seem basically wrong to me, but we get crashes without them. 
						
					 
					
						2019-03-21 02:29:09 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							ca59b60aa7 
							
						 
					 
					
						
						
							
							tun: windows: use new constants in sys  
						
						 
						
						
						
					 
					
						2019-03-20 23:42:30 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							91b4e909bb 
							
						 
					 
					
						
						
							
							wintun: Use native Win32 API for I/O  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-21 00:56:45 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							03f2e2614a 
							
						 
					 
					
						
						
							
							tun: windows: wintun does iocp  
						
						 
						
						
						
					 
					
						2019-03-18 02:42:45 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							b0e0ab308d 
							
						 
					 
					
						
						
							
							tun: windows: temporary hack for forcing MTU  
						
						 
						
						
						
					 
					
						2019-03-13 02:52:32 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							66fb5caf02 
							
						 
					 
					
						
						
							
							wintun: Poll more often  
						
						 
						
						
						
					 
					
						2019-03-10 03:47:54 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							c2a2b8d739 
							
						 
					 
					
						
						
							
							wintun: Make errors more descriptive  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-08 10:03:57 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							70449f1a97 
							
						 
					 
					
						
						
							
							wintun: Return correct reboot-req flag on CreateInterface() error too  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-08 10:03:57 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							33c3528430 
							
						 
					 
					
						
						
							
							wintun: Fix double-quoted strings escaping on output  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-08 10:03:57 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							30ab07e354 
							
						 
					 
					
						
						
							
							wintun: Introduce SetupAPI enumerator and machineName consts  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-08 10:03:57 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							368dea72fe 
							
						 
					 
					
						
						
							
							wintun: Cleanup  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-07 21:12:20 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							9b22255cad 
							
						 
					 
					
						
						
							
							wintun: Refactor network registry key name generation  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-07 21:12:20 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							11f5780250 
							
						 
					 
					
						
						
							
							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> 
						
					 
					
						2019-03-07 21:12:20 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							92f72f5aa6 
							
						 
					 
					
						
						
							
							tun: linux: work out netpoll trick  
						
						 
						
						
						
					 
					
						2019-03-07 01:51:41 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							1fdf7b19a3 
							
						 
					 
					
						
						
							
							wintun: Resolve some of golint warnings  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-04 16:37:11 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							a1aabb21ae 
							
						 
					 
					
						
						
							
							Elaborate the failing step when forwarding errors on return  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-04 16:37:11 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							9041d38e2d 
							
						 
					 
					
						
						
							
							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> 
						
					 
					
						2019-03-04 16:37:11 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							cddfd9a0d8 
							
						 
					 
					
						
						
							
							Unify interface-specific network registry key open  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-03-04 16:37:11 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							68f0721c6a 
							
						 
					 
					
						
						
							
							tun: import mobile particularities  
						
						 
						
						
						
					 
					
						2019-03-04 16:37:11 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							69f0fe67b6 
							
						 
					 
					
						
						
							
							global: begin modularization  
						
						 
						
						
						
					 
					
						2019-03-03 05:00:40 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							d435be35ca 
							
						 
					 
					
						
						
							
							tun: windows: expose GUID  
						
						 
						
						
						
					 
					
						2019-03-01 00:11:12 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							967d1a0f3d 
							
						 
					 
					
						
						
							
							tun: allow special methods in NativeTun  
						
						 
						
						
						
					 
					
						2019-03-01 00:05:57 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							88ff67fb6f 
							
						 
					 
					
						
						
							
							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  
						
					 
					
						2019-02-27 04:38:26 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							971be13e77 
							
						 
					 
					
						
						
							
							tun: linux: netlink sock needs cleaning up but file will be gc'd  
						
						 
						
						
						
					 
					
						2019-02-27 04:11:41 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							366cbd11a4 
							
						 
					 
					
						
						
							
							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")
} 
						
					 
					
						2019-02-27 01:52:55 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jason A. Donenfeld 
							
						 
					 
					
						
						
						
						
							
						
						
							ab0f442daf 
							
						 
					 
					
						
						
							
							tun: use sysconn instead of .Fd with Go 1.12  
						
						 
						
						
						
					 
					
						2019-02-27 01:34:11 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							d002eff155 
							
						 
					 
					
						
						
							
							wintun: Read/write packet size from/to exchange buffer directly  
						
						 
						
						... 
						
						
						
						Driver <-> user-space communication is local and using native endian.
Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-02-22 16:16:14 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							e06a8f8f9f 
							
						 
					 
					
						
						
							
							wintun: Make two-step slicing a one step  
						
						 
						
						... 
						
						
						
						Stop relying to Go compiler optimizations and calculate the end offset
directly.
Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-02-22 16:11:33 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							ac4944a708 
							
						 
					 
					
						
						
							
							wintun: Write exchange buffer increased back to 1MiB  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-02-20 20:13:33 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Simon Rozman 
							
						 
					 
					
						
						
						
						
							
						
						
							2491f9d454 
							
						 
					 
					
						
						
							
							wintun: Migrate from unsafe buffer handling to encoding/binary  
						
						 
						
						... 
						
						
						
						Signed-off-by: Simon Rozman <simon@rozman.si> 
						
					 
					
						2019-02-20 20:10:24 +01:00