diff options
author | Christian Pointner <equinox@anytun.org> | 2017-08-13 17:10:51 +0200 |
---|---|---|
committer | Christian Pointner <equinox@anytun.org> | 2017-08-13 17:10:51 +0200 |
commit | dc8c3df38efd9b94ba90c4f55a4ce805cfc3bbba (patch) | |
tree | 4f53576d022018191b4415ed8b66d2f5342de0ff /tuntap | |
parent | added minimalistc tuntap device (diff) |
make use of new tuntap device
Diffstat (limited to 'tuntap')
-rw-r--r-- | tuntap/tuntap.go | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/tuntap/tuntap.go b/tuntap/tuntap.go index 6b4fdea..3dde53b 100644 --- a/tuntap/tuntap.go +++ b/tuntap/tuntap.go @@ -31,23 +31,40 @@ package tuntap import ( + "fmt" + extlib "github.com/lab11/go-tuntap/tuntap" ) type Device struct { - iface *extlib.Interface + iface *extlib.Interface + iftype extlib.DevKind +} + +func (dev *Device) Configure(ip_mask string, postup string) error { + fmt.Printf("running: ip link set up dev %s\n", dev.iface.Name()) + fmt.Printf("running: ip addr add dev %s %s\n", dev.iface.Name(), ip_mask) + if postup != "" { + fmt.Printf("running: %s %s\n", postup, dev.iface.Name()) + } + return nil } -func (dev *Device) ReadPacket() (*extlib.Packet, error) { - return dev.iface.ReadPacket() +func (dev *Device) ReadPacket() (pkt *extlib.Packet, err error) { + pkt, err = dev.iface.ReadPacket() + if dev.iftype == extlib.DevTap { + pkt.Protocol = 0x6558 // TODO: hardcoded value + } + return } func (dev *Device) WritePacket(pkt *extlib.Packet) error { + pkt.Protocol = 0 return dev.iface.WritePacket(pkt) } func NewTunDevice(name string) (dev *Device, err error) { - dev = &Device{} + dev = &Device{iftype: extlib.DevTun} if dev.iface, err = extlib.Open(name, extlib.DevTun, true); err != nil { return } @@ -55,7 +72,7 @@ func NewTunDevice(name string) (dev *Device, err error) { } func NewTapDevice(name string) (dev *Device, err error) { - dev = &Device{} + dev = &Device{iftype: extlib.DevTap} if dev.iface, err = extlib.Open(name, extlib.DevTap, false); err != nil { return } |