From 5cad6a2ce3a7724659d189331e6486682b7ef01c Mon Sep 17 00:00:00 2001 From: Nate Brown Date: Sat, 23 Nov 2019 23:18:03 -0800 Subject: [PATCH] Improve tun activation error messages --- tun_linux.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tun_linux.go b/tun_linux.go index 2a1a197..a5c7ebb 100644 --- a/tun_linux.go +++ b/tun_linux.go @@ -168,43 +168,43 @@ func (c Tun) Activate() error { // Set the device ip address if err = ioctl(fd, syscall.SIOCSIFADDR, uintptr(unsafe.Pointer(&ifra))); err != nil { - return err + return fmt.Errorf("failed to set tun address: %s", err) } // Set the device network ifra.Addr.Addr = mask if err = ioctl(fd, syscall.SIOCSIFNETMASK, uintptr(unsafe.Pointer(&ifra))); err != nil { - return err + return fmt.Errorf("failed to set tun netmask: %s", err) } // Set the device name ifrf := ifReq{Name: devName} if err = ioctl(fd, syscall.SIOCGIFFLAGS, uintptr(unsafe.Pointer(&ifrf))); err != nil { - return err + return fmt.Errorf("failed to set tun device name: %s", err) } // Set the MTU on the device ifm := ifreqMTU{Name: devName, MTU: c.MaxMTU} if err = ioctl(fd, syscall.SIOCSIFMTU, uintptr(unsafe.Pointer(&ifm))); err != nil { - return err + return fmt.Errorf("failed to set tun mtu: %s", err) } // Set the transmit queue length ifrq := ifreqQLEN{Name: devName, Value: c.TXQueueLen} if err = ioctl(fd, syscall.SIOCSIFTXQLEN, uintptr(unsafe.Pointer(&ifrq))); err != nil { - return err + return fmt.Errorf("failed to set tun tx queue length: %s", err) } // Bring up the interface ifrf.Flags = ifrf.Flags | syscall.IFF_UP if err = ioctl(fd, syscall.SIOCSIFFLAGS, uintptr(unsafe.Pointer(&ifrf))); err != nil { - return err + return fmt.Errorf("failed to bring the tun device up: %s", err) } // Set the routes link, err := netlink.LinkByName(c.Device) if err != nil { - return err + return fmt.Errorf("failed to get tun device link: %s", err) } // Default route @@ -242,7 +242,7 @@ func (c Tun) Activate() error { // Run the interface ifrf.Flags = ifrf.Flags | syscall.IFF_UP | syscall.IFF_RUNNING if err = ioctl(fd, syscall.SIOCSIFFLAGS, uintptr(unsafe.Pointer(&ifrf))); err != nil { - return err + return fmt.Errorf("failed to run tun device: %s", err) } return nil