mirror of
https://github.com/luscis/openlan.git
synced 2025-09-26 20:41:29 +08:00
28 lines
503 B
Go
28 lines
503 B
Go
//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
|
|
}
|