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 
								
							 
						 
						
							
							
							
							
								
							
							
								26af6c4651 
								
							 
						 
						
							
							
								
								receive: squelch tear down error  
							
							
							
						 
						
							2019-03-07 02:03:48 +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 
								
							 
						 
						
							
							
							
							
								
							
							
								b8e85267cf 
								
							 
						 
						
							
							
								
								boundif: introduce API for socket binding  
							
							
							
						 
						
							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 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								66524c1f7e 
								
							 
						 
						
							
							
								
								Rearrange imports  
							
							
							
						 
						
							2019-02-22 20:59:43 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								6e4460ae65 
								
							 
						 
						
							
							
								
								device: send persistent keepalive when bringing up device  
							
							... 
							
							
							
							Reported-by: Marcelo Bello 
							
						 
						
							2019-02-22 19:33:28 +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 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								8091c6474a 
								
							 
						 
						
							
							
								
								wintun: Adopt new packet data alignment  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-20 19:56:10 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								040da43889 
								
							 
						 
						
							
							
								
								wintun: Cleanup  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-20 18:38:18 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								b7025b5627 
								
							 
						 
						
							
							
								
								wintun: Add TUN device locking  
							
							... 
							
							
							
							In case reading from TUN device detected TUN device was closed, it
closed the file handle and set tunFile to nil. The tunFile is
automatically reopened on retry, but... If another packet comes in the
WireGuard calls Write() method. With tunFile set to nil, this will
cause access violation.
Therefore, locking was introduced.
Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-20 13:12:08 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								6581cfb885 
								
							 
						 
						
							
							
								
								wintun: Move exchange buffer in separate struct on heap  
							
							... 
							
							
							
							This allows buffer alignment and keeps it together with its meta-data.
Furthermore, the write buffer has been reduced - as long as we flush
after _every_ write, we don't need a 1MiB write buffer.
Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-20 11:41:37 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								4863089120 
								
							 
						 
						
							
							
								
								wintun: Switch to dynamic packet sizes  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-19 18:50:42 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								42c6d0e261 
								
							 
						 
						
							
							
								
								Change package path  
							
							
							
						 
						
							2019-02-18 05:11:39 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								f7170e5de2 
								
							 
						 
						
							
							
								
								Bump dependencies for ARM ChaCha20  
							
							
							
						 
						
							2019-02-14 10:59:54 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								b719a09a26 
								
							 
						 
						
							
							
								
								wintun: Auto-calculate TUN exchange buffer size  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-08 15:21:24 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								f05f52637f 
								
							 
						 
						
							
							
								
								wintun: Simplify Read method()  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-08 14:31:05 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								713477cfb1 
								
							 
						 
						
							
							
								
								wintun: Make constants private and adopt Go recommended case  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-08 08:55:23 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								5981d5cacf 
								
							 
						 
						
							
							
								
								wintun: Check for user close in read loop regardless the load  
							
							... 
							
							
							
							Do the WaitForSingleObject() always to provide high-load responsiveness.
Reorder events so TUN_SIGNAL_CLOSE has priority over
TUN_SIGNAL_DATA_AVAIL, to provide high-load responsiveness at all.
Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-08 08:48:35 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								b13739ada2 
								
							 
						 
						
							
							
								
								wintun: Adjust tunRWQueue.left member to match Wintun driver  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-08 07:32:12 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								c4988999ac 
								
							 
						 
						
							
							
								
								setupapi: Merge _SP_DRVINFO_DETAIL_DATA and DrvInfoDetailData  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 23:50:43 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								b662896cf4 
								
							 
						 
						
							
							
								
								setupapi: Merge SP_DRVINFO_DATA and DrvInfoData  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 23:50:43 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								0525f6b112 
								
							 
						 
						
							
							
								
								setupapi: Rename SP_REMOVEDEVICE_PARAMS to RemoveDeviceParams  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 23:50:43 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								9d830826c5 
								
							 
						 
						
							
							
								
								setupapi: Rename SP_CLASSINSTALL_HEADER to ClassInstallHeader  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 23:50:43 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								bd963497da 
								
							 
						 
						
							
							
								
								setupapi: Merge _SP_DEVINSTALL_PARAMS and DevInstallParams  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 23:50:30 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								05d25fd1b7 
								
							 
						 
						
							
							
								
								setupapi: Merge _SP_DEVINFO_LIST_DETAIL_DATA and DevInfoListDetailData  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 23:49:50 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								6d2729dccc 
								
							 
						 
						
							
							
								
								setupapi: Rename SP_DEVINFO_DATA to DevInfoData  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 22:43:02 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								d87cbeeb2f 
								
							 
						 
						
							
							
								
								wintun: Detect if a foreign interface with the same name exists  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 22:02:51 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								043b7e8013 
								
							 
						 
						
							
							
								
								wintun: Clean excessive setupapi.DevInfo.GetDeviceInfoListDetail() call  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 20:49:41 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								ef48d4fa95 
								
							 
						 
						
							
							
								
								wintun: Explain rationale behind case-insensitive interface names  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 19:42:59 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								f7276ed522 
								
							 
						 
						
							
							
								
								wintun: Implement TODO in TestSetupDiGetDeviceRegistryProperty()  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-07 18:59:34 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								c4b43e35a7 
								
							 
						 
						
							
							
								
								wintun: add FlushInterface stub  
							
							
							
						 
						
							2019-02-07 18:24:28 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								2efafecab5 
								
							 
						 
						
							
							
								
								main_windows: Get iface name from argument  
							
							
							
						 
						
							2019-02-07 15:44:07 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								fac1fbcd72 
								
							 
						 
						
							
							
								
								wintun: Compare values of GUID, not pointers, when removing  
							
							
							
						 
						
							2019-02-07 04:49:15 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								52aa00f3ba 
								
							 
						 
						
							
							
								
								main_windows: Catch more exit events  
							
							
							
						 
						
							2019-02-07 04:42:35 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								ea59177f1c 
								
							 
						 
						
							
							
								
								wintun: Introduce new package for obscuring Windows bits  
							
							
							
						 
						
							2019-02-07 04:39:59 +01:00