Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-03-04 | tun: import mobile particularities | Jason A. Donenfeld | |
2019-03-04 | boundif: introduce API for socket binding | Jason A. Donenfeld | |
2019-03-03 | global: begin modularization | Jason A. Donenfeld | |
2019-03-01 | tun: windows: expose GUID | Jason A. Donenfeld | |
2019-03-01 | tun: allow special methods in NativeTun | Jason A. Donenfeld | |
2019-02-27 | tun: linux: netpoll is broken for tun's epoll | Jason A. Donenfeld | |
So this mostly reverts the switch to Sysconn for Linux. Issue: https://github.com/golang/go/issues/30426 | |||
2019-02-27 | tun: linux: netlink sock needs cleaning up but file will be gc'd | Jason A. Donenfeld | |
2019-02-27 | tun: use netpoll instead of rwcancel | Jason A. Donenfeld | |
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 | tun: use sysconn instead of .Fd with Go 1.12 | Jason A. Donenfeld | |
2019-02-22 | Rearrange imports | Jason A. Donenfeld | |
2019-02-22 | device: send persistent keepalive when bringing up device | Jason A. Donenfeld | |
Reported-by: Marcelo Bello | |||
2019-02-22 | wintun: Read/write packet size from/to exchange buffer directly | Simon Rozman | |
Driver <-> user-space communication is local and using native endian. Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-22 | wintun: Make two-step slicing a one step | Simon Rozman | |
Stop relying to Go compiler optimizations and calculate the end offset directly. Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-20 | wintun: Write exchange buffer increased back to 1MiB | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-20 | wintun: Migrate from unsafe buffer handling to encoding/binary | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-20 | wintun: Adopt new packet data alignment | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-20 | wintun: Cleanup | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-20 | wintun: Add TUN device locking | Simon Rozman | |
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 | wintun: Move exchange buffer in separate struct on heap | Simon Rozman | |
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-19 | wintun: Switch to dynamic packet sizes | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-18 | Change package path | Jason A. Donenfeld | |
2019-02-14 | Bump dependencies for ARM ChaCha20 | Jason A. Donenfeld | |
2019-02-08 | wintun: Auto-calculate TUN exchange buffer size | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-08 | wintun: Simplify Read method() | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-08 | wintun: Make constants private and adopt Go recommended case | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-08 | wintun: Check for user close in read loop regardless the load | Simon Rozman | |
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 | wintun: Adjust tunRWQueue.left member to match Wintun driver | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | setupapi: Merge _SP_DRVINFO_DETAIL_DATA and DrvInfoDetailData | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | setupapi: Merge SP_DRVINFO_DATA and DrvInfoData | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | setupapi: Rename SP_REMOVEDEVICE_PARAMS to RemoveDeviceParams | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | setupapi: Rename SP_CLASSINSTALL_HEADER to ClassInstallHeader | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | setupapi: Merge _SP_DEVINSTALL_PARAMS and DevInstallParams | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | setupapi: Merge _SP_DEVINFO_LIST_DETAIL_DATA and DevInfoListDetailData | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | setupapi: Rename SP_DEVINFO_DATA to DevInfoData | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | wintun: Detect if a foreign interface with the same name exists | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | wintun: Clean excessive setupapi.DevInfo.GetDeviceInfoListDetail() call | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | wintun: Explain rationale behind case-insensitive interface names | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | wintun: Implement TODO in TestSetupDiGetDeviceRegistryProperty() | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-07 | wintun: add FlushInterface stub | Jason A. Donenfeld | |
2019-02-07 | main_windows: Get iface name from argument | Jason A. Donenfeld | |
2019-02-07 | wintun: Compare values of GUID, not pointers, when removing | Jason A. Donenfeld | |
2019-02-07 | main_windows: Catch more exit events | Jason A. Donenfeld | |
2019-02-07 | wintun: Introduce new package for obscuring Windows bits | Jason A. Donenfeld | |
2019-02-07 | tun_windows: Style | Jason A. Donenfeld | |
2019-02-07 | setupapi: Lower case params | Jason A. Donenfeld | |
2019-02-07 | setupapi: Do not export the toGo/toWindows functions | Jason A. Donenfeld | |
2019-02-07 | setupapi: Pass pointers instead of values | Jason A. Donenfeld | |
2019-02-06 | tun_windows: Introduce preliminary TUN interface creation | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-06 | tun_windows: Stop checking minimum size of received TUN packets | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> | |||
2019-02-06 | setupapi: Add DrvInfoDetailData.IsCompatible() to simplify HID detection | Simon Rozman | |
Signed-off-by: Simon Rozman <simon@rozman.si> |