aboutsummaryrefslogtreecommitdiffstats
path: root/noise-types.go (unfollow)
Commit message (Collapse)AuthorFilesLines
2019-03-01tun: allow special methods in NativeTunJason A. Donenfeld6-65/+65
2019-02-27tun: linux: netpoll is broken for tun's epollJason A. Donenfeld1-27/+48
So this mostly reverts the switch to Sysconn for Linux. Issue: https://github.com/golang/go/issues/30426
2019-02-27tun: linux: netlink sock needs cleaning up but file will be gc'dJason A. Donenfeld1-4/+2
2019-02-27tun: use netpoll instead of rwcancelJason A. Donenfeld6-138/+39
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-27tun: use sysconn instead of .Fd with Go 1.12Jason A. Donenfeld6-55/+80
2019-02-22Rearrange importsJason A. Donenfeld3-3/+3
2019-02-22device: send persistent keepalive when bringing up deviceJason A. Donenfeld1-0/+3
Reported-by: Marcelo Bello
2019-02-22wintun: Read/write packet size from/to exchange buffer directlySimon Rozman1-3/+3
Driver <-> user-space communication is local and using native endian. Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-22wintun: Make two-step slicing a one stepSimon Rozman1-3/+3
Stop relying to Go compiler optimizations and calculate the end offset directly. Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20wintun: Write exchange buffer increased back to 1MiBSimon Rozman1-5/+4
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20wintun: Migrate from unsafe buffer handling to encoding/binarySimon Rozman1-5/+8
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20wintun: Adopt new packet data alignmentSimon Rozman1-10/+10
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20wintun: CleanupSimon Rozman1-2/+2
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-20wintun: Add TUN device lockingSimon Rozman1-40/+64
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-20wintun: Move exchange buffer in separate struct on heapSimon Rozman1-33/+44
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-19wintun: Switch to dynamic packet sizesSimon Rozman1-50/+46
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-18Change package pathJason A. Donenfeld17-19/+19
2019-02-14Bump dependencies for ARM ChaCha20Jason A. Donenfeld2-9/+9
2019-02-08wintun: Auto-calculate TUN exchange buffer sizeSimon Rozman1-8/+7
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-08wintun: Simplify Read method()Simon Rozman1-51/+51
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-08wintun: Make constants private and adopt Go recommended caseSimon Rozman1-29/+29
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-08wintun: Check for user close in read loop regardless the loadSimon Rozman1-24/+22
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-08wintun: Adjust tunRWQueue.left member to match Wintun driverSimon Rozman1-2/+2
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07setupapi: Merge _SP_DRVINFO_DETAIL_DATA and DrvInfoDetailDataSimon Rozman4-55/+60
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07setupapi: Merge SP_DRVINFO_DATA and DrvInfoDataSimon Rozman4-78/+78
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07setupapi: Rename SP_REMOVEDEVICE_PARAMS to RemoveDeviceParamsSimon Rozman2-4/+4
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07setupapi: Rename SP_CLASSINSTALL_HEADER to ClassInstallHeaderSimon Rozman4-20/+20
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07setupapi: Merge _SP_DEVINSTALL_PARAMS and DevInstallParamsSimon Rozman4-63/+25
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07setupapi: Merge _SP_DEVINFO_LIST_DETAIL_DATA and DevInfoListDetailDataSimon Rozman4-26/+26
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07setupapi: Rename SP_DEVINFO_DATA to DevInfoDataSimon Rozman4-81/+81
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07wintun: Detect if a foreign interface with the same name existsSimon Rozman2-6/+49
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07wintun: Clean excessive setupapi.DevInfo.GetDeviceInfoListDetail() callSimon Rozman1-14/+0
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07wintun: Explain rationale behind case-insensitive interface namesSimon Rozman1-1/+5
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07wintun: Implement TODO in TestSetupDiGetDeviceRegistryProperty()Simon Rozman1-3/+11
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-07wintun: add FlushInterface stubJason A. Donenfeld2-4/+18
2019-02-07main_windows: Get iface name from argumentJason A. Donenfeld1-2/+1
2019-02-07wintun: Compare values of GUID, not pointers, when removingJason A. Donenfeld1-1/+1
2019-02-07main_windows: Catch more exit eventsJason A. Donenfeld1-0/+3
2019-02-07wintun: Introduce new package for obscuring Windows bitsJason A. Donenfeld12-487/+527
2019-02-07tun_windows: StyleJason A. Donenfeld1-11/+13
2019-02-07setupapi: Lower case paramsJason A. Donenfeld3-184/+184
2019-02-07setupapi: Do not export the toGo/toWindows functionsJason A. Donenfeld2-3/+3
2019-02-07setupapi: Pass pointers instead of valuesJason A. Donenfeld1-9/+9
2019-02-06tun_windows: Introduce preliminary TUN interface creationSimon Rozman3-5/+556
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-06tun_windows: Stop checking minimum size of received TUN packetsSimon Rozman1-2/+1
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-06setupapi: Add DrvInfoDetailData.IsCompatible() to simplify HID detectionSimon Rozman2-1/+29
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-06setupapi: Add SP_DRVINFO_DATA.IsNewer() method to simplify comparisonSimon Rozman2-0/+48
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-06setupapi: Make toUTF16() public and add UTF16ToBuf() counterpartSimon Rozman2-4/+28
Signed-off-by: Simon Rozman <simon@rozman.si>
2019-02-05Fix up errors and pathsJason A. Donenfeld3-10/+12
2019-02-05conn: close ipv4 socket when ipv6 socket failsJason A. Donenfeld1-1/+0