diff options
| author | Ian Lance Taylor <iant@golang.org> | 2024-12-18 14:45:09 -0800 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2025-02-03 12:11:07 -0800 |
| commit | dcebb675b3fa0fd8d3056323a9f7f857ce4a2105 (patch) | |
| tree | 95e02916669456f82ef170647af296b496b73094 /src/net | |
| parent | c1a5889edbd3e499df10db5ed1d8006c73de5792 (diff) | |
| download | go-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.go | 35 | ||||
| -rw-r--r-- | src/net/interface_bsdvar.go | 6 | ||||
| -rw-r--r-- | src/net/interface_darwin.go | 26 | ||||
| -rw-r--r-- | src/net/interface_freebsd.go | 26 |
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}) |
