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 
							
								 
							
						 
					 
				
					
						
							
								
								
									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 
							
								 
							
						 
					 
				
					
						
							
								
								
									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 
								
							 
						 
						
							
							
							
							
								
							
							
								fac1fbcd72 
								
							 
						 
						
							
							
								
								wintun: Compare values of GUID, not pointers, when removing  
							
							
							
						 
						
							2019-02-07 04:49:15 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								ea59177f1c 
								
							 
						 
						
							
							
								
								wintun: Introduce new package for obscuring Windows bits  
							
							
							
						 
						
							2019-02-07 04:39:59 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								306d08e692 
								
							 
						 
						
							
							
								
								tun_windows: Style  
							
							
							
						 
						
							2019-02-07 04:08:05 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								cb2bc4b34c 
								
							 
						 
						
							
							
								
								tun_windows: Introduce preliminary TUN interface creation  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-06 22:30:14 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Rozman 
								
							 
						 
						
							
							
							
							
								
							
							
								46279ad0f9 
								
							 
						 
						
							
							
								
								tun_windows: Stop checking minimum size of received TUN packets  
							
							... 
							
							
							
							Signed-off-by: Simon Rozman <simon@rozman.si> 
							
						 
						
							2019-02-06 20:22:04 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								c599bf9497 
								
							 
						 
						
							
							
								
								Fix up errors and paths  
							
							
							
						 
						
							2019-02-05 22:06:25 +09:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								6f76edd045 
								
							 
						 
						
							
							
								
								Import windows scafolding  
							
							
							
						 
						
							2019-02-05 12:59:42 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								dff424baf8 
								
							 
						 
						
							
							
								
								Update copyright  
							
							
							
						 
						
							2019-02-05 12:59:42 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								651744561e 
								
							 
						 
						
							
							
								
								tun: remove nonblock hack for linux  
							
							... 
							
							
							
							This is no longer necessary and actually breaks things
Reported-by: Chris Branch <cbranch@cloudflare.com> 
							
						 
						
							2018-12-06 17:17:51 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								276bf973e8 
								
							 
						 
						
							
							
								
								Use darwin tun on ios  
							
							
							
						 
						
							2018-11-06 16:24:35 +01:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								2e772194cf 
								
							 
						 
						
							
							
								
								tun: only call .Fd() once  
							
							... 
							
							
							
							Doing so tends to make the tunnel blocking, so we only retrieve it once
before we call SetNonblock, and then cache the result. 
							
						 
						
							2018-10-17 21:31:42 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								5be541d147 
								
							 
						 
						
							
							
								
								global: fix up copyright headers  
							
							
							
						 
						
							2018-09-16 18:49:19 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								15da869b31 
								
							 
						 
						
							
							
								
								Fix duplicate copyright line  
							
							
							
						 
						
							2018-07-30 05:14:17 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								0ba551807f 
								
							 
						 
						
							
							
								
								Do not build tun device on ios  
							
							
							
						 
						
							2018-06-09 03:31:17 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								5079298ce2 
								
							 
						 
						
							
							
								
								Disable broadcast mode on *BSD  
							
							... 
							
							
							
							Keeping it on makes IPv6 problematic and confuses routing daemons. 
							
						 
						
							2018-05-27 22:55:15 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								2f2eca8947 
								
							 
						 
						
							
							
								
								Catch EINTR  
							
							
							
						 
						
							2018-05-24 15:36:29 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								588b9f01ae 
								
							 
						 
						
							
							
								
								Adopt GOPATH  
							
							... 
							
							
							
							GOPATH is annoying, but the Go community pushing me to adopt it is even
more annoying. 
							
						 
						
							2018-05-23 05:18:13 +02:00 
							
								 
							
						 
					 
				
					
						
							
								
								
									Jason A. Donenfeld 
								
							 
						 
						
							
							
							
							
								
							
							
								0a63188afa 
								
							 
						 
						
							
							
								
								Move tun to subpackage  
							
							
							
						 
						
							2018-05-23 03:58:27 +02:00