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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user