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  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								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