summaryrefslogtreecommitdiff
path: root/tuntap
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2017-08-13 17:10:51 +0200
committerChristian Pointner <equinox@anytun.org>2017-08-13 17:10:51 +0200
commitdc8c3df38efd9b94ba90c4f55a4ce805cfc3bbba (patch)
tree4f53576d022018191b4415ed8b66d2f5342de0ff /tuntap
parentadded minimalistc tuntap device (diff)
make use of new tuntap device
Diffstat (limited to 'tuntap')
-rw-r--r--tuntap/tuntap.go27
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
}