syscalls_linux_go1.11.go 499 B

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