aboutsummaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2024-12-18 14:45:09 -0800
committerGopher Robot <gobot@golang.org>2025-02-03 12:11:07 -0800
commitdcebb675b3fa0fd8d3056323a9f7f857ce4a2105 (patch)
tree95e02916669456f82ef170647af296b496b73094 /src/net
parentc1a5889edbd3e499df10db5ed1d8006c73de5792 (diff)
downloadgo-dcebb675b3fa0fd8d3056323a9f7f857ce4a2105.tar.xz
internal/routebsd: simplify for standard library
Discard everything we don't need from x/net/route. Change-Id: If6a4ecb37e5e2349bc4df46c151990719a14f2c7 Reviewed-on: https://go-review.googlesource.com/c/go/+/637696 Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Damien Neil <dneil@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Commit-Queue: Ian Lance Taylor <iant@google.com>
Diffstat (limited to 'src/net')
-rw-r--r--src/net/interface_bsd.go35
-rw-r--r--src/net/interface_bsdvar.go6
-rw-r--r--src/net/interface_darwin.go26
-rw-r--r--src/net/interface_freebsd.go26
4 files changed, 42 insertions, 51 deletions
diff --git a/src/net/interface_bsd.go b/src/net/interface_bsd.go
index 687af00170..0861610f16 100644
--- a/src/net/interface_bsd.go
+++ b/src/net/interface_bsd.go
@@ -38,12 +38,7 @@ func interfaceTable(ifindex int) ([]Interface, error) {
ift[n].HardwareAddr = make([]byte, len(sa.Addr))
copy(ift[n].HardwareAddr, sa.Addr)
}
- for _, sys := range m.Sys() {
- if imx, ok := sys.(*routebsd.InterfaceMetrics); ok {
- ift[n].MTU = imx.MTU
- break
- }
- }
+ ift[n].MTU = m.MTU()
n++
if ifindex == m.Index {
return ift[:n], nil
@@ -97,19 +92,27 @@ func interfaceAddrTable(ifi *Interface) ([]Addr, error) {
}
var mask IPMask
switch sa := m.Addrs[syscall.RTAX_NETMASK].(type) {
- case *routebsd.Inet4Addr:
- mask = IPv4Mask(sa.IP[0], sa.IP[1], sa.IP[2], sa.IP[3])
- case *routebsd.Inet6Addr:
- mask = make(IPMask, IPv6len)
- copy(mask, sa.IP[:])
+ case *routebsd.InetAddr:
+ if sa.IP.Is4() {
+ a := sa.IP.As4()
+ mask = IPv4Mask(a[0], a[1], a[2], a[3])
+ } else if sa.IP.Is6() {
+ a := sa.IP.As16()
+ mask = make(IPMask, IPv6len)
+ copy(mask, a[:])
+ }
}
var ip IP
switch sa := m.Addrs[syscall.RTAX_IFA].(type) {
- case *routebsd.Inet4Addr:
- ip = IPv4(sa.IP[0], sa.IP[1], sa.IP[2], sa.IP[3])
- case *routebsd.Inet6Addr:
- ip = make(IP, IPv6len)
- copy(ip, sa.IP[:])
+ case *routebsd.InetAddr:
+ if sa.IP.Is4() {
+ a := sa.IP.As4()
+ ip = IPv4(a[0], a[1], a[2], a[3])
+ } else if sa.IP.Is6() {
+ a := sa.IP.As16()
+ ip = make(IP, IPv6len)
+ copy(ip, a[:])
+ }
}
if ip != nil && mask != nil { // NetBSD may contain routebsd.LinkAddr
ifat = append(ifat, &IPNet{IP: ip, Mask: mask})
diff --git a/src/net/interface_bsdvar.go b/src/net/interface_bsdvar.go
index 3946921232..dc6c293a8e 100644
--- a/src/net/interface_bsdvar.go
+++ b/src/net/interface_bsdvar.go
@@ -12,11 +12,7 @@ import (
)
func interfaceMessages(ifindex int) ([]routebsd.Message, error) {
- rib, err := routebsd.FetchRIB(syscall.AF_UNSPEC, syscall.NET_RT_IFLIST, ifindex)
- if err != nil {
- return nil, err
- }
- return routebsd.ParseRIB(syscall.NET_RT_IFLIST, rib)
+ return routebsd.FetchRIBMessages(syscall.NET_RT_IFLIST, ifindex)
}
// interfaceMulticastAddrTable returns addresses for a specific
diff --git a/src/net/interface_darwin.go b/src/net/interface_darwin.go
index 45f1363025..95c44e68e6 100644
--- a/src/net/interface_darwin.go
+++ b/src/net/interface_darwin.go
@@ -10,21 +10,13 @@ import (
)
func interfaceMessages(ifindex int) ([]routebsd.Message, error) {
- rib, err := routebsd.FetchRIB(syscall.AF_UNSPEC, syscall.NET_RT_IFLIST, ifindex)
- if err != nil {
- return nil, err
- }
- return routebsd.ParseRIB(syscall.NET_RT_IFLIST, rib)
+ return routebsd.FetchRIBMessages(syscall.NET_RT_IFLIST, ifindex)
}
// interfaceMulticastAddrTable returns addresses for a specific
// interface.
func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
- rib, err := routebsd.FetchRIB(syscall.AF_UNSPEC, syscall.NET_RT_IFLIST2, ifi.Index)
- if err != nil {
- return nil, err
- }
- msgs, err := routebsd.ParseRIB(syscall.NET_RT_IFLIST2, rib)
+ msgs, err := routebsd.FetchRIBMessages(syscall.NET_RT_IFLIST2, ifi.Index)
if err != nil {
return nil, err
}
@@ -37,11 +29,15 @@ func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
}
var ip IP
switch sa := m.Addrs[syscall.RTAX_IFA].(type) {
- case *routebsd.Inet4Addr:
- ip = IPv4(sa.IP[0], sa.IP[1], sa.IP[2], sa.IP[3])
- case *routebsd.Inet6Addr:
- ip = make(IP, IPv6len)
- copy(ip, sa.IP[:])
+ case *routebsd.InetAddr:
+ if sa.IP.Is4() {
+ a := sa.IP.As4()
+ ip = IPv4(a[0], a[1], a[2], a[3])
+ } else if sa.IP.Is6() {
+ a := sa.IP.As16()
+ ip = make(IP, IPv6len)
+ copy(ip, a[:])
+ }
}
if ip != nil {
ifmat = append(ifmat, &IPAddr{IP: ip})
diff --git a/src/net/interface_freebsd.go b/src/net/interface_freebsd.go
index fda7a86a2f..301faa47ba 100644
--- a/src/net/interface_freebsd.go
+++ b/src/net/interface_freebsd.go
@@ -10,21 +10,13 @@ import (
)
func interfaceMessages(ifindex int) ([]routebsd.Message, error) {
- rib, err := routebsd.FetchRIB(syscall.AF_UNSPEC, routebsd.RIBTypeInterface, ifindex)
- if err != nil {
- return nil, err
- }
- return routebsd.ParseRIB(routebsd.RIBTypeInterface, rib)
+ return routebsd.FetchRIBMessages(syscall.NET_RT_IFLIST, ifindex)
}
// interfaceMulticastAddrTable returns addresses for a specific
// interface.
func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
- rib, err := routebsd.FetchRIB(syscall.AF_UNSPEC, syscall.NET_RT_IFMALIST, ifi.Index)
- if err != nil {
- return nil, err
- }
- msgs, err := routebsd.ParseRIB(syscall.NET_RT_IFMALIST, rib)
+ msgs, err := routebsd.FetchRIBMessages(syscall.NET_RT_IFMALIST, ifi.Index)
if err != nil {
return nil, err
}
@@ -37,11 +29,15 @@ func interfaceMulticastAddrTable(ifi *Interface) ([]Addr, error) {
}
var ip IP
switch sa := m.Addrs[syscall.RTAX_IFA].(type) {
- case *routebsd.Inet4Addr:
- ip = IPv4(sa.IP[0], sa.IP[1], sa.IP[2], sa.IP[3])
- case *routebsd.Inet6Addr:
- ip = make(IP, IPv6len)
- copy(ip, sa.IP[:])
+ case *routebsd.InetAddr:
+ if sa.IP.Is4() {
+ a := sa.IP.As4()
+ ip = IPv4(a[0], a[1], a[2], a[3])
+ } else if sa.IP.Is6() {
+ a := sa.IP.As16()
+ ip = make(IP, IPv6len)
+ copy(ip, a[:])
+ }
}
if ip != nil {
ifmat = append(ifmat, &IPAddr{IP: ip})