summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-02-09 19:48:27 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2021-02-09 19:50:31 +0100
commitc040dea7985b7b5a35ca2fa746c3385732c44bd1 (patch)
treed9dc0633a65e854ffeea40d3bcf9f54ea8ec018a
parent5cdb862f15fc4d0772ace2ca3fd0271233012185 (diff)
tun: use errors.Is for unwrapping
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--tun/tun_darwin.go11
-rw-r--r--tun/tun_openbsd.go13
2 files changed, 6 insertions, 18 deletions
diff --git a/tun/tun_darwin.go b/tun/tun_darwin.go
index 7c7f3e2..f513d03 100644
--- a/tun/tun_darwin.go
+++ b/tun/tun_darwin.go
@@ -6,6 +6,7 @@
package tun
import (
+ "errors"
"fmt"
"io/ioutil"
"net"
@@ -31,13 +32,9 @@ type NativeTun struct {
func retryInterfaceByIndex(index int) (iface *net.Interface, err error) {
for i := 0; i < 20; i++ {
iface, err = net.InterfaceByIndex(index)
- if err != nil {
- if opErr, ok := err.(*net.OpError); ok {
- if syscallErr, ok := opErr.Err.(*os.SyscallError); ok && syscallErr.Err == syscall.ENOMEM {
- time.Sleep(time.Duration(i) * time.Second / 3)
- continue
- }
- }
+ if err != nil && errors.Is(err, syscall.ENOMEM) {
+ time.Sleep(time.Duration(i) * time.Second / 3)
+ continue
}
return iface, err
}
diff --git a/tun/tun_openbsd.go b/tun/tun_openbsd.go
index ab4e99f..b2815d7 100644
--- a/tun/tun_openbsd.go
+++ b/tun/tun_openbsd.go
@@ -6,6 +6,7 @@
package tun
import (
+ "errors"
"fmt"
"io/ioutil"
"net"
@@ -99,16 +100,6 @@ func (tun *NativeTun) routineRouteListener(tunIfindex int) {
}
}
-func errorIsEBUSY(err error) bool {
- if pe, ok := err.(*os.PathError); ok {
- err = pe.Err
- }
- if errno, ok := err.(syscall.Errno); ok && errno == syscall.EBUSY {
- return true
- }
- return false
-}
-
func CreateTUN(name string, mtu int) (Device, error) {
ifIndex := -1
if name != "tun" {
@@ -126,7 +117,7 @@ func CreateTUN(name string, mtu int) (Device, error) {
} else {
for ifIndex = 0; ifIndex < 256; ifIndex++ {
tunfile, err = os.OpenFile(fmt.Sprintf("/dev/tun%d", ifIndex), unix.O_RDWR, 0)
- if err == nil || !errorIsEBUSY(err) {
+ if err == nil || !errors.Is(err, syscall.EBUSY) {
break
}
}