diff --git a/if.go b/if.go index 9f3a97e..f48d229 100644 --- a/if.go +++ b/if.go @@ -1,14 +1,12 @@ package water -import ( - "os" -) +import "io" // Interface is a TUN/TAP interface. type Interface struct { isTAP bool - file *os.File - name string + io.ReadWriteCloser + name string } // Create a new TAP interface whose name is ifName. @@ -39,15 +37,3 @@ func (ifce *Interface) IsTAP() bool { func (ifce *Interface) Name() string { return ifce.name } - -// Implement io.Writer interface. -func (ifce *Interface) Write(p []byte) (n int, err error) { - n, err = ifce.file.Write(p) - return -} - -// Implement io.Reader interface. -func (ifce *Interface) Read(p []byte) (n int, err error) { - n, err = ifce.file.Read(p) - return -} diff --git a/syscalls_linux.go b/syscalls_linux.go index e69c3d9..e1ba63f 100644 --- a/syscalls_linux.go +++ b/syscalls_linux.go @@ -30,7 +30,7 @@ func newTAP(ifName string) (ifce *Interface, err error) { if err != nil { return nil, err } - ifce = &Interface{isTAP: true, file: file, name: name} + ifce = &Interface{isTAP: true, ReadWriteCloser: file, name: name} return } @@ -43,7 +43,7 @@ func newTUN(ifName string) (ifce *Interface, err error) { if err != nil { return nil, err } - ifce = &Interface{isTAP: false, file: file, name: name} + ifce = &Interface{isTAP: false, ReadWriteCloser: file, name: name} return }