use blocking mode pre-go1.11

This commit is contained in:
Song Gao 2019-03-31 15:42:28 -07:00
parent 240a3d7b51
commit 3fe638a7bf
13 changed files with 132 additions and 95 deletions

27
syscalls_linux_go1.11.go Normal file
View file

@ -0,0 +1,27 @@
// +build linux,go1.11
package water
import (
"os"
"syscall"
)
func openDev(config Config) (ifce *Interface, err error) {
var fdInt int
if fdInt, err = syscall.Open(
"/dev/net/tun", os.O_RDWR|syscall.O_NONBLOCK, 0); err != nil {
return nil, err
}
name, err := setupFd(config, uintptr(fdInt))
if err != nil {
return nil, err
}
return &Interface{
isTAP: config.DeviceType == TAP,
ReadWriteCloser: os.NewFile(uintptr(fdInt), "tun"),
name: name,
}, nil
}