summaryrefslogtreecommitdiff
path: root/tuntap
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2017-08-15 01:00:41 +0200
committerChristian Pointner <equinox@anytun.org>2017-08-15 01:00:41 +0200
commit05911a4b4613cd2bf45c0b5b16449884ca24f7e0 (patch)
tree0d1516d18069fd4287f5f64f31f7888d792f813e /tuntap
parentimplemented post up script (diff)
improved workaround for interface name 0-byte padding
Diffstat (limited to 'tuntap')
-rw-r--r--tuntap/tuntap.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/tuntap/tuntap.go b/tuntap/tuntap.go
index db1492f..18688b4 100644
--- a/tuntap/tuntap.go
+++ b/tuntap/tuntap.go
@@ -64,7 +64,7 @@ func (dev *Device) Configure(addr net.IPNet) error {
// TODO: this only works on linux...
ln, err := netlink.LinkByName(dev.ifname)
if err != nil {
- return fmt.Errorf("netlink(open netlink by name) failed: %v", dev.ifname, err)
+ return fmt.Errorf("netlink(open netlink by name) failed: %v", err)
}
if err = netlink.AddrAdd(ln, &netlink.Addr{IPNet: &addr}); err != nil {
return fmt.Errorf("netlink(addr add) failed: %v", err)
@@ -106,7 +106,13 @@ func NewTunDevice(name string) (dev *Device, err error) {
if dev.iface, err = extlib.Open(name, extlib.DevTun, true); err != nil {
return
}
- dev.ifname = strings.TrimRight(dev.iface.Name(), "\x00") // TODO: fix this upstream
+ dev.ifname = dev.iface.Name()
+ // TODO: remove the following as soon as https://github.com/lab11/go-tuntap/pull/3 is merged
+ idx := strings.IndexByte(dev.ifname, 0)
+ if idx < 0 {
+ idx = len(dev.ifname)
+ }
+ dev.ifname = dev.ifname[:idx]
return
}
@@ -115,7 +121,13 @@ func NewTapDevice(name string) (dev *Device, err error) {
if dev.iface, err = extlib.Open(name, extlib.DevTap, false); err != nil {
return
}
- dev.ifname = strings.TrimRight(dev.iface.Name(), "\x00") // TODO: fix this upstream
+ dev.ifname = dev.iface.Name()
+ // TODO: remove the following as soon as https://github.com/lab11/go-tuntap/pull/3 is merged
+ idx := strings.IndexByte(dev.ifname, 0)
+ if idx < 0 {
+ idx = len(dev.ifname)
+ }
+ dev.ifname = dev.ifname[:idx]
return
}