route: drops const that x/unix has

For golang/go#54035

Change-Id: I5163bb1d562f0c7f7de16995fcb42ece894d07bf
Reviewed-on: https://go-review.googlesource.com/c/net/+/419180
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Run-TryBot: Meng Zhuo <mzh@golangcn.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
This commit is contained in:
Meng Zhuo
2022-07-25 10:42:17 +08:00
committed by Gopher Robot
parent 993b7b1e3a
commit 41545e8bf2
31 changed files with 215 additions and 1168 deletions

View File

@@ -7,7 +7,11 @@
package route
import "runtime"
import (
"runtime"
"golang.org/x/sys/unix"
)
// An Addr represents an address associated with packet routing.
type Addr interface {
@@ -23,7 +27,7 @@ type LinkAddr struct {
}
// Family implements the Family method of Addr interface.
func (a *LinkAddr) Family() int { return sysAF_LINK }
func (a *LinkAddr) Family() int { return unix.AF_LINK }
func (a *LinkAddr) lenAndSpace() (int, int) {
l := 8 + len(a.Name) + len(a.Addr)
@@ -40,7 +44,7 @@ func (a *LinkAddr) marshal(b []byte) (int, error) {
return 0, errInvalidAddr
}
b[0] = byte(l)
b[1] = sysAF_LINK
b[1] = unix.AF_LINK
if a.Index > 0 {
nativeEndian.PutUint16(b[2:4], uint16(a.Index))
}
@@ -62,7 +66,7 @@ func parseLinkAddr(b []byte) (Addr, error) {
if len(b) < 8 {
return nil, errInvalidAddr
}
_, a, err := parseKernelLinkAddr(sysAF_LINK, b[4:])
_, a, err := parseKernelLinkAddr(unix.AF_LINK, b[4:])
if err != nil {
return nil, err
}
@@ -122,7 +126,7 @@ type Inet4Addr struct {
}
// Family implements the Family method of Addr interface.
func (a *Inet4Addr) Family() int { return sysAF_INET }
func (a *Inet4Addr) Family() int { return unix.AF_INET }
func (a *Inet4Addr) lenAndSpace() (int, int) {
return sizeofSockaddrInet, roundup(sizeofSockaddrInet)
@@ -134,7 +138,7 @@ func (a *Inet4Addr) marshal(b []byte) (int, error) {
return 0, errShortBuffer
}
b[0] = byte(l)
b[1] = sysAF_INET
b[1] = unix.AF_INET
copy(b[4:8], a.IP[:])
return ll, nil
}
@@ -146,7 +150,7 @@ type Inet6Addr struct {
}
// Family implements the Family method of Addr interface.
func (a *Inet6Addr) Family() int { return sysAF_INET6 }
func (a *Inet6Addr) Family() int { return unix.AF_INET6 }
func (a *Inet6Addr) lenAndSpace() (int, int) {
return sizeofSockaddrInet6, roundup(sizeofSockaddrInet6)
@@ -158,7 +162,7 @@ func (a *Inet6Addr) marshal(b []byte) (int, error) {
return 0, errShortBuffer
}
b[0] = byte(l)
b[1] = sysAF_INET6
b[1] = unix.AF_INET6
copy(b[8:24], a.IP[:])
if a.ZoneID > 0 {
nativeEndian.PutUint32(b[24:28], uint32(a.ZoneID))
@@ -169,14 +173,14 @@ func (a *Inet6Addr) marshal(b []byte) (int, error) {
// parseInetAddr parses b as an internet address for IPv4 or IPv6.
func parseInetAddr(af int, b []byte) (Addr, error) {
switch af {
case sysAF_INET:
case unix.AF_INET:
if len(b) < sizeofSockaddrInet {
return nil, errInvalidAddr
}
a := &Inet4Addr{}
copy(a.IP[:], b[4:8])
return a, nil
case sysAF_INET6:
case unix.AF_INET6:
if len(b) < sizeofSockaddrInet6 {
return nil, errInvalidAddr
}
@@ -245,7 +249,7 @@ func parseKernelInetAddr(af int, b []byte) (int, Addr, error) {
a := &Inet6Addr{}
copy(a.IP[:], b[off6:off6+16])
return int(b[0]), a, nil
case af == sysAF_INET6:
case af == unix.AF_INET6:
a := &Inet6Addr{}
if l-1 < off6 {
copy(a.IP[:], b[1:l])
@@ -365,15 +369,15 @@ func marshalAddrs(b []byte, as []Addr) (uint, error) {
}
func parseAddrs(attrs uint, fn func(int, []byte) (int, Addr, error), b []byte) ([]Addr, error) {
var as [sysRTAX_MAX]Addr
af := int(sysAF_UNSPEC)
for i := uint(0); i < sysRTAX_MAX && len(b) >= roundup(0); i++ {
var as [unix.RTAX_MAX]Addr
af := int(unix.AF_UNSPEC)
for i := uint(0); i < unix.RTAX_MAX && len(b) >= roundup(0); i++ {
if attrs&(1<<i) == 0 {
continue
}
if i <= sysRTAX_BRD {
if i <= unix.RTAX_BRD {
switch b[1] {
case sysAF_LINK:
case unix.AF_LINK:
a, err := parseLinkAddr(b)
if err != nil {
return nil, err
@@ -384,7 +388,7 @@ func parseAddrs(attrs uint, fn func(int, []byte) (int, Addr, error), b []byte) (
return nil, errMessageTooShort
}
b = b[l:]
case sysAF_INET, sysAF_INET6:
case unix.AF_INET, unix.AF_INET6:
af = int(b[1])
a, err := parseInetAddr(af, b)
if err != nil {

View File

@@ -7,6 +7,8 @@ package route
import (
"reflect"
"testing"
"golang.org/x/sys/unix"
)
type parseAddrsOnDarwinTest struct {
@@ -18,7 +20,7 @@ type parseAddrsOnDarwinTest struct {
var parseAddrsOnDarwinLittleEndianTests = []parseAddrsOnDarwinTest{
{
sysRTA_DST | sysRTA_GATEWAY | sysRTA_NETMASK,
unix.RTA_DST | unix.RTA_GATEWAY | unix.RTA_NETMASK,
parseKernelInetAddr,
[]byte{
0x10, 0x2, 0x0, 0x0, 0xc0, 0xa8, 0x56, 0x0,

View File

@@ -10,6 +10,8 @@ package route
import (
"reflect"
"testing"
"golang.org/x/sys/unix"
)
type parseAddrsTest struct {
@@ -21,7 +23,7 @@ type parseAddrsTest struct {
var parseAddrsLittleEndianTests = []parseAddrsTest{
{
sysRTA_DST | sysRTA_GATEWAY | sysRTA_NETMASK | sysRTA_BRD,
unix.RTA_DST | unix.RTA_GATEWAY | unix.RTA_NETMASK | unix.RTA_BRD,
parseKernelInetAddr,
[]byte{
0x38, 0x12, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0,
@@ -58,7 +60,7 @@ var parseAddrsLittleEndianTests = []parseAddrsTest{
},
},
{
sysRTA_NETMASK | sysRTA_IFP | sysRTA_IFA,
unix.RTA_NETMASK | unix.RTA_IFP | unix.RTA_IFA,
parseKernelInetAddr,
[]byte{
0x7, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0,

View File

@@ -19,83 +19,6 @@ package route
*/
import "C"
const (
sysAF_UNSPEC = C.AF_UNSPEC
sysAF_INET = C.AF_INET
sysAF_ROUTE = C.AF_ROUTE
sysAF_LINK = C.AF_LINK
sysAF_INET6 = C.AF_INET6
sysSOCK_RAW = C.SOCK_RAW
sysNET_RT_DUMP = C.NET_RT_DUMP
sysNET_RT_FLAGS = C.NET_RT_FLAGS
sysNET_RT_IFLIST = C.NET_RT_IFLIST
sysNET_RT_STAT = C.NET_RT_STAT
sysNET_RT_TRASH = C.NET_RT_TRASH
sysNET_RT_IFLIST2 = C.NET_RT_IFLIST2
sysNET_RT_DUMP2 = C.NET_RT_DUMP2
sysNET_RT_MAXID = C.NET_RT_MAXID
)
const (
sysCTL_MAXNAME = C.CTL_MAXNAME
sysCTL_UNSPEC = C.CTL_UNSPEC
sysCTL_KERN = C.CTL_KERN
sysCTL_VM = C.CTL_VM
sysCTL_VFS = C.CTL_VFS
sysCTL_NET = C.CTL_NET
sysCTL_DEBUG = C.CTL_DEBUG
sysCTL_HW = C.CTL_HW
sysCTL_MACHDEP = C.CTL_MACHDEP
sysCTL_USER = C.CTL_USER
sysCTL_MAXID = C.CTL_MAXID
)
const (
sysRTM_VERSION = C.RTM_VERSION
sysRTM_ADD = C.RTM_ADD
sysRTM_DELETE = C.RTM_DELETE
sysRTM_CHANGE = C.RTM_CHANGE
sysRTM_GET = C.RTM_GET
sysRTM_LOSING = C.RTM_LOSING
sysRTM_REDIRECT = C.RTM_REDIRECT
sysRTM_MISS = C.RTM_MISS
sysRTM_LOCK = C.RTM_LOCK
sysRTM_OLDADD = C.RTM_OLDADD
sysRTM_OLDDEL = C.RTM_OLDDEL
sysRTM_RESOLVE = C.RTM_RESOLVE
sysRTM_NEWADDR = C.RTM_NEWADDR
sysRTM_DELADDR = C.RTM_DELADDR
sysRTM_IFINFO = C.RTM_IFINFO
sysRTM_NEWMADDR = C.RTM_NEWMADDR
sysRTM_DELMADDR = C.RTM_DELMADDR
sysRTM_IFINFO2 = C.RTM_IFINFO2
sysRTM_NEWMADDR2 = C.RTM_NEWMADDR2
sysRTM_GET2 = C.RTM_GET2
sysRTA_DST = C.RTA_DST
sysRTA_GATEWAY = C.RTA_GATEWAY
sysRTA_NETMASK = C.RTA_NETMASK
sysRTA_GENMASK = C.RTA_GENMASK
sysRTA_IFP = C.RTA_IFP
sysRTA_IFA = C.RTA_IFA
sysRTA_AUTHOR = C.RTA_AUTHOR
sysRTA_BRD = C.RTA_BRD
sysRTAX_DST = C.RTAX_DST
sysRTAX_GATEWAY = C.RTAX_GATEWAY
sysRTAX_NETMASK = C.RTAX_NETMASK
sysRTAX_GENMASK = C.RTAX_GENMASK
sysRTAX_IFP = C.RTAX_IFP
sysRTAX_IFA = C.RTAX_IFA
sysRTAX_AUTHOR = C.RTAX_AUTHOR
sysRTAX_BRD = C.RTAX_BRD
sysRTAX_MAX = C.RTAX_MAX
)
const (
sizeofIfMsghdrDarwin15 = C.sizeof_struct_if_msghdr
sizeofIfaMsghdrDarwin15 = C.sizeof_struct_ifa_msghdr

View File

@@ -40,84 +40,6 @@ struct ifa_msghdr_dfly58 {
*/
import "C"
const (
sysAF_UNSPEC = C.AF_UNSPEC
sysAF_INET = C.AF_INET
sysAF_ROUTE = C.AF_ROUTE
sysAF_LINK = C.AF_LINK
sysAF_INET6 = C.AF_INET6
sysSOCK_RAW = C.SOCK_RAW
sysNET_RT_DUMP = C.NET_RT_DUMP
sysNET_RT_FLAGS = C.NET_RT_FLAGS
sysNET_RT_IFLIST = C.NET_RT_IFLIST
sysNET_RT_MAXID = C.NET_RT_MAXID
)
const (
sysCTL_MAXNAME = C.CTL_MAXNAME
sysCTL_UNSPEC = C.CTL_UNSPEC
sysCTL_KERN = C.CTL_KERN
sysCTL_VM = C.CTL_VM
sysCTL_VFS = C.CTL_VFS
sysCTL_NET = C.CTL_NET
sysCTL_DEBUG = C.CTL_DEBUG
sysCTL_HW = C.CTL_HW
sysCTL_MACHDEP = C.CTL_MACHDEP
sysCTL_USER = C.CTL_USER
sysCTL_P1003_1B = C.CTL_P1003_1B
sysCTL_LWKT = C.CTL_LWKT
sysCTL_MAXID = C.CTL_MAXID
)
const (
sysRTM_VERSION = C.RTM_VERSION
sysRTM_ADD = C.RTM_ADD
sysRTM_DELETE = C.RTM_DELETE
sysRTM_CHANGE = C.RTM_CHANGE
sysRTM_GET = C.RTM_GET
sysRTM_LOSING = C.RTM_LOSING
sysRTM_REDIRECT = C.RTM_REDIRECT
sysRTM_MISS = C.RTM_MISS
sysRTM_LOCK = C.RTM_LOCK
sysRTM_RESOLVE = C.RTM_RESOLVE
sysRTM_NEWADDR = C.RTM_NEWADDR
sysRTM_DELADDR = C.RTM_DELADDR
sysRTM_IFINFO = C.RTM_IFINFO
sysRTM_NEWMADDR = C.RTM_NEWMADDR
sysRTM_DELMADDR = C.RTM_DELMADDR
sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE
sysRTM_IEEE80211 = C.RTM_IEEE80211
sysRTA_DST = C.RTA_DST
sysRTA_GATEWAY = C.RTA_GATEWAY
sysRTA_NETMASK = C.RTA_NETMASK
sysRTA_GENMASK = C.RTA_GENMASK
sysRTA_IFP = C.RTA_IFP
sysRTA_IFA = C.RTA_IFA
sysRTA_AUTHOR = C.RTA_AUTHOR
sysRTA_BRD = C.RTA_BRD
sysRTA_MPLS1 = C.RTA_MPLS1
sysRTA_MPLS2 = C.RTA_MPLS2
sysRTA_MPLS3 = C.RTA_MPLS3
sysRTAX_DST = C.RTAX_DST
sysRTAX_GATEWAY = C.RTAX_GATEWAY
sysRTAX_NETMASK = C.RTAX_NETMASK
sysRTAX_GENMASK = C.RTAX_GENMASK
sysRTAX_IFP = C.RTAX_IFP
sysRTAX_IFA = C.RTAX_IFA
sysRTAX_AUTHOR = C.RTAX_AUTHOR
sysRTAX_BRD = C.RTAX_BRD
sysRTAX_MPLS1 = C.RTAX_MPLS1
sysRTAX_MPLS2 = C.RTAX_MPLS2
sysRTAX_MPLS3 = C.RTAX_MPLS3
sysRTAX_MAX = C.RTAX_MAX
)
const (
sizeofIfMsghdrDragonFlyBSD4 = C.sizeof_struct_if_msghdr
sizeofIfaMsghdrDragonFlyBSD4 = C.sizeof_struct_ifa_msghdr_dfly4

View File

@@ -218,77 +218,6 @@ struct if_msghdr_freebsd11 {
*/
import "C"
const (
sysAF_UNSPEC = C.AF_UNSPEC
sysAF_INET = C.AF_INET
sysAF_ROUTE = C.AF_ROUTE
sysAF_LINK = C.AF_LINK
sysAF_INET6 = C.AF_INET6
sysSOCK_RAW = C.SOCK_RAW
sysNET_RT_DUMP = C.NET_RT_DUMP
sysNET_RT_FLAGS = C.NET_RT_FLAGS
sysNET_RT_IFLIST = C.NET_RT_IFLIST
sysNET_RT_IFMALIST = C.NET_RT_IFMALIST
sysNET_RT_IFLISTL = C.NET_RT_IFLISTL
)
const (
sysCTL_MAXNAME = C.CTL_MAXNAME
sysCTL_UNSPEC = C.CTL_UNSPEC
sysCTL_KERN = C.CTL_KERN
sysCTL_VM = C.CTL_VM
sysCTL_VFS = C.CTL_VFS
sysCTL_NET = C.CTL_NET
sysCTL_DEBUG = C.CTL_DEBUG
sysCTL_HW = C.CTL_HW
sysCTL_MACHDEP = C.CTL_MACHDEP
sysCTL_USER = C.CTL_USER
sysCTL_P1003_1B = C.CTL_P1003_1B
)
const (
sysRTM_VERSION = C.RTM_VERSION
sysRTM_ADD = C.RTM_ADD
sysRTM_DELETE = C.RTM_DELETE
sysRTM_CHANGE = C.RTM_CHANGE
sysRTM_GET = C.RTM_GET
sysRTM_LOSING = C.RTM_LOSING
sysRTM_REDIRECT = C.RTM_REDIRECT
sysRTM_MISS = C.RTM_MISS
sysRTM_LOCK = C.RTM_LOCK
sysRTM_RESOLVE = C.RTM_RESOLVE
sysRTM_NEWADDR = C.RTM_NEWADDR
sysRTM_DELADDR = C.RTM_DELADDR
sysRTM_IFINFO = C.RTM_IFINFO
sysRTM_NEWMADDR = C.RTM_NEWMADDR
sysRTM_DELMADDR = C.RTM_DELMADDR
sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE
sysRTM_IEEE80211 = C.RTM_IEEE80211
sysRTA_DST = C.RTA_DST
sysRTA_GATEWAY = C.RTA_GATEWAY
sysRTA_NETMASK = C.RTA_NETMASK
sysRTA_GENMASK = C.RTA_GENMASK
sysRTA_IFP = C.RTA_IFP
sysRTA_IFA = C.RTA_IFA
sysRTA_AUTHOR = C.RTA_AUTHOR
sysRTA_BRD = C.RTA_BRD
sysRTAX_DST = C.RTAX_DST
sysRTAX_GATEWAY = C.RTAX_GATEWAY
sysRTAX_NETMASK = C.RTAX_NETMASK
sysRTAX_GENMASK = C.RTAX_GENMASK
sysRTAX_IFP = C.RTAX_IFP
sysRTAX_IFA = C.RTAX_IFA
sysRTAX_AUTHOR = C.RTAX_AUTHOR
sysRTAX_BRD = C.RTAX_BRD
sysRTAX_MAX = C.RTAX_MAX
)
const (
sizeofIfMsghdrlFreeBSD10 = C.sizeof_struct_if_msghdrl
sizeofIfaMsghdrFreeBSD10 = C.sizeof_struct_ifa_msghdr

View File

@@ -19,86 +19,6 @@ package route
*/
import "C"
const (
sysAF_UNSPEC = C.AF_UNSPEC
sysAF_INET = C.AF_INET
sysAF_ROUTE = C.AF_ROUTE
sysAF_LINK = C.AF_LINK
sysAF_INET6 = C.AF_INET6
sysSOCK_RAW = C.SOCK_RAW
sysNET_RT_DUMP = C.NET_RT_DUMP
sysNET_RT_FLAGS = C.NET_RT_FLAGS
sysNET_RT_IFLIST = C.NET_RT_IFLIST
sysNET_RT_MAXID = C.NET_RT_MAXID
)
const (
sysCTL_MAXNAME = C.CTL_MAXNAME
sysCTL_UNSPEC = C.CTL_UNSPEC
sysCTL_KERN = C.CTL_KERN
sysCTL_VM = C.CTL_VM
sysCTL_VFS = C.CTL_VFS
sysCTL_NET = C.CTL_NET
sysCTL_DEBUG = C.CTL_DEBUG
sysCTL_HW = C.CTL_HW
sysCTL_MACHDEP = C.CTL_MACHDEP
sysCTL_USER = C.CTL_USER
sysCTL_DDB = C.CTL_DDB
sysCTL_PROC = C.CTL_PROC
sysCTL_VENDOR = C.CTL_VENDOR
sysCTL_EMUL = C.CTL_EMUL
sysCTL_SECURITY = C.CTL_SECURITY
sysCTL_MAXID = C.CTL_MAXID
)
const (
sysRTM_VERSION = C.RTM_VERSION
sysRTM_ADD = C.RTM_ADD
sysRTM_DELETE = C.RTM_DELETE
sysRTM_CHANGE = C.RTM_CHANGE
sysRTM_GET = C.RTM_GET
sysRTM_LOSING = C.RTM_LOSING
sysRTM_REDIRECT = C.RTM_REDIRECT
sysRTM_MISS = C.RTM_MISS
sysRTM_LOCK = C.RTM_LOCK
sysRTM_OLDADD = C.RTM_OLDADD
sysRTM_OLDDEL = C.RTM_OLDDEL
sysRTM_RESOLVE = C.RTM_RESOLVE
sysRTM_NEWADDR = C.RTM_NEWADDR
sysRTM_DELADDR = C.RTM_DELADDR
sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE
sysRTM_IEEE80211 = C.RTM_IEEE80211
sysRTM_SETGATE = C.RTM_SETGATE
sysRTM_LLINFO_UPD = C.RTM_LLINFO_UPD
sysRTM_IFINFO = C.RTM_IFINFO
sysRTM_CHGADDR = C.RTM_CHGADDR
sysRTA_DST = C.RTA_DST
sysRTA_GATEWAY = C.RTA_GATEWAY
sysRTA_NETMASK = C.RTA_NETMASK
sysRTA_GENMASK = C.RTA_GENMASK
sysRTA_IFP = C.RTA_IFP
sysRTA_IFA = C.RTA_IFA
sysRTA_AUTHOR = C.RTA_AUTHOR
sysRTA_BRD = C.RTA_BRD
sysRTA_TAG = C.RTA_TAG
sysRTAX_DST = C.RTAX_DST
sysRTAX_GATEWAY = C.RTAX_GATEWAY
sysRTAX_NETMASK = C.RTAX_NETMASK
sysRTAX_GENMASK = C.RTAX_GENMASK
sysRTAX_IFP = C.RTAX_IFP
sysRTAX_IFA = C.RTAX_IFA
sysRTAX_AUTHOR = C.RTAX_AUTHOR
sysRTAX_BRD = C.RTAX_BRD
sysRTAX_TAG = C.RTAX_TAG
sysRTAX_MAX = C.RTAX_MAX
)
const (
sizeofIfMsghdrNetBSD7 = C.sizeof_struct_if_msghdr
sizeofIfaMsghdrNetBSD7 = C.sizeof_struct_ifa_msghdr

View File

@@ -19,95 +19,6 @@ package route
*/
import "C"
const (
sysAF_UNSPEC = C.AF_UNSPEC
sysAF_INET = C.AF_INET
sysAF_ROUTE = C.AF_ROUTE
sysAF_LINK = C.AF_LINK
sysAF_INET6 = C.AF_INET6
sysSOCK_RAW = C.SOCK_RAW
sysNET_RT_DUMP = C.NET_RT_DUMP
sysNET_RT_FLAGS = C.NET_RT_FLAGS
sysNET_RT_IFLIST = C.NET_RT_IFLIST
sysNET_RT_STATS = C.NET_RT_STATS
sysNET_RT_TABLE = C.NET_RT_TABLE
sysNET_RT_IFNAMES = C.NET_RT_IFNAMES
sysNET_RT_MAXID = C.NET_RT_MAXID
)
const (
sysCTL_MAXNAME = C.CTL_MAXNAME
sysCTL_UNSPEC = C.CTL_UNSPEC
sysCTL_KERN = C.CTL_KERN
sysCTL_VM = C.CTL_VM
sysCTL_FS = C.CTL_FS
sysCTL_NET = C.CTL_NET
sysCTL_DEBUG = C.CTL_DEBUG
sysCTL_HW = C.CTL_HW
sysCTL_MACHDEP = C.CTL_MACHDEP
sysCTL_DDB = C.CTL_DDB
sysCTL_VFS = C.CTL_VFS
sysCTL_MAXID = C.CTL_MAXID
)
const (
sysRTM_VERSION = C.RTM_VERSION
sysRTM_ADD = C.RTM_ADD
sysRTM_DELETE = C.RTM_DELETE
sysRTM_CHANGE = C.RTM_CHANGE
sysRTM_GET = C.RTM_GET
sysRTM_LOSING = C.RTM_LOSING
sysRTM_REDIRECT = C.RTM_REDIRECT
sysRTM_MISS = C.RTM_MISS
sysRTM_LOCK = C.RTM_LOCK
sysRTM_RESOLVE = C.RTM_RESOLVE
sysRTM_NEWADDR = C.RTM_NEWADDR
sysRTM_DELADDR = C.RTM_DELADDR
sysRTM_IFINFO = C.RTM_IFINFO
sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE
sysRTM_DESYNC = C.RTM_DESYNC
sysRTM_INVALIDATE = C.RTM_INVALIDATE
sysRTM_BFD = C.RTM_BFD
sysRTM_PROPOSAL = C.RTM_PROPOSAL
sysRTA_DST = C.RTA_DST
sysRTA_GATEWAY = C.RTA_GATEWAY
sysRTA_NETMASK = C.RTA_NETMASK
sysRTA_GENMASK = C.RTA_GENMASK
sysRTA_IFP = C.RTA_IFP
sysRTA_IFA = C.RTA_IFA
sysRTA_AUTHOR = C.RTA_AUTHOR
sysRTA_BRD = C.RTA_BRD
sysRTA_SRC = C.RTA_SRC
sysRTA_SRCMASK = C.RTA_SRCMASK
sysRTA_LABEL = C.RTA_LABEL
sysRTA_BFD = C.RTA_BFD
sysRTA_DNS = C.RTA_DNS
sysRTA_STATIC = C.RTA_STATIC
sysRTA_SEARCH = C.RTA_SEARCH
sysRTAX_DST = C.RTAX_DST
sysRTAX_GATEWAY = C.RTAX_GATEWAY
sysRTAX_NETMASK = C.RTAX_NETMASK
sysRTAX_GENMASK = C.RTAX_GENMASK
sysRTAX_IFP = C.RTAX_IFP
sysRTAX_IFA = C.RTAX_IFA
sysRTAX_AUTHOR = C.RTAX_AUTHOR
sysRTAX_BRD = C.RTAX_BRD
sysRTAX_SRC = C.RTAX_SRC
sysRTAX_SRCMASK = C.RTAX_SRCMASK
sysRTAX_LABEL = C.RTAX_LABEL
sysRTAX_BFD = C.RTAX_BFD
sysRTAX_DNS = C.RTAX_DNS
sysRTAX_STATIC = C.RTAX_STATIC
sysRTAX_SEARCH = C.RTAX_SEARCH
sysRTAX_MAX = C.RTAX_MAX
)
const (
sizeofRtMsghdr = C.sizeof_struct_rt_msghdr

View File

@@ -7,7 +7,11 @@
package route
import "runtime"
import (
"runtime"
"golang.org/x/sys/unix"
)
func (w *wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) {
if len(b) < w.bodyOff {
@@ -18,13 +22,13 @@ func (w *wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error)
return nil, errInvalidMessage
}
attrs := uint(nativeEndian.Uint32(b[4:8]))
if attrs&sysRTA_IFP == 0 {
if attrs&unix.RTA_IFP == 0 {
return nil, nil
}
m := &InterfaceMessage{
Version: int(b[2]),
Type: int(b[3]),
Addrs: make([]Addr, sysRTAX_MAX),
Addrs: make([]Addr, unix.RTAX_MAX),
Flags: int(nativeEndian.Uint32(b[8:12])),
Index: int(nativeEndian.Uint16(b[12:14])),
extOff: w.extOff,
@@ -34,7 +38,7 @@ func (w *wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error)
if err != nil {
return nil, err
}
m.Addrs[sysRTAX_IFP] = a
m.Addrs[unix.RTAX_IFP] = a
m.Name = a.(*LinkAddr).Name
return m, nil
}

View File

@@ -4,9 +4,11 @@
package route
import "golang.org/x/sys/unix"
func (w *wireFormat) parseInterfaceMessage(typ RIBType, b []byte) (Message, error) {
var extOff, bodyOff int
if typ == sysNET_RT_IFLISTL {
if typ == unix.NET_RT_IFLISTL {
if len(b) < 20 {
return nil, errMessageTooShort
}
@@ -24,7 +26,7 @@ func (w *wireFormat) parseInterfaceMessage(typ RIBType, b []byte) (Message, erro
return nil, errInvalidMessage
}
attrs := uint(nativeEndian.Uint32(b[4:8]))
if attrs&sysRTA_IFP == 0 {
if attrs&unix.RTA_IFP == 0 {
return nil, nil
}
m := &InterfaceMessage{
@@ -32,7 +34,7 @@ func (w *wireFormat) parseInterfaceMessage(typ RIBType, b []byte) (Message, erro
Type: int(b[3]),
Flags: int(nativeEndian.Uint32(b[8:12])),
Index: int(nativeEndian.Uint16(b[12:14])),
Addrs: make([]Addr, sysRTAX_MAX),
Addrs: make([]Addr, unix.RTAX_MAX),
extOff: extOff,
raw: b[:l],
}
@@ -40,14 +42,14 @@ func (w *wireFormat) parseInterfaceMessage(typ RIBType, b []byte) (Message, erro
if err != nil {
return nil, err
}
m.Addrs[sysRTAX_IFP] = a
m.Addrs[unix.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 == sysNET_RT_IFLISTL {
if typ == unix.NET_RT_IFLISTL {
if len(b) < 24 {
return nil, errMessageTooShort
}

View File

@@ -4,6 +4,8 @@
package route
import "golang.org/x/sys/unix"
func (*wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) {
if len(b) < 32 {
return nil, errMessageTooShort
@@ -13,7 +15,7 @@ func (*wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) {
return nil, errInvalidMessage
}
attrs := uint(nativeEndian.Uint32(b[12:16]))
if attrs&sysRTA_IFP == 0 {
if attrs&unix.RTA_IFP == 0 {
return nil, nil
}
m := &InterfaceMessage{
@@ -21,7 +23,7 @@ func (*wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) {
Type: int(b[3]),
Flags: int(nativeEndian.Uint32(b[16:20])),
Index: int(nativeEndian.Uint16(b[6:8])),
Addrs: make([]Addr, sysRTAX_MAX),
Addrs: make([]Addr, unix.RTAX_MAX),
raw: b[:l],
}
ll := int(nativeEndian.Uint16(b[4:6]))
@@ -32,7 +34,7 @@ func (*wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) {
if err != nil {
return nil, err
}
m.Addrs[sysRTAX_IFP] = a
m.Addrs[unix.RTAX_IFP] = a
m.Name = a.(*LinkAddr).Name
return m, nil
}

View File

@@ -4,13 +4,17 @@
package route
import "testing"
import (
"testing"
"golang.org/x/sys/unix"
)
func TestFetchAndParseRIBOnDarwin(t *testing.T) {
for _, typ := range []RIBType{sysNET_RT_FLAGS, sysNET_RT_DUMP2, sysNET_RT_IFLIST2} {
for _, typ := range []RIBType{unix.NET_RT_FLAGS, unix.NET_RT_DUMP2, unix.NET_RT_IFLIST2} {
var lastErr error
var ms []Message
for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
for _, af := range []int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
rs, err := fetchAndParseRIB(af, typ)
if err != nil {
lastErr = err

View File

@@ -4,13 +4,17 @@
package route
import "testing"
import (
"testing"
"golang.org/x/sys/unix"
)
func TestFetchAndParseRIBOnFreeBSD(t *testing.T) {
for _, typ := range []RIBType{sysNET_RT_IFMALIST} {
for _, typ := range []RIBType{unix.NET_RT_IFMALIST} {
var lastErr error
var ms []Message
for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
for _, af := range []int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
rs, err := fetchAndParseRIB(af, typ)
if err != nil {
lastErr = err
@@ -34,7 +38,7 @@ func TestFetchAndParseRIBOnFreeBSD(t *testing.T) {
}
func TestFetchAndParseRIBOnFreeBSD10AndAbove(t *testing.T) {
if _, err := FetchRIB(sysAF_UNSPEC, sysNET_RT_IFLISTL, 0); err != nil {
if _, err := FetchRIB(unix.AF_UNSPEC, unix.NET_RT_IFLISTL, 0); err != nil {
t.Skip("NET_RT_IFLISTL not supported")
}
if compatFreeBSD32 {
@@ -47,12 +51,12 @@ func TestFetchAndParseRIBOnFreeBSD10AndAbove(t *testing.T) {
msgs []Message
ss []string
}{
{typ: sysNET_RT_IFLIST},
{typ: sysNET_RT_IFLISTL},
{typ: unix.NET_RT_IFLIST},
{typ: unix.NET_RT_IFLISTL},
}
for i := range tests {
var lastErr error
for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
for _, af := range []int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
rs, err := fetchAndParseRIB(af, tests[i].typ)
if err != nil {
lastErr = err

View File

@@ -12,13 +12,15 @@ import (
"syscall"
"testing"
"time"
"golang.org/x/sys/unix"
)
func TestFetchAndParseRIB(t *testing.T) {
for _, typ := range []RIBType{sysNET_RT_DUMP, sysNET_RT_IFLIST} {
for _, typ := range []RIBType{unix.NET_RT_DUMP, unix.NET_RT_IFLIST} {
var lastErr error
var ms []Message
for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
for _, af := range []int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
rs, err := fetchAndParseRIB(af, typ)
if err != nil {
lastErr = err
@@ -49,7 +51,7 @@ var (
func init() {
// We need to keep rtmonSock alive to avoid treading on
// recycled socket descriptors.
rtmonSock, rtmonErr = syscall.Socket(sysAF_ROUTE, sysSOCK_RAW, sysAF_UNSPEC)
rtmonSock, rtmonErr = syscall.Socket(unix.AF_ROUTE, unix.SOCK_RAW, unix.AF_UNSPEC)
}
// TestMonitorAndParseRIB leaks a worker goroutine and a socket
@@ -145,60 +147,60 @@ func TestParseRIBWithFuzz(t *testing.T) {
}
func TestRouteMessage(t *testing.T) {
s, err := syscall.Socket(sysAF_ROUTE, sysSOCK_RAW, sysAF_UNSPEC)
s, err := syscall.Socket(unix.AF_ROUTE, unix.SOCK_RAW, unix.AF_UNSPEC)
if err != nil {
t.Fatal(err)
}
defer syscall.Close(s)
var ms []RouteMessage
for _, af := range []int{sysAF_INET, sysAF_INET6} {
if _, err := fetchAndParseRIB(af, sysNET_RT_DUMP); err != nil {
for _, af := range []int{unix.AF_INET, unix.AF_INET6} {
if _, err := fetchAndParseRIB(af, unix.NET_RT_DUMP); err != nil {
t.Log(err)
continue
}
switch af {
case sysAF_INET:
case unix.AF_INET:
ms = append(ms, []RouteMessage{
{
Type: sysRTM_GET,
Type: unix.RTM_GET,
Addrs: []Addr{
sysRTAX_DST: &Inet4Addr{IP: [4]byte{127, 0, 0, 1}},
sysRTAX_GATEWAY: nil,
sysRTAX_NETMASK: nil,
sysRTAX_GENMASK: nil,
sysRTAX_IFP: &LinkAddr{},
sysRTAX_IFA: &Inet4Addr{},
sysRTAX_AUTHOR: nil,
sysRTAX_BRD: &Inet4Addr{},
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{},
},
},
{
Type: sysRTM_GET,
Type: unix.RTM_GET,
Addrs: []Addr{
sysRTAX_DST: &Inet4Addr{IP: [4]byte{127, 0, 0, 1}},
unix.RTAX_DST: &Inet4Addr{IP: [4]byte{127, 0, 0, 1}},
},
},
}...)
case sysAF_INET6:
case unix.AF_INET6:
ms = append(ms, []RouteMessage{
{
Type: sysRTM_GET,
Type: unix.RTM_GET,
Addrs: []Addr{
sysRTAX_DST: &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}},
sysRTAX_GATEWAY: nil,
sysRTAX_NETMASK: nil,
sysRTAX_GENMASK: nil,
sysRTAX_IFP: &LinkAddr{},
sysRTAX_IFA: &Inet6Addr{},
sysRTAX_AUTHOR: nil,
sysRTAX_BRD: &Inet6Addr{},
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{},
},
},
{
Type: sysRTM_GET,
Type: unix.RTM_GET,
Addrs: []Addr{
sysRTAX_DST: &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}},
unix.RTAX_DST: &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}},
},
},
}...)

View File

@@ -17,6 +17,8 @@ import (
"errors"
"os"
"syscall"
"golang.org/x/sys/unix"
)
var (
@@ -111,7 +113,7 @@ func FetchRIB(af int, typ RIBType, arg int) ([]byte, error) {
try := 0
for {
try++
mib := [6]int32{sysCTL_NET, sysAF_ROUTE, 0, int32(af), int32(typ), int32(arg)}
mib := [6]int32{unix.CTL_NET, unix.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)

View File

@@ -4,14 +4,18 @@
package route
import "syscall"
import (
"syscall"
"golang.org/x/sys/unix"
)
func (m *RouteMessage) marshal() ([]byte, error) {
l := sizeofRtMsghdr + addrsSpace(m.Addrs)
b := make([]byte, l)
nativeEndian.PutUint16(b[:2], uint16(l))
if m.Version == 0 {
b[2] = sysRTM_VERSION
b[2] = unix.RTM_VERSION
} else {
b[2] = byte(m.Version)
}

View File

@@ -11,6 +11,8 @@ import (
"fmt"
"os/exec"
"runtime"
"golang.org/x/sys/unix"
)
func (m *RouteMessage) String() string {
@@ -176,13 +178,13 @@ type addrFamily int
func (af addrFamily) String() string {
switch af {
case sysAF_UNSPEC:
case unix.AF_UNSPEC:
return "unspec"
case sysAF_LINK:
case unix.AF_LINK:
return "link"
case sysAF_INET:
case unix.AF_INET:
return "inet4"
case sysAF_INET6:
case unix.AF_INET6:
return "inet6"
default:
return fmt.Sprintf("%d", af)
@@ -281,24 +283,24 @@ func (as addrs) String() string {
func (as addrs) match(attrs addrAttrs) error {
var ts addrAttrs
af := sysAF_UNSPEC
af := unix.AF_UNSPEC
for i := range as {
if as[i] != nil {
ts |= 1 << uint(i)
}
switch as[i].(type) {
case *Inet4Addr:
if af == sysAF_UNSPEC {
af = sysAF_INET
if af == unix.AF_UNSPEC {
af = unix.AF_INET
}
if af != sysAF_INET {
if af != unix.AF_INET {
return fmt.Errorf("got %v; want %v", addrs(as), addrFamily(af))
}
case *Inet6Addr:
if af == sysAF_UNSPEC {
af = sysAF_INET6
if af == unix.AF_UNSPEC {
af = unix.AF_INET6
}
if af != sysAF_INET6 {
if af != unix.AF_INET6 {
return fmt.Errorf("got %v; want %v", addrs(as), addrFamily(af))
}
}

View File

@@ -7,7 +7,11 @@
package route
import "unsafe"
import (
"unsafe"
"golang.org/x/sys/unix"
)
var (
nativeEndian binaryByteOrder
@@ -25,7 +29,7 @@ func init() {
nativeEndian = bigEndian
}
// might get overridden in probeRoutingStack
rtmVersion = sysRTM_VERSION
rtmVersion = unix.RTM_VERSION
kernelAlign, wireFormats = probeRoutingStack()
}

View File

@@ -4,9 +4,11 @@
package route
import "golang.org/x/sys/unix"
func (typ RIBType) parseable() bool {
switch typ {
case sysNET_RT_STAT, sysNET_RT_TRASH:
case unix.NET_RT_STAT, unix.NET_RT_TRASH:
return false
default:
return true
@@ -66,22 +68,22 @@ func probeRoutingStack() (int, map[int]*wireFormat) {
ifmam2.parse = ifmam2.parseInterfaceMulticastAddrMessage
// Darwin kernels require 32-bit aligned access to routing facilities.
return 4, map[int]*wireFormat{
sysRTM_ADD: rtm,
sysRTM_DELETE: rtm,
sysRTM_CHANGE: rtm,
sysRTM_GET: rtm,
sysRTM_LOSING: rtm,
sysRTM_REDIRECT: rtm,
sysRTM_MISS: rtm,
sysRTM_LOCK: rtm,
sysRTM_RESOLVE: rtm,
sysRTM_NEWADDR: ifam,
sysRTM_DELADDR: ifam,
sysRTM_IFINFO: ifm,
sysRTM_NEWMADDR: ifmam,
sysRTM_DELMADDR: ifmam,
sysRTM_IFINFO2: ifm2,
sysRTM_NEWMADDR2: ifmam2,
sysRTM_GET2: rtm2,
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,
}
}

View File

@@ -7,6 +7,8 @@ package route
import (
"syscall"
"unsafe"
"golang.org/x/sys/unix"
)
func (typ RIBType) parseable() bool { return true }
@@ -69,20 +71,20 @@ func probeRoutingStack() (int, map[int]*wireFormat) {
}
return int(unsafe.Sizeof(p)), map[int]*wireFormat{
sysRTM_ADD: rtm,
sysRTM_DELETE: rtm,
sysRTM_CHANGE: rtm,
sysRTM_GET: rtm,
sysRTM_LOSING: rtm,
sysRTM_REDIRECT: rtm,
sysRTM_MISS: rtm,
sysRTM_LOCK: rtm,
sysRTM_RESOLVE: rtm,
sysRTM_NEWADDR: ifam,
sysRTM_DELADDR: ifam,
sysRTM_IFINFO: ifm,
sysRTM_NEWMADDR: ifmam,
sysRTM_DELMADDR: ifmam,
sysRTM_IFANNOUNCE: ifanm,
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,
}
}

View File

@@ -7,6 +7,8 @@ package route
import (
"syscall"
"unsafe"
"golang.org/x/sys/unix"
)
func (typ RIBType) parseable() bool { return true }
@@ -141,20 +143,20 @@ func probeRoutingStack() (int, map[int]*wireFormat) {
ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage
ifanm.parse = ifanm.parseInterfaceAnnounceMessage
return align, map[int]*wireFormat{
sysRTM_ADD: rtm,
sysRTM_DELETE: rtm,
sysRTM_CHANGE: rtm,
sysRTM_GET: rtm,
sysRTM_LOSING: rtm,
sysRTM_REDIRECT: rtm,
sysRTM_MISS: rtm,
sysRTM_LOCK: rtm,
sysRTM_RESOLVE: rtm,
sysRTM_NEWADDR: ifam,
sysRTM_DELADDR: ifam,
sysRTM_IFINFO: ifm,
sysRTM_NEWMADDR: ifmam,
sysRTM_DELMADDR: ifmam,
sysRTM_IFANNOUNCE: ifanm,
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,
}
}

View File

@@ -4,6 +4,8 @@
package route
import "golang.org/x/sys/unix"
func (typ RIBType) parseable() bool { return true }
// RouteMetrics represents route metrics.
@@ -54,18 +56,18 @@ func probeRoutingStack() (int, map[int]*wireFormat) {
// NetBSD 6 and above kernels require 64-bit aligned access to
// routing facilities.
return 8, map[int]*wireFormat{
sysRTM_ADD: rtm,
sysRTM_DELETE: rtm,
sysRTM_CHANGE: rtm,
sysRTM_GET: rtm,
sysRTM_LOSING: rtm,
sysRTM_REDIRECT: rtm,
sysRTM_MISS: rtm,
sysRTM_LOCK: rtm,
sysRTM_RESOLVE: rtm,
sysRTM_NEWADDR: ifam,
sysRTM_DELADDR: ifam,
sysRTM_IFANNOUNCE: ifanm,
sysRTM_IFINFO: ifm,
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,
}
}

View File

@@ -4,11 +4,15 @@
package route
import "unsafe"
import (
"unsafe"
"golang.org/x/sys/unix"
)
func (typ RIBType) parseable() bool {
switch typ {
case sysNET_RT_STATS, sysNET_RT_TABLE:
case unix.NET_RT_STATS, unix.NET_RT_TABLE:
return false
default:
return true
@@ -62,19 +66,19 @@ func probeRoutingStack() (int, map[int]*wireFormat) {
ifanm := &wireFormat{extOff: -1, bodyOff: -1}
ifanm.parse = ifanm.parseInterfaceAnnounceMessage
return int(unsafe.Sizeof(p)), map[int]*wireFormat{
sysRTM_ADD: rtm,
sysRTM_DELETE: rtm,
sysRTM_CHANGE: rtm,
sysRTM_GET: rtm,
sysRTM_LOSING: rtm,
sysRTM_REDIRECT: rtm,
sysRTM_MISS: rtm,
sysRTM_LOCK: rtm,
sysRTM_RESOLVE: rtm,
sysRTM_NEWADDR: ifam,
sysRTM_DELADDR: ifam,
sysRTM_IFINFO: ifm,
sysRTM_IFANNOUNCE: ifanm,
sysRTM_DESYNC: rtm,
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_IFANNOUNCE: ifanm,
unix.RTM_DESYNC: rtm,
}
}

View File

@@ -3,83 +3,6 @@
package route
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_ROUTE = 0x11
sysAF_LINK = 0x12
sysAF_INET6 = 0x1e
sysSOCK_RAW = 0x3
sysNET_RT_DUMP = 0x1
sysNET_RT_FLAGS = 0x2
sysNET_RT_IFLIST = 0x3
sysNET_RT_STAT = 0x4
sysNET_RT_TRASH = 0x5
sysNET_RT_IFLIST2 = 0x6
sysNET_RT_DUMP2 = 0x7
sysNET_RT_MAXID = 0xa
)
const (
sysCTL_MAXNAME = 0xc
sysCTL_UNSPEC = 0x0
sysCTL_KERN = 0x1
sysCTL_VM = 0x2
sysCTL_VFS = 0x3
sysCTL_NET = 0x4
sysCTL_DEBUG = 0x5
sysCTL_HW = 0x6
sysCTL_MACHDEP = 0x7
sysCTL_USER = 0x8
sysCTL_MAXID = 0x9
)
const (
sysRTM_VERSION = 0x5
sysRTM_ADD = 0x1
sysRTM_DELETE = 0x2
sysRTM_CHANGE = 0x3
sysRTM_GET = 0x4
sysRTM_LOSING = 0x5
sysRTM_REDIRECT = 0x6
sysRTM_MISS = 0x7
sysRTM_LOCK = 0x8
sysRTM_OLDADD = 0x9
sysRTM_OLDDEL = 0xa
sysRTM_RESOLVE = 0xb
sysRTM_NEWADDR = 0xc
sysRTM_DELADDR = 0xd
sysRTM_IFINFO = 0xe
sysRTM_NEWMADDR = 0xf
sysRTM_DELMADDR = 0x10
sysRTM_IFINFO2 = 0x12
sysRTM_NEWMADDR2 = 0x13
sysRTM_GET2 = 0x14
sysRTA_DST = 0x1
sysRTA_GATEWAY = 0x2
sysRTA_NETMASK = 0x4
sysRTA_GENMASK = 0x8
sysRTA_IFP = 0x10
sysRTA_IFA = 0x20
sysRTA_AUTHOR = 0x40
sysRTA_BRD = 0x80
sysRTAX_DST = 0x0
sysRTAX_GATEWAY = 0x1
sysRTAX_NETMASK = 0x2
sysRTAX_GENMASK = 0x3
sysRTAX_IFP = 0x4
sysRTAX_IFA = 0x5
sysRTAX_AUTHOR = 0x6
sysRTAX_BRD = 0x7
sysRTAX_MAX = 0x8
)
const (
sizeofIfMsghdrDarwin15 = 0x70
sizeofIfaMsghdrDarwin15 = 0x14

View File

@@ -3,84 +3,6 @@
package route
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_ROUTE = 0x11
sysAF_LINK = 0x12
sysAF_INET6 = 0x1c
sysSOCK_RAW = 0x3
sysNET_RT_DUMP = 0x1
sysNET_RT_FLAGS = 0x2
sysNET_RT_IFLIST = 0x3
sysNET_RT_MAXID = 0x4
)
const (
sysCTL_MAXNAME = 0xc
sysCTL_UNSPEC = 0x0
sysCTL_KERN = 0x1
sysCTL_VM = 0x2
sysCTL_VFS = 0x3
sysCTL_NET = 0x4
sysCTL_DEBUG = 0x5
sysCTL_HW = 0x6
sysCTL_MACHDEP = 0x7
sysCTL_USER = 0x8
sysCTL_P1003_1B = 0x9
sysCTL_LWKT = 0xa
sysCTL_MAXID = 0xb
)
const (
sysRTM_VERSION = 0x6
sysRTM_ADD = 0x1
sysRTM_DELETE = 0x2
sysRTM_CHANGE = 0x3
sysRTM_GET = 0x4
sysRTM_LOSING = 0x5
sysRTM_REDIRECT = 0x6
sysRTM_MISS = 0x7
sysRTM_LOCK = 0x8
sysRTM_RESOLVE = 0xb
sysRTM_NEWADDR = 0xc
sysRTM_DELADDR = 0xd
sysRTM_IFINFO = 0xe
sysRTM_NEWMADDR = 0xf
sysRTM_DELMADDR = 0x10
sysRTM_IFANNOUNCE = 0x11
sysRTM_IEEE80211 = 0x12
sysRTA_DST = 0x1
sysRTA_GATEWAY = 0x2
sysRTA_NETMASK = 0x4
sysRTA_GENMASK = 0x8
sysRTA_IFP = 0x10
sysRTA_IFA = 0x20
sysRTA_AUTHOR = 0x40
sysRTA_BRD = 0x80
sysRTA_MPLS1 = 0x100
sysRTA_MPLS2 = 0x200
sysRTA_MPLS3 = 0x400
sysRTAX_DST = 0x0
sysRTAX_GATEWAY = 0x1
sysRTAX_NETMASK = 0x2
sysRTAX_GENMASK = 0x3
sysRTAX_IFP = 0x4
sysRTAX_IFA = 0x5
sysRTAX_AUTHOR = 0x6
sysRTAX_BRD = 0x7
sysRTAX_MPLS1 = 0x8
sysRTAX_MPLS2 = 0x9
sysRTAX_MPLS3 = 0xa
sysRTAX_MAX = 0xb
)
const (
sizeofIfMsghdrDragonFlyBSD4 = 0xb0
sizeofIfaMsghdrDragonFlyBSD4 = 0x14

View File

@@ -3,77 +3,6 @@
package route
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_ROUTE = 0x11
sysAF_LINK = 0x12
sysAF_INET6 = 0x1c
sysSOCK_RAW = 0x3
sysNET_RT_DUMP = 0x1
sysNET_RT_FLAGS = 0x2
sysNET_RT_IFLIST = 0x3
sysNET_RT_IFMALIST = 0x4
sysNET_RT_IFLISTL = 0x5
)
const (
sysCTL_MAXNAME = 0x18
sysCTL_UNSPEC = 0x0
sysCTL_KERN = 0x1
sysCTL_VM = 0x2
sysCTL_VFS = 0x3
sysCTL_NET = 0x4
sysCTL_DEBUG = 0x5
sysCTL_HW = 0x6
sysCTL_MACHDEP = 0x7
sysCTL_USER = 0x8
sysCTL_P1003_1B = 0x9
)
const (
sysRTM_VERSION = 0x5
sysRTM_ADD = 0x1
sysRTM_DELETE = 0x2
sysRTM_CHANGE = 0x3
sysRTM_GET = 0x4
sysRTM_LOSING = 0x5
sysRTM_REDIRECT = 0x6
sysRTM_MISS = 0x7
sysRTM_LOCK = 0x8
sysRTM_RESOLVE = 0xb
sysRTM_NEWADDR = 0xc
sysRTM_DELADDR = 0xd
sysRTM_IFINFO = 0xe
sysRTM_NEWMADDR = 0xf
sysRTM_DELMADDR = 0x10
sysRTM_IFANNOUNCE = 0x11
sysRTM_IEEE80211 = 0x12
sysRTA_DST = 0x1
sysRTA_GATEWAY = 0x2
sysRTA_NETMASK = 0x4
sysRTA_GENMASK = 0x8
sysRTA_IFP = 0x10
sysRTA_IFA = 0x20
sysRTA_AUTHOR = 0x40
sysRTA_BRD = 0x80
sysRTAX_DST = 0x0
sysRTAX_GATEWAY = 0x1
sysRTAX_NETMASK = 0x2
sysRTAX_GENMASK = 0x3
sysRTAX_IFP = 0x4
sysRTAX_IFA = 0x5
sysRTAX_AUTHOR = 0x6
sysRTAX_BRD = 0x7
sysRTAX_MAX = 0x8
)
const (
sizeofIfMsghdrlFreeBSD10 = 0x68
sizeofIfaMsghdrFreeBSD10 = 0x14

View File

@@ -3,77 +3,6 @@
package route
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_ROUTE = 0x11
sysAF_LINK = 0x12
sysAF_INET6 = 0x1c
sysSOCK_RAW = 0x3
sysNET_RT_DUMP = 0x1
sysNET_RT_FLAGS = 0x2
sysNET_RT_IFLIST = 0x3
sysNET_RT_IFMALIST = 0x4
sysNET_RT_IFLISTL = 0x5
)
const (
sysCTL_MAXNAME = 0x18
sysCTL_UNSPEC = 0x0
sysCTL_KERN = 0x1
sysCTL_VM = 0x2
sysCTL_VFS = 0x3
sysCTL_NET = 0x4
sysCTL_DEBUG = 0x5
sysCTL_HW = 0x6
sysCTL_MACHDEP = 0x7
sysCTL_USER = 0x8
sysCTL_P1003_1B = 0x9
)
const (
sysRTM_VERSION = 0x5
sysRTM_ADD = 0x1
sysRTM_DELETE = 0x2
sysRTM_CHANGE = 0x3
sysRTM_GET = 0x4
sysRTM_LOSING = 0x5
sysRTM_REDIRECT = 0x6
sysRTM_MISS = 0x7
sysRTM_LOCK = 0x8
sysRTM_RESOLVE = 0xb
sysRTM_NEWADDR = 0xc
sysRTM_DELADDR = 0xd
sysRTM_IFINFO = 0xe
sysRTM_NEWMADDR = 0xf
sysRTM_DELMADDR = 0x10
sysRTM_IFANNOUNCE = 0x11
sysRTM_IEEE80211 = 0x12
sysRTA_DST = 0x1
sysRTA_GATEWAY = 0x2
sysRTA_NETMASK = 0x4
sysRTA_GENMASK = 0x8
sysRTA_IFP = 0x10
sysRTA_IFA = 0x20
sysRTA_AUTHOR = 0x40
sysRTA_BRD = 0x80
sysRTAX_DST = 0x0
sysRTAX_GATEWAY = 0x1
sysRTAX_NETMASK = 0x2
sysRTAX_GENMASK = 0x3
sysRTAX_IFP = 0x4
sysRTAX_IFA = 0x5
sysRTAX_AUTHOR = 0x6
sysRTAX_BRD = 0x7
sysRTAX_MAX = 0x8
)
const (
sizeofIfMsghdrlFreeBSD10 = 0xb0
sizeofIfaMsghdrFreeBSD10 = 0x14

View File

@@ -3,77 +3,6 @@
package route
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_ROUTE = 0x11
sysAF_LINK = 0x12
sysAF_INET6 = 0x1c
sysSOCK_RAW = 0x3
sysNET_RT_DUMP = 0x1
sysNET_RT_FLAGS = 0x2
sysNET_RT_IFLIST = 0x3
sysNET_RT_IFMALIST = 0x4
sysNET_RT_IFLISTL = 0x5
)
const (
sysCTL_MAXNAME = 0x18
sysCTL_UNSPEC = 0x0
sysCTL_KERN = 0x1
sysCTL_VM = 0x2
sysCTL_VFS = 0x3
sysCTL_NET = 0x4
sysCTL_DEBUG = 0x5
sysCTL_HW = 0x6
sysCTL_MACHDEP = 0x7
sysCTL_USER = 0x8
sysCTL_P1003_1B = 0x9
)
const (
sysRTM_VERSION = 0x5
sysRTM_ADD = 0x1
sysRTM_DELETE = 0x2
sysRTM_CHANGE = 0x3
sysRTM_GET = 0x4
sysRTM_LOSING = 0x5
sysRTM_REDIRECT = 0x6
sysRTM_MISS = 0x7
sysRTM_LOCK = 0x8
sysRTM_RESOLVE = 0xb
sysRTM_NEWADDR = 0xc
sysRTM_DELADDR = 0xd
sysRTM_IFINFO = 0xe
sysRTM_NEWMADDR = 0xf
sysRTM_DELMADDR = 0x10
sysRTM_IFANNOUNCE = 0x11
sysRTM_IEEE80211 = 0x12
sysRTA_DST = 0x1
sysRTA_GATEWAY = 0x2
sysRTA_NETMASK = 0x4
sysRTA_GENMASK = 0x8
sysRTA_IFP = 0x10
sysRTA_IFA = 0x20
sysRTA_AUTHOR = 0x40
sysRTA_BRD = 0x80
sysRTAX_DST = 0x0
sysRTAX_GATEWAY = 0x1
sysRTAX_NETMASK = 0x2
sysRTAX_GENMASK = 0x3
sysRTAX_IFP = 0x4
sysRTAX_IFA = 0x5
sysRTAX_AUTHOR = 0x6
sysRTAX_BRD = 0x7
sysRTAX_MAX = 0x8
)
const (
sizeofIfMsghdrlFreeBSD10 = 0x68
sizeofIfaMsghdrFreeBSD10 = 0x14

View File

@@ -3,77 +3,6 @@
package route
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_ROUTE = 0x11
sysAF_LINK = 0x12
sysAF_INET6 = 0x1c
sysSOCK_RAW = 0x3
sysNET_RT_DUMP = 0x1
sysNET_RT_FLAGS = 0x2
sysNET_RT_IFLIST = 0x3
sysNET_RT_IFMALIST = 0x4
sysNET_RT_IFLISTL = 0x5
)
const (
sysCTL_MAXNAME = 0x18
sysCTL_UNSPEC = 0x0
sysCTL_KERN = 0x1
sysCTL_VM = 0x2
sysCTL_VFS = 0x3
sysCTL_NET = 0x4
sysCTL_DEBUG = 0x5
sysCTL_HW = 0x6
sysCTL_MACHDEP = 0x7
sysCTL_USER = 0x8
sysCTL_P1003_1B = 0x9
)
const (
sysRTM_VERSION = 0x5
sysRTM_ADD = 0x1
sysRTM_DELETE = 0x2
sysRTM_CHANGE = 0x3
sysRTM_GET = 0x4
sysRTM_LOSING = 0x5
sysRTM_REDIRECT = 0x6
sysRTM_MISS = 0x7
sysRTM_LOCK = 0x8
sysRTM_RESOLVE = 0xb
sysRTM_NEWADDR = 0xc
sysRTM_DELADDR = 0xd
sysRTM_IFINFO = 0xe
sysRTM_NEWMADDR = 0xf
sysRTM_DELMADDR = 0x10
sysRTM_IFANNOUNCE = 0x11
sysRTM_IEEE80211 = 0x12
sysRTA_DST = 0x1
sysRTA_GATEWAY = 0x2
sysRTA_NETMASK = 0x4
sysRTA_GENMASK = 0x8
sysRTA_IFP = 0x10
sysRTA_IFA = 0x20
sysRTA_AUTHOR = 0x40
sysRTA_BRD = 0x80
sysRTAX_DST = 0x0
sysRTAX_GATEWAY = 0x1
sysRTAX_NETMASK = 0x2
sysRTAX_GENMASK = 0x3
sysRTAX_IFP = 0x4
sysRTAX_IFA = 0x5
sysRTAX_AUTHOR = 0x6
sysRTAX_BRD = 0x7
sysRTAX_MAX = 0x8
)
const (
sizeofIfMsghdrlFreeBSD10 = 0xb0
sizeofIfaMsghdrFreeBSD10 = 0x14

View File

@@ -3,86 +3,6 @@
package route
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_ROUTE = 0x22
sysAF_LINK = 0x12
sysAF_INET6 = 0x18
sysSOCK_RAW = 0x3
sysNET_RT_DUMP = 0x1
sysNET_RT_FLAGS = 0x2
sysNET_RT_IFLIST = 0x5
sysNET_RT_MAXID = 0x6
)
const (
sysCTL_MAXNAME = 0xc
sysCTL_UNSPEC = 0x0
sysCTL_KERN = 0x1
sysCTL_VM = 0x2
sysCTL_VFS = 0x3
sysCTL_NET = 0x4
sysCTL_DEBUG = 0x5
sysCTL_HW = 0x6
sysCTL_MACHDEP = 0x7
sysCTL_USER = 0x8
sysCTL_DDB = 0x9
sysCTL_PROC = 0xa
sysCTL_VENDOR = 0xb
sysCTL_EMUL = 0xc
sysCTL_SECURITY = 0xd
sysCTL_MAXID = 0xe
)
const (
sysRTM_VERSION = 0x4
sysRTM_ADD = 0x1
sysRTM_DELETE = 0x2
sysRTM_CHANGE = 0x3
sysRTM_GET = 0x4
sysRTM_LOSING = 0x5
sysRTM_REDIRECT = 0x6
sysRTM_MISS = 0x7
sysRTM_LOCK = 0x8
sysRTM_OLDADD = 0x9
sysRTM_OLDDEL = 0xa
sysRTM_RESOLVE = 0xb
sysRTM_NEWADDR = 0xc
sysRTM_DELADDR = 0xd
sysRTM_IFANNOUNCE = 0x10
sysRTM_IEEE80211 = 0x11
sysRTM_SETGATE = 0x12
sysRTM_LLINFO_UPD = 0x13
sysRTM_IFINFO = 0x14
sysRTM_CHGADDR = 0x15
sysRTA_DST = 0x1
sysRTA_GATEWAY = 0x2
sysRTA_NETMASK = 0x4
sysRTA_GENMASK = 0x8
sysRTA_IFP = 0x10
sysRTA_IFA = 0x20
sysRTA_AUTHOR = 0x40
sysRTA_BRD = 0x80
sysRTA_TAG = 0x100
sysRTAX_DST = 0x0
sysRTAX_GATEWAY = 0x1
sysRTAX_NETMASK = 0x2
sysRTAX_GENMASK = 0x3
sysRTAX_IFP = 0x4
sysRTAX_IFA = 0x5
sysRTAX_AUTHOR = 0x6
sysRTAX_BRD = 0x7
sysRTAX_TAG = 0x8
sysRTAX_MAX = 0x9
)
const (
sizeofIfMsghdrNetBSD7 = 0x98
sizeofIfaMsghdrNetBSD7 = 0x18

View File

@@ -3,95 +3,6 @@
package route
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_ROUTE = 0x11
sysAF_LINK = 0x12
sysAF_INET6 = 0x18
sysSOCK_RAW = 0x3
sysNET_RT_DUMP = 0x1
sysNET_RT_FLAGS = 0x2
sysNET_RT_IFLIST = 0x3
sysNET_RT_STATS = 0x4
sysNET_RT_TABLE = 0x5
sysNET_RT_IFNAMES = 0x6
sysNET_RT_MAXID = 0x7
)
const (
sysCTL_MAXNAME = 0xc
sysCTL_UNSPEC = 0x0
sysCTL_KERN = 0x1
sysCTL_VM = 0x2
sysCTL_FS = 0x3
sysCTL_NET = 0x4
sysCTL_DEBUG = 0x5
sysCTL_HW = 0x6
sysCTL_MACHDEP = 0x7
sysCTL_DDB = 0x9
sysCTL_VFS = 0xa
sysCTL_MAXID = 0xb
)
const (
sysRTM_VERSION = 0x5
sysRTM_ADD = 0x1
sysRTM_DELETE = 0x2
sysRTM_CHANGE = 0x3
sysRTM_GET = 0x4
sysRTM_LOSING = 0x5
sysRTM_REDIRECT = 0x6
sysRTM_MISS = 0x7
sysRTM_LOCK = 0x8
sysRTM_RESOLVE = 0xb
sysRTM_NEWADDR = 0xc
sysRTM_DELADDR = 0xd
sysRTM_IFINFO = 0xe
sysRTM_IFANNOUNCE = 0xf
sysRTM_DESYNC = 0x10
sysRTM_INVALIDATE = 0x11
sysRTM_BFD = 0x12
sysRTM_PROPOSAL = 0x13
sysRTA_DST = 0x1
sysRTA_GATEWAY = 0x2
sysRTA_NETMASK = 0x4
sysRTA_GENMASK = 0x8
sysRTA_IFP = 0x10
sysRTA_IFA = 0x20
sysRTA_AUTHOR = 0x40
sysRTA_BRD = 0x80
sysRTA_SRC = 0x100
sysRTA_SRCMASK = 0x200
sysRTA_LABEL = 0x400
sysRTA_BFD = 0x800
sysRTA_DNS = 0x1000
sysRTA_STATIC = 0x2000
sysRTA_SEARCH = 0x4000
sysRTAX_DST = 0x0
sysRTAX_GATEWAY = 0x1
sysRTAX_NETMASK = 0x2
sysRTAX_GENMASK = 0x3
sysRTAX_IFP = 0x4
sysRTAX_IFA = 0x5
sysRTAX_AUTHOR = 0x6
sysRTAX_BRD = 0x7
sysRTAX_SRC = 0x8
sysRTAX_SRCMASK = 0x9
sysRTAX_LABEL = 0xa
sysRTAX_BFD = 0xb
sysRTAX_DNS = 0xc
sysRTAX_STATIC = 0xd
sysRTAX_SEARCH = 0xe
sysRTAX_MAX = 0xf
)
const (
sizeofRtMsghdr = 0x60