Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								3dd9a0535f 
								
							 
						 
						
							
							
								
								uapi: make ipcerror conform to interface  
							
							
							
						 
						
							2019-03-10 02:49:44 +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 
							
								 
							
						 
					 
				
					
						
							
								
								
									Odd Stranne 
								
							 
						 
						
							
							
							
							
								
							
							
								a6d5ef82f4 
								
							 
						 
						
							
							
								
								Windows: Apply strict security descriptor on pipe server  
							
							... 
							
							
							
							Signed-off-by: Odd Stranne <odd@mullvad.net> 
							
						 
						
							2019-03-08 10:03:56 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								5c7cc256e3 
								
							 
						 
						
							
							
								
								uapi: windows: work out pipe semantics  
							
							... 
							
							
							
							Pipes can be arranged like this, so that's fine. We also apply a strict
SDDL that can't be inherited and only gives access to local system.
Developed-with: Odd Stranne <odd@mullvad.net> 
							
						 
						
							2019-03-08 01:40:54 +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 
								
							 
						 
						
							
							
							
							
								
							
							
								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