diff --git a/route/address.go b/route/address.go
index 930bdff..5a3cc06 100644
--- a/route/address.go
+++ b/route/address.go
@@ -9,8 +9,7 @@
 
 import (
 	"runtime"
-
-	"golang.org/x/sys/unix"
+	"syscall"
 )
 
 // An Addr represents an address associated with packet routing.
@@ -27,7 +26,7 @@
 }
 
 // Family implements the Family method of Addr interface.
-func (a *LinkAddr) Family() int { return unix.AF_LINK }
+func (a *LinkAddr) Family() int { return syscall.AF_LINK }
 
 func (a *LinkAddr) lenAndSpace() (int, int) {
 	l := 8 + len(a.Name) + len(a.Addr)
@@ -44,7 +43,7 @@
 		return 0, errInvalidAddr
 	}
 	b[0] = byte(l)
-	b[1] = unix.AF_LINK
+	b[1] = syscall.AF_LINK
 	if a.Index > 0 {
 		nativeEndian.PutUint16(b[2:4], uint16(a.Index))
 	}
@@ -66,7 +65,7 @@
 	if len(b) < 8 {
 		return nil, errInvalidAddr
 	}
-	_, a, err := parseKernelLinkAddr(unix.AF_LINK, b[4:])
+	_, a, err := parseKernelLinkAddr(syscall.AF_LINK, b[4:])
 	if err != nil {
 		return nil, err
 	}
@@ -126,7 +125,7 @@
 }
 
 // Family implements the Family method of Addr interface.
-func (a *Inet4Addr) Family() int { return unix.AF_INET }
+func (a *Inet4Addr) Family() int { return syscall.AF_INET }
 
 func (a *Inet4Addr) lenAndSpace() (int, int) {
 	return sizeofSockaddrInet, roundup(sizeofSockaddrInet)
@@ -138,7 +137,7 @@
 		return 0, errShortBuffer
 	}
 	b[0] = byte(l)
-	b[1] = unix.AF_INET
+	b[1] = syscall.AF_INET
 	copy(b[4:8], a.IP[:])
 	return ll, nil
 }
@@ -150,7 +149,7 @@
 }
 
 // Family implements the Family method of Addr interface.
-func (a *Inet6Addr) Family() int { return unix.AF_INET6 }
+func (a *Inet6Addr) Family() int { return syscall.AF_INET6 }
 
 func (a *Inet6Addr) lenAndSpace() (int, int) {
 	return sizeofSockaddrInet6, roundup(sizeofSockaddrInet6)
@@ -162,7 +161,7 @@
 		return 0, errShortBuffer
 	}
 	b[0] = byte(l)
-	b[1] = unix.AF_INET6
+	b[1] = syscall.AF_INET6
 	copy(b[8:24], a.IP[:])
 	if a.ZoneID > 0 {
 		nativeEndian.PutUint32(b[24:28], uint32(a.ZoneID))
@@ -173,14 +172,14 @@
 // parseInetAddr parses b as an internet address for IPv4 or IPv6.
 func parseInetAddr(af int, b []byte) (Addr, error) {
 	switch af {
-	case unix.AF_INET:
+	case syscall.AF_INET:
 		if len(b) < sizeofSockaddrInet {
 			return nil, errInvalidAddr
 		}
 		a := &Inet4Addr{}
 		copy(a.IP[:], b[4:8])
 		return a, nil
-	case unix.AF_INET6:
+	case syscall.AF_INET6:
 		if len(b) < sizeofSockaddrInet6 {
 			return nil, errInvalidAddr
 		}
@@ -249,7 +248,7 @@
 		a := &Inet6Addr{}
 		copy(a.IP[:], b[off6:off6+16])
 		return int(b[0]), a, nil
-	case af == unix.AF_INET6:
+	case af == syscall.AF_INET6:
 		a := &Inet6Addr{}
 		if l-1 < off6 {
 			copy(a.IP[:], b[1:l])
@@ -369,15 +368,15 @@
 }
 
 func parseAddrs(attrs uint, fn func(int, []byte) (int, Addr, error), b []byte) ([]Addr, error) {
-	var as [unix.RTAX_MAX]Addr
-	af := int(unix.AF_UNSPEC)
-	for i := uint(0); i < unix.RTAX_MAX && len(b) >= roundup(0); i++ {
+	var as [syscall.RTAX_MAX]Addr
+	af := int(syscall.AF_UNSPEC)
+	for i := uint(0); i < syscall.RTAX_MAX && len(b) >= roundup(0); i++ {
 		if attrs&(1<<i) == 0 {
 			continue
 		}
-		if i <= unix.RTAX_BRD {
+		if i <= syscall.RTAX_BRD {
 			switch b[1] {
-			case unix.AF_LINK:
+			case syscall.AF_LINK:
 				a, err := parseLinkAddr(b)
 				if err != nil {
 					return nil, err
@@ -388,7 +387,7 @@
 					return nil, errMessageTooShort
 				}
 				b = b[l:]
-			case unix.AF_INET, unix.AF_INET6:
+			case syscall.AF_INET, syscall.AF_INET6:
 				af = int(b[1])
 				a, err := parseInetAddr(af, b)
 				if err != nil {
diff --git a/route/address_darwin_test.go b/route/address_darwin_test.go
index d367e96..b819183 100644
--- a/route/address_darwin_test.go
+++ b/route/address_darwin_test.go
@@ -6,9 +6,8 @@
 
 import (
 	"reflect"
+	"syscall"
 	"testing"
-
-	"golang.org/x/sys/unix"
 )
 
 type parseAddrsOnDarwinTest struct {
@@ -20,7 +19,7 @@
 
 var parseAddrsOnDarwinLittleEndianTests = []parseAddrsOnDarwinTest{
 	{
-		unix.RTA_DST | unix.RTA_GATEWAY | unix.RTA_NETMASK,
+		syscall.RTA_DST | syscall.RTA_GATEWAY | syscall.RTA_NETMASK,
 		parseKernelInetAddr,
 		[]byte{
 			0x10, 0x2, 0x0, 0x0, 0xc0, 0xa8, 0x56, 0x0,
diff --git a/route/address_test.go b/route/address_test.go
index fbc5838..bd7db4a 100644
--- a/route/address_test.go
+++ b/route/address_test.go
@@ -9,9 +9,8 @@
 
 import (
 	"reflect"
+	"syscall"
 	"testing"
-
-	"golang.org/x/sys/unix"
 )
 
 type parseAddrsTest struct {
@@ -23,7 +22,7 @@
 
 var parseAddrsLittleEndianTests = []parseAddrsTest{
 	{
-		unix.RTA_DST | unix.RTA_GATEWAY | unix.RTA_NETMASK | unix.RTA_BRD,
+		syscall.RTA_DST | syscall.RTA_GATEWAY | syscall.RTA_NETMASK | syscall.RTA_BRD,
 		parseKernelInetAddr,
 		[]byte{
 			0x38, 0x12, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0,
@@ -60,7 +59,7 @@
 		},
 	},
 	{
-		unix.RTA_NETMASK | unix.RTA_IFP | unix.RTA_IFA,
+		syscall.RTA_NETMASK | syscall.RTA_IFP | syscall.RTA_IFA,
 		parseKernelInetAddr,
 		[]byte{
 			0x7, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0,
diff --git a/route/interface_classic.go b/route/interface_classic.go
index d1d8284..903a196 100644
--- a/route/interface_classic.go
+++ b/route/interface_classic.go
@@ -9,8 +9,7 @@
 
 import (
 	"runtime"
-
-	"golang.org/x/sys/unix"
+	"syscall"
 )
 
 func (w *wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) {
@@ -22,13 +21,13 @@
 		return nil, errInvalidMessage
 	}
 	attrs := uint(nativeEndian.Uint32(b[4:8]))
-	if attrs&unix.RTA_IFP == 0 {
+	if attrs&syscall.RTA_IFP == 0 {
 		return nil, nil
 	}
 	m := &InterfaceMessage{
 		Version: int(b[2]),
 		Type:    int(b[3]),
-		Addrs:   make([]Addr, unix.RTAX_MAX),
+		Addrs:   make([]Addr, syscall.RTAX_MAX),
 		Flags:   int(nativeEndian.Uint32(b[8:12])),
 		Index:   int(nativeEndian.Uint16(b[12:14])),
 		extOff:  w.extOff,
@@ -38,7 +37,7 @@
 	if err != nil {
 		return nil, err
 	}
-	m.Addrs[unix.RTAX_IFP] = a
+	m.Addrs[syscall.RTAX_IFP] = a
 	m.Name = a.(*LinkAddr).Name
 	return m, nil
 }
diff --git a/route/interface_freebsd.go b/route/interface_freebsd.go
index 7e90b17..14d251c 100644
--- a/route/interface_freebsd.go
+++ b/route/interface_freebsd.go
@@ -4,11 +4,11 @@
 
 package route
 
-import "golang.org/x/sys/unix"
+import "syscall"
 
 func (w *wireFormat) parseInterfaceMessage(typ RIBType, b []byte) (Message, error) {
 	var extOff, bodyOff int
-	if typ == unix.NET_RT_IFLISTL {
+	if typ == syscall.NET_RT_IFLISTL {
 		if len(b) < 20 {
 			return nil, errMessageTooShort
 		}
@@ -26,7 +26,7 @@
 		return nil, errInvalidMessage
 	}
 	attrs := uint(nativeEndian.Uint32(b[4:8]))
-	if attrs&unix.RTA_IFP == 0 {
+	if attrs&syscall.RTA_IFP == 0 {
 		return nil, nil
 	}
 	m := &InterfaceMessage{
@@ -34,7 +34,7 @@
 		Type:    int(b[3]),
 		Flags:   int(nativeEndian.Uint32(b[8:12])),
 		Index:   int(nativeEndian.Uint16(b[12:14])),
-		Addrs:   make([]Addr, unix.RTAX_MAX),
+		Addrs:   make([]Addr, syscall.RTAX_MAX),
 		extOff:  extOff,
 		raw:     b[:l],
 	}
@@ -42,14 +42,14 @@
 	if err != nil {
 		return nil, err
 	}
-	m.Addrs[unix.RTAX_IFP] = a
+	m.Addrs[syscall.RTAX_IFP] = a
 	m.Name = a.(*LinkAddr).Name
 	return m, nil
 }
 
 func (w *wireFormat) parseInterfaceAddrMessage(typ RIBType, b []byte) (Message, error) {
 	var bodyOff int
-	if typ == unix.NET_RT_IFLISTL {
+	if typ == syscall.NET_RT_IFLISTL {
 		if len(b) < 24 {
 			return nil, errMessageTooShort
 		}
diff --git a/route/interface_openbsd.go b/route/interface_openbsd.go
index fe003e3..d369409 100644
--- a/route/interface_openbsd.go
+++ b/route/interface_openbsd.go
@@ -4,7 +4,7 @@
 
 package route
 
-import "golang.org/x/sys/unix"
+import "syscall"
 
 func (*wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) {
 	if len(b) < 32 {
@@ -15,7 +15,7 @@
 		return nil, errInvalidMessage
 	}
 	attrs := uint(nativeEndian.Uint32(b[12:16]))
-	if attrs&unix.RTA_IFP == 0 {
+	if attrs&syscall.RTA_IFP == 0 {
 		return nil, nil
 	}
 	m := &InterfaceMessage{
@@ -23,7 +23,7 @@
 		Type:    int(b[3]),
 		Flags:   int(nativeEndian.Uint32(b[16:20])),
 		Index:   int(nativeEndian.Uint16(b[6:8])),
-		Addrs:   make([]Addr, unix.RTAX_MAX),
+		Addrs:   make([]Addr, syscall.RTAX_MAX),
 		raw:     b[:l],
 	}
 	ll := int(nativeEndian.Uint16(b[4:6]))
@@ -34,7 +34,7 @@
 	if err != nil {
 		return nil, err
 	}
-	m.Addrs[unix.RTAX_IFP] = a
+	m.Addrs[syscall.RTAX_IFP] = a
 	m.Name = a.(*LinkAddr).Name
 	return m, nil
 }
diff --git a/route/message_darwin_test.go b/route/message_darwin_test.go
index debe2e6..7d6a3c7 100644
--- a/route/message_darwin_test.go
+++ b/route/message_darwin_test.go
@@ -5,16 +5,15 @@
 package route
 
 import (
+	"syscall"
 	"testing"
-
-	"golang.org/x/sys/unix"
 )
 
 func TestFetchAndParseRIBOnDarwin(t *testing.T) {
-	for _, typ := range []RIBType{unix.NET_RT_FLAGS, unix.NET_RT_DUMP2, unix.NET_RT_IFLIST2} {
+	for _, typ := range []RIBType{syscall.NET_RT_FLAGS, syscall.NET_RT_DUMP2, syscall.NET_RT_IFLIST2} {
 		var lastErr error
 		var ms []Message
-		for _, af := range []int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
+		for _, af := range []int{syscall.AF_UNSPEC, syscall.AF_INET, syscall.AF_INET6} {
 			rs, err := fetchAndParseRIB(af, typ)
 			if err != nil {
 				lastErr = err
diff --git a/route/message_freebsd_test.go b/route/message_freebsd_test.go
index 9f899c6..62677c1 100644
--- a/route/message_freebsd_test.go
+++ b/route/message_freebsd_test.go
@@ -5,16 +5,15 @@
 package route
 
 import (
+	"syscall"
 	"testing"
-
-	"golang.org/x/sys/unix"
 )
 
 func TestFetchAndParseRIBOnFreeBSD(t *testing.T) {
-	for _, typ := range []RIBType{unix.NET_RT_IFMALIST} {
+	for _, typ := range []RIBType{syscall.NET_RT_IFMALIST} {
 		var lastErr error
 		var ms []Message
-		for _, af := range []int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
+		for _, af := range []int{syscall.AF_UNSPEC, syscall.AF_INET, syscall.AF_INET6} {
 			rs, err := fetchAndParseRIB(af, typ)
 			if err != nil {
 				lastErr = err
@@ -38,7 +37,7 @@
 }
 
 func TestFetchAndParseRIBOnFreeBSD10AndAbove(t *testing.T) {
-	if _, err := FetchRIB(unix.AF_UNSPEC, unix.NET_RT_IFLISTL, 0); err != nil {
+	if _, err := FetchRIB(syscall.AF_UNSPEC, syscall.NET_RT_IFLISTL, 0); err != nil {
 		t.Skip("NET_RT_IFLISTL not supported")
 	}
 	if compatFreeBSD32 {
@@ -51,12 +50,12 @@
 		msgs []Message
 		ss   []string
 	}{
-		{typ: unix.NET_RT_IFLIST},
-		{typ: unix.NET_RT_IFLISTL},
+		{typ: syscall.NET_RT_IFLIST},
+		{typ: syscall.NET_RT_IFLISTL},
 	}
 	for i := range tests {
 		var lastErr error
-		for _, af := range []int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
+		for _, af := range []int{syscall.AF_UNSPEC, syscall.AF_INET, syscall.AF_INET6} {
 			rs, err := fetchAndParseRIB(af, tests[i].typ)
 			if err != nil {
 				lastErr = err
diff --git a/route/message_test.go b/route/message_test.go
index 702d15a..61927d6 100644
--- a/route/message_test.go
+++ b/route/message_test.go
@@ -12,15 +12,13 @@
 	"syscall"
 	"testing"
 	"time"
-
-	"golang.org/x/sys/unix"
 )
 
 func TestFetchAndParseRIB(t *testing.T) {
-	for _, typ := range []RIBType{unix.NET_RT_DUMP, unix.NET_RT_IFLIST} {
+	for _, typ := range []RIBType{syscall.NET_RT_DUMP, syscall.NET_RT_IFLIST} {
 		var lastErr error
 		var ms []Message
-		for _, af := range []int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
+		for _, af := range []int{syscall.AF_UNSPEC, syscall.AF_INET, syscall.AF_INET6} {
 			rs, err := fetchAndParseRIB(af, typ)
 			if err != nil {
 				lastErr = err
@@ -51,7 +49,7 @@
 func init() {
 	// We need to keep rtmonSock alive to avoid treading on
 	// recycled socket descriptors.
-	rtmonSock, rtmonErr = syscall.Socket(unix.AF_ROUTE, unix.SOCK_RAW, unix.AF_UNSPEC)
+	rtmonSock, rtmonErr = syscall.Socket(syscall.AF_ROUTE, syscall.SOCK_RAW, syscall.AF_UNSPEC)
 }
 
 // TestMonitorAndParseRIB leaks a worker goroutine and a socket
@@ -147,60 +145,60 @@
 }
 
 func TestRouteMessage(t *testing.T) {
-	s, err := syscall.Socket(unix.AF_ROUTE, unix.SOCK_RAW, unix.AF_UNSPEC)
+	s, err := syscall.Socket(syscall.AF_ROUTE, syscall.SOCK_RAW, syscall.AF_UNSPEC)
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer syscall.Close(s)
 
 	var ms []RouteMessage
-	for _, af := range []int{unix.AF_INET, unix.AF_INET6} {
-		if _, err := fetchAndParseRIB(af, unix.NET_RT_DUMP); err != nil {
+	for _, af := range []int{syscall.AF_INET, syscall.AF_INET6} {
+		if _, err := fetchAndParseRIB(af, syscall.NET_RT_DUMP); err != nil {
 			t.Log(err)
 			continue
 		}
 		switch af {
-		case unix.AF_INET:
+		case syscall.AF_INET:
 			ms = append(ms, []RouteMessage{
 				{
-					Type: unix.RTM_GET,
+					Type: syscall.RTM_GET,
 					Addrs: []Addr{
-						unix.RTAX_DST:     &Inet4Addr{IP: [4]byte{127, 0, 0, 1}},
-						unix.RTAX_GATEWAY: nil,
-						unix.RTAX_NETMASK: nil,
-						unix.RTAX_GENMASK: nil,
-						unix.RTAX_IFP:     &LinkAddr{},
-						unix.RTAX_IFA:     &Inet4Addr{},
-						unix.RTAX_AUTHOR:  nil,
-						unix.RTAX_BRD:     &Inet4Addr{},
+						syscall.RTAX_DST:     &Inet4Addr{IP: [4]byte{127, 0, 0, 1}},
+						syscall.RTAX_GATEWAY: nil,
+						syscall.RTAX_NETMASK: nil,
+						syscall.RTAX_GENMASK: nil,
+						syscall.RTAX_IFP:     &LinkAddr{},
+						syscall.RTAX_IFA:     &Inet4Addr{},
+						syscall.RTAX_AUTHOR:  nil,
+						syscall.RTAX_BRD:     &Inet4Addr{},
 					},
 				},
 				{
-					Type: unix.RTM_GET,
+					Type: syscall.RTM_GET,
 					Addrs: []Addr{
-						unix.RTAX_DST: &Inet4Addr{IP: [4]byte{127, 0, 0, 1}},
+						syscall.RTAX_DST: &Inet4Addr{IP: [4]byte{127, 0, 0, 1}},
 					},
 				},
 			}...)
-		case unix.AF_INET6:
+		case syscall.AF_INET6:
 			ms = append(ms, []RouteMessage{
 				{
-					Type: unix.RTM_GET,
+					Type: syscall.RTM_GET,
 					Addrs: []Addr{
-						unix.RTAX_DST:     &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}},
-						unix.RTAX_GATEWAY: nil,
-						unix.RTAX_NETMASK: nil,
-						unix.RTAX_GENMASK: nil,
-						unix.RTAX_IFP:     &LinkAddr{},
-						unix.RTAX_IFA:     &Inet6Addr{},
-						unix.RTAX_AUTHOR:  nil,
-						unix.RTAX_BRD:     &Inet6Addr{},
+						syscall.RTAX_DST:     &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}},
+						syscall.RTAX_GATEWAY: nil,
+						syscall.RTAX_NETMASK: nil,
+						syscall.RTAX_GENMASK: nil,
+						syscall.RTAX_IFP:     &LinkAddr{},
+						syscall.RTAX_IFA:     &Inet6Addr{},
+						syscall.RTAX_AUTHOR:  nil,
+						syscall.RTAX_BRD:     &Inet6Addr{},
 					},
 				},
 				{
-					Type: unix.RTM_GET,
+					Type: syscall.RTM_GET,
 					Addrs: []Addr{
-						unix.RTAX_DST: &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}},
+						syscall.RTAX_DST: &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}},
 					},
 				},
 			}...)
diff --git a/route/route.go b/route/route.go
index b99cb8f..3ab5bcd 100644
--- a/route/route.go
+++ b/route/route.go
@@ -17,8 +17,6 @@
 	"errors"
 	"os"
 	"syscall"
-
-	"golang.org/x/sys/unix"
 )
 
 var (
@@ -113,7 +111,7 @@
 	try := 0
 	for {
 		try++
-		mib := [6]int32{unix.CTL_NET, unix.AF_ROUTE, 0, int32(af), int32(typ), int32(arg)}
+		mib := [6]int32{syscall.CTL_NET, syscall.AF_ROUTE, 0, int32(af), int32(typ), int32(arg)}
 		n := uintptr(0)
 		if err := sysctl(mib[:], nil, &n, nil, 0); err != nil {
 			return nil, os.NewSyscallError("sysctl", err)
diff --git a/route/route_openbsd.go b/route/route_openbsd.go
index e834fd0..f848fb1 100644
--- a/route/route_openbsd.go
+++ b/route/route_openbsd.go
@@ -6,8 +6,6 @@
 
 import (
 	"syscall"
-
-	"golang.org/x/sys/unix"
 )
 
 func (m *RouteMessage) marshal() ([]byte, error) {
@@ -15,7 +13,7 @@
 	b := make([]byte, l)
 	nativeEndian.PutUint16(b[:2], uint16(l))
 	if m.Version == 0 {
-		b[2] = unix.RTM_VERSION
+		b[2] = syscall.RTM_VERSION
 	} else {
 		b[2] = byte(m.Version)
 	}
diff --git a/route/route_test.go b/route/route_test.go
index 7ade140..55c8f23 100644
--- a/route/route_test.go
+++ b/route/route_test.go
@@ -11,8 +11,7 @@
 	"fmt"
 	"os/exec"
 	"runtime"
-
-	"golang.org/x/sys/unix"
+	"syscall"
 )
 
 func (m *RouteMessage) String() string {
@@ -178,13 +177,13 @@
 
 func (af addrFamily) String() string {
 	switch af {
-	case unix.AF_UNSPEC:
+	case syscall.AF_UNSPEC:
 		return "unspec"
-	case unix.AF_LINK:
+	case syscall.AF_LINK:
 		return "link"
-	case unix.AF_INET:
+	case syscall.AF_INET:
 		return "inet4"
-	case unix.AF_INET6:
+	case syscall.AF_INET6:
 		return "inet6"
 	default:
 		return fmt.Sprintf("%d", af)
@@ -283,24 +282,24 @@
 
 func (as addrs) match(attrs addrAttrs) error {
 	var ts addrAttrs
-	af := unix.AF_UNSPEC
+	af := syscall.AF_UNSPEC
 	for i := range as {
 		if as[i] != nil {
 			ts |= 1 << uint(i)
 		}
 		switch as[i].(type) {
 		case *Inet4Addr:
-			if af == unix.AF_UNSPEC {
-				af = unix.AF_INET
+			if af == syscall.AF_UNSPEC {
+				af = syscall.AF_INET
 			}
-			if af != unix.AF_INET {
+			if af != syscall.AF_INET {
 				return fmt.Errorf("got %v; want %v", addrs(as), addrFamily(af))
 			}
 		case *Inet6Addr:
-			if af == unix.AF_UNSPEC {
-				af = unix.AF_INET6
+			if af == syscall.AF_UNSPEC {
+				af = syscall.AF_INET6
 			}
-			if af != unix.AF_INET6 {
+			if af != syscall.AF_INET6 {
 				return fmt.Errorf("got %v; want %v", addrs(as), addrFamily(af))
 			}
 		}
diff --git a/route/sys.go b/route/sys.go
index 03e727a..7c75574 100644
--- a/route/sys.go
+++ b/route/sys.go
@@ -8,9 +8,8 @@
 package route
 
 import (
+	"syscall"
 	"unsafe"
-
-	"golang.org/x/sys/unix"
 )
 
 var (
@@ -29,7 +28,7 @@
 		nativeEndian = bigEndian
 	}
 	// might get overridden in probeRoutingStack
-	rtmVersion = unix.RTM_VERSION
+	rtmVersion = syscall.RTM_VERSION
 	kernelAlign, wireFormats = probeRoutingStack()
 }
 
diff --git a/route/sys_darwin.go b/route/sys_darwin.go
index b79d94a..c8c4eec 100644
--- a/route/sys_darwin.go
+++ b/route/sys_darwin.go
@@ -4,11 +4,11 @@
 
 package route
 
-import "golang.org/x/sys/unix"
+import "syscall"
 
 func (typ RIBType) parseable() bool {
 	switch typ {
-	case unix.NET_RT_STAT, unix.NET_RT_TRASH:
+	case syscall.NET_RT_STAT, syscall.NET_RT_TRASH:
 		return false
 	default:
 		return true
@@ -68,22 +68,22 @@
 	ifmam2.parse = ifmam2.parseInterfaceMulticastAddrMessage
 	// Darwin kernels require 32-bit aligned access to routing facilities.
 	return 4, map[int]*wireFormat{
-		unix.RTM_ADD:       rtm,
-		unix.RTM_DELETE:    rtm,
-		unix.RTM_CHANGE:    rtm,
-		unix.RTM_GET:       rtm,
-		unix.RTM_LOSING:    rtm,
-		unix.RTM_REDIRECT:  rtm,
-		unix.RTM_MISS:      rtm,
-		unix.RTM_LOCK:      rtm,
-		unix.RTM_RESOLVE:   rtm,
-		unix.RTM_NEWADDR:   ifam,
-		unix.RTM_DELADDR:   ifam,
-		unix.RTM_IFINFO:    ifm,
-		unix.RTM_NEWMADDR:  ifmam,
-		unix.RTM_DELMADDR:  ifmam,
-		unix.RTM_IFINFO2:   ifm2,
-		unix.RTM_NEWMADDR2: ifmam2,
-		unix.RTM_GET2:      rtm2,
+		syscall.RTM_ADD:       rtm,
+		syscall.RTM_DELETE:    rtm,
+		syscall.RTM_CHANGE:    rtm,
+		syscall.RTM_GET:       rtm,
+		syscall.RTM_LOSING:    rtm,
+		syscall.RTM_REDIRECT:  rtm,
+		syscall.RTM_MISS:      rtm,
+		syscall.RTM_LOCK:      rtm,
+		syscall.RTM_RESOLVE:   rtm,
+		syscall.RTM_NEWADDR:   ifam,
+		syscall.RTM_DELADDR:   ifam,
+		syscall.RTM_IFINFO:    ifm,
+		syscall.RTM_NEWMADDR:  ifmam,
+		syscall.RTM_DELMADDR:  ifmam,
+		syscall.RTM_IFINFO2:   ifm2,
+		syscall.RTM_NEWMADDR2: ifmam2,
+		syscall.RTM_GET2:      rtm2,
 	}
 }
diff --git a/route/sys_dragonfly.go b/route/sys_dragonfly.go
index db53402..577fb16 100644
--- a/route/sys_dragonfly.go
+++ b/route/sys_dragonfly.go
@@ -7,8 +7,6 @@
 import (
 	"syscall"
 	"unsafe"
-
-	"golang.org/x/sys/unix"
 )
 
 func (typ RIBType) parseable() bool { return true }
@@ -71,20 +69,20 @@
 	}
 
 	return int(unsafe.Sizeof(p)), map[int]*wireFormat{
-		unix.RTM_ADD:        rtm,
-		unix.RTM_DELETE:     rtm,
-		unix.RTM_CHANGE:     rtm,
-		unix.RTM_GET:        rtm,
-		unix.RTM_LOSING:     rtm,
-		unix.RTM_REDIRECT:   rtm,
-		unix.RTM_MISS:       rtm,
-		unix.RTM_LOCK:       rtm,
-		unix.RTM_RESOLVE:    rtm,
-		unix.RTM_NEWADDR:    ifam,
-		unix.RTM_DELADDR:    ifam,
-		unix.RTM_IFINFO:     ifm,
-		unix.RTM_NEWMADDR:   ifmam,
-		unix.RTM_DELMADDR:   ifmam,
-		unix.RTM_IFANNOUNCE: ifanm,
+		syscall.RTM_ADD:        rtm,
+		syscall.RTM_DELETE:     rtm,
+		syscall.RTM_CHANGE:     rtm,
+		syscall.RTM_GET:        rtm,
+		syscall.RTM_LOSING:     rtm,
+		syscall.RTM_REDIRECT:   rtm,
+		syscall.RTM_MISS:       rtm,
+		syscall.RTM_LOCK:       rtm,
+		syscall.RTM_RESOLVE:    rtm,
+		syscall.RTM_NEWADDR:    ifam,
+		syscall.RTM_DELADDR:    ifam,
+		syscall.RTM_IFINFO:     ifm,
+		syscall.RTM_NEWMADDR:   ifmam,
+		syscall.RTM_DELMADDR:   ifmam,
+		syscall.RTM_IFANNOUNCE: ifanm,
 	}
 }
diff --git a/route/sys_freebsd.go b/route/sys_freebsd.go
index a9727de..0a66dce 100644
--- a/route/sys_freebsd.go
+++ b/route/sys_freebsd.go
@@ -7,8 +7,6 @@
 import (
 	"syscall"
 	"unsafe"
-
-	"golang.org/x/sys/unix"
 )
 
 func (typ RIBType) parseable() bool { return true }
@@ -143,20 +141,20 @@
 	ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage
 	ifanm.parse = ifanm.parseInterfaceAnnounceMessage
 	return align, map[int]*wireFormat{
-		unix.RTM_ADD:        rtm,
-		unix.RTM_DELETE:     rtm,
-		unix.RTM_CHANGE:     rtm,
-		unix.RTM_GET:        rtm,
-		unix.RTM_LOSING:     rtm,
-		unix.RTM_REDIRECT:   rtm,
-		unix.RTM_MISS:       rtm,
-		unix.RTM_LOCK:       rtm,
-		unix.RTM_RESOLVE:    rtm,
-		unix.RTM_NEWADDR:    ifam,
-		unix.RTM_DELADDR:    ifam,
-		unix.RTM_IFINFO:     ifm,
-		unix.RTM_NEWMADDR:   ifmam,
-		unix.RTM_DELMADDR:   ifmam,
-		unix.RTM_IFANNOUNCE: ifanm,
+		syscall.RTM_ADD:        rtm,
+		syscall.RTM_DELETE:     rtm,
+		syscall.RTM_CHANGE:     rtm,
+		syscall.RTM_GET:        rtm,
+		syscall.RTM_LOSING:     rtm,
+		syscall.RTM_REDIRECT:   rtm,
+		syscall.RTM_MISS:       rtm,
+		syscall.RTM_LOCK:       rtm,
+		syscall.RTM_RESOLVE:    rtm,
+		syscall.RTM_NEWADDR:    ifam,
+		syscall.RTM_DELADDR:    ifam,
+		syscall.RTM_IFINFO:     ifm,
+		syscall.RTM_NEWMADDR:   ifmam,
+		syscall.RTM_DELMADDR:   ifmam,
+		syscall.RTM_IFANNOUNCE: ifanm,
 	}
 }
diff --git a/route/sys_netbsd.go b/route/sys_netbsd.go
index 23826c4..be4460e 100644
--- a/route/sys_netbsd.go
+++ b/route/sys_netbsd.go
@@ -4,7 +4,7 @@
 
 package route
 
-import "golang.org/x/sys/unix"
+import "syscall"
 
 func (typ RIBType) parseable() bool { return true }
 
@@ -56,18 +56,18 @@
 	// NetBSD 6 and above kernels require 64-bit aligned access to
 	// routing facilities.
 	return 8, map[int]*wireFormat{
-		unix.RTM_ADD:        rtm,
-		unix.RTM_DELETE:     rtm,
-		unix.RTM_CHANGE:     rtm,
-		unix.RTM_GET:        rtm,
-		unix.RTM_LOSING:     rtm,
-		unix.RTM_REDIRECT:   rtm,
-		unix.RTM_MISS:       rtm,
-		unix.RTM_LOCK:       rtm,
-		unix.RTM_RESOLVE:    rtm,
-		unix.RTM_NEWADDR:    ifam,
-		unix.RTM_DELADDR:    ifam,
-		unix.RTM_IFANNOUNCE: ifanm,
-		unix.RTM_IFINFO:     ifm,
+		syscall.RTM_ADD:        rtm,
+		syscall.RTM_DELETE:     rtm,
+		syscall.RTM_CHANGE:     rtm,
+		syscall.RTM_GET:        rtm,
+		syscall.RTM_LOSING:     rtm,
+		syscall.RTM_REDIRECT:   rtm,
+		syscall.RTM_MISS:       rtm,
+		syscall.RTM_LOCK:       rtm,
+		syscall.RTM_RESOLVE:    rtm,
+		syscall.RTM_NEWADDR:    ifam,
+		syscall.RTM_DELADDR:    ifam,
+		syscall.RTM_IFANNOUNCE: ifanm,
+		syscall.RTM_IFINFO:     ifm,
 	}
 }
diff --git a/route/sys_openbsd.go b/route/sys_openbsd.go
index 21f1d3d..7f4f93c 100644
--- a/route/sys_openbsd.go
+++ b/route/sys_openbsd.go
@@ -5,14 +5,13 @@
 package route
 
 import (
+	"syscall"
 	"unsafe"
-
-	"golang.org/x/sys/unix"
 )
 
 func (typ RIBType) parseable() bool {
 	switch typ {
-	case unix.NET_RT_STATS, unix.NET_RT_TABLE:
+	case syscall.NET_RT_STATS, syscall.NET_RT_TABLE:
 		return false
 	default:
 		return true
@@ -66,18 +65,18 @@
 	ifanm := &wireFormat{extOff: -1, bodyOff: -1}
 	ifanm.parse = ifanm.parseInterfaceAnnounceMessage
 	return int(unsafe.Sizeof(p)), map[int]*wireFormat{
-		unix.RTM_ADD:        rtm,
-		unix.RTM_DELETE:     rtm,
-		unix.RTM_CHANGE:     rtm,
-		unix.RTM_GET:        rtm,
-		unix.RTM_LOSING:     rtm,
-		unix.RTM_REDIRECT:   rtm,
-		unix.RTM_MISS:       rtm,
-		unix.RTM_RESOLVE:    rtm,
-		unix.RTM_NEWADDR:    ifam,
-		unix.RTM_DELADDR:    ifam,
-		unix.RTM_IFINFO:     ifm,
-		unix.RTM_IFANNOUNCE: ifanm,
-		unix.RTM_DESYNC:     rtm,
+		syscall.RTM_ADD:        rtm,
+		syscall.RTM_DELETE:     rtm,
+		syscall.RTM_CHANGE:     rtm,
+		syscall.RTM_GET:        rtm,
+		syscall.RTM_LOSING:     rtm,
+		syscall.RTM_REDIRECT:   rtm,
+		syscall.RTM_MISS:       rtm,
+		syscall.RTM_RESOLVE:    rtm,
+		syscall.RTM_NEWADDR:    ifam,
+		syscall.RTM_DELADDR:    ifam,
+		syscall.RTM_IFINFO:     ifm,
+		syscall.RTM_IFANNOUNCE: ifanm,
+		syscall.RTM_DESYNC:     rtm,
 	}
 }
