1
0
mirror of https://github.com/fumiama/water.git synced 2026-06-11 21:50:43 +08:00

Moved linux specific code to the syscalls_linux.go file. Also removed unneeded constants from the syscalls_other.go file.

This commit is contained in:
Harshal Sheth
2015-11-07 19:20:00 -05:00
parent d2ac4607bb
commit e3fcc2a155
4 changed files with 37 additions and 36 deletions

View File

@@ -3,6 +3,7 @@
package water
import (
"os"
"strings"
"syscall"
"unsafe"
@@ -20,6 +21,32 @@ type ifReq struct {
pad [0x28 - 0x10 - 2]byte
}
func newTAP(ifName string) (ifce *Interface, err error) {
file, err := os.OpenFile("/dev/net/tun", os.O_RDWR, 0)
if err != nil {
return nil, err
}
name, err := createInterface(file.Fd(), ifName, cIFF_TAP|cIFF_NO_PI)
if err != nil {
return nil, err
}
ifce = &Interface{isTAP: true, file: file, name: name}
return
}
func newTUN(ifName string) (ifce *Interface, err error) {
file, err := os.OpenFile("/dev/net/tun", os.O_RDWR, 0)
if err != nil {
return nil, err
}
name, err := createInterface(file.Fd(), ifName, cIFF_TUN|cIFF_NO_PI)
if err != nil {
return nil, err
}
ifce = &Interface{isTAP: false, file: file, name: name}
return
}
func createInterface(fd uintptr, ifName string, flags uint16) (createdIFName string, err error) {
var req ifReq
req.Flags = flags