diff --git a/src/yggdrasil/tun.go b/src/yggdrasil/tun.go index bc14ae2b..5f5e50a0 100644 --- a/src/yggdrasil/tun.go +++ b/src/yggdrasil/tun.go @@ -2,29 +2,19 @@ package yggdrasil // This manages the tun driver to send/recv packets to/from applications -import "os" -import ethernet "github.com/songgao/packets/ethernet" +import "github.com/songgao/packets/ethernet" +import "github.com/yggdrasil-network/water" const IPv6_HEADER_LENGTH = 40 const ETHER_HEADER_LENGTH = 14 -type tunInterface interface { - IsTUN() bool - IsTAP() bool - Name() string - Read(to []byte) (int, error) - Write(from []byte) (int, error) - Close() error - FD() *os.File -} - type tunDevice struct { core *Core icmpv6 icmpv6 send chan<- []byte recv <-chan []byte mtu int - iface tunInterface + iface *water.Interface } type tunDefaultParameters struct { diff --git a/src/yggdrasil/tun_bsd.go b/src/yggdrasil/tun_bsd.go index 84a9d3cb..bf8a6f82 100644 --- a/src/yggdrasil/tun_bsd.go +++ b/src/yggdrasil/tun_bsd.go @@ -2,12 +2,13 @@ package yggdrasil +import "os" import "os/exec" import "unsafe" import "golang.org/x/sys/unix" -import water "github.com/yggdrasil-network/water" +import "github.com/yggdrasil-network/water" type in6_addrlifetime struct { ia6t_expire float64 @@ -61,7 +62,7 @@ func (tun *tunDevice) setup(ifname string, iftapmode bool, addr string, mtu int) } func (tun *tunDevice) setupAddress(addr string) error { - fd := tun.iface.FD().Fd() + fd := tun.iface.ReadWriteCloser.(*os.File).Fd() var err error var ti tuninfo