mirror of
https://github.com/fumiama/water.git
synced 2026-06-22 04:03:07 +08:00
use blocking mode pre-go1.11
This commit is contained in:
27
syscalls_linux_go1.11.go
Normal file
27
syscalls_linux_go1.11.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user