mirror of
https://github.com/yggdrasil-network/water.git
synced 2025-05-20 00:45:09 +03:00
27 lines
499 B
Go
27 lines
499 B
Go
// +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
|
|
}
|