github.com/labulakalia/water@v0.0.5-0.20231118024244-f351ca6784b6/syscalls_linux_go1.11.go (about) 1 // +build linux,go1.11 2 3 package water 4 5 import ( 6 "os" 7 "syscall" 8 ) 9 10 func openDev(config Config) (ifce *Interface, err error) { 11 var fdInt int 12 if fdInt, err = syscall.Open( 13 "/dev/net/tun", os.O_RDWR|syscall.O_NONBLOCK, 0); err != nil { 14 return nil, err 15 } 16 17 name, err := setupFd(config, uintptr(fdInt)) 18 if err != nil { 19 return nil, err 20 } 21 22 return &Interface{ 23 isTAP: config.DeviceType == TAP, 24 ReadWriteCloser: os.NewFile(uintptr(fdInt), "tun"), 25 name: name, 26 }, nil 27 }