lif: use SIOCGLIF*, AF_* and SOCK_DGRAM consts from x/sys/unix

Use the the constants already defined in the golang.org/x/sys/unix
package instead of locally duplicating them.

Change-Id: I8ec55dccf67aa28abbca119521bac86005d80839
Reviewed-on: https://go-review.googlesource.com/c/net/+/414994
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
This commit is contained in:
Tobias Klauser
2022-06-30 09:30:28 +02:00
committed by Gopher Robot
parent 1bab6f366d
commit 69896b7148
7 changed files with 30 additions and 62 deletions

View File

@@ -10,6 +10,8 @@ package lif
import (
"errors"
"unsafe"
"golang.org/x/sys/unix"
)
// An Addr represents an address associated with packet routing.
@@ -25,7 +27,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 }
// An Inet6Addr represents an internet address for IPv6.
type Inet6Addr struct {
@@ -35,7 +37,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 }
// Addrs returns a list of interface addresses.
//
@@ -62,7 +64,7 @@ func Addrs(af int, name string) ([]Addr, error) {
lifr.Name[i] = int8(ll.Name[i])
}
for _, ep := range eps {
ioc := int64(sysSIOCGLIFADDR)
ioc := int64(unix.SIOCGLIFADDR)
err := ioctl(ep.s, uintptr(ioc), unsafe.Pointer(&lifr))
if err != nil {
continue
@@ -73,11 +75,11 @@ func Addrs(af int, name string) ([]Addr, error) {
continue
}
switch sa.Family {
case sysAF_INET:
case unix.AF_INET:
a := &Inet4Addr{PrefixLen: l}
copy(a.IP[:], lifr.Lifru[4:8])
as = append(as, a)
case sysAF_INET6:
case unix.AF_INET6:
a := &Inet6Addr{PrefixLen: l, ZoneID: int(nativeEndian.Uint32(lifr.Lifru[24:28]))}
copy(a.IP[:], lifr.Lifru[8:24])
as = append(as, a)

View File

@@ -10,17 +10,19 @@ package lif
import (
"fmt"
"testing"
"golang.org/x/sys/unix"
)
type addrFamily int
func (af addrFamily) String() string {
switch af {
case sysAF_UNSPEC:
case unix.AF_UNSPEC:
return "unspec"
case sysAF_INET:
case unix.AF_INET:
return "inet4"
case sysAF_INET6:
case unix.AF_INET6:
return "inet6"
default:
return fmt.Sprintf("%d", af)
@@ -81,7 +83,7 @@ type addrPack struct {
func addrPacks() ([]addrPack, error) {
var lastErr error
var aps []addrPack
for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
for _, af := range [...]int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
as, err := Addrs(af, "")
if err != nil {
lastErr = err

View File

@@ -19,14 +19,6 @@ package lif
*/
import "C"
const (
sysAF_UNSPEC = C.AF_UNSPEC
sysAF_INET = C.AF_INET
sysAF_INET6 = C.AF_INET6
sysSOCK_DGRAM = C.SOCK_DGRAM
)
type sockaddrStorage C.struct_sockaddr_storage
const (
@@ -36,19 +28,6 @@ const (
sysLIFC_ALLZONES = C.LIFC_ALLZONES
sysLIFC_UNDER_IPMP = C.LIFC_UNDER_IPMP
sysLIFC_ENABLED = C.LIFC_ENABLED
sysSIOCGLIFADDR = C.SIOCGLIFADDR
sysSIOCGLIFDSTADDR = C.SIOCGLIFDSTADDR
sysSIOCGLIFFLAGS = C.SIOCGLIFFLAGS
sysSIOCGLIFMTU = C.SIOCGLIFMTU
sysSIOCGLIFNETMASK = C.SIOCGLIFNETMASK
sysSIOCGLIFMETRIC = C.SIOCGLIFMETRIC
sysSIOCGLIFNUM = C.SIOCGLIFNUM
sysSIOCGLIFINDEX = C.SIOCGLIFINDEX
sysSIOCGLIFSUBNET = C.SIOCGLIFSUBNET
sysSIOCGLIFLNKINFO = C.SIOCGLIFLNKINFO
sysSIOCGLIFCONF = C.SIOCGLIFCONF
sysSIOCGLIFHWADDR = C.SIOCGLIFHWADDR
)
const (

View File

@@ -11,7 +11,11 @@
// The package supports Solaris 11 or above.
package lif
import "syscall"
import (
"syscall"
"golang.org/x/sys/unix"
)
type endpoint struct {
af int
@@ -25,12 +29,12 @@ func (ep *endpoint) close() error {
func newEndpoints(af int) ([]endpoint, error) {
var lastErr error
var eps []endpoint
afs := []int{sysAF_INET, sysAF_INET6}
if af != sysAF_UNSPEC {
afs := []int{unix.AF_INET, unix.AF_INET6}
if af != unix.AF_UNSPEC {
afs = []int{af}
}
for _, af := range afs {
s, err := syscall.Socket(af, sysSOCK_DGRAM, 0)
s, err := syscall.Socket(af, unix.SOCK_DGRAM, 0)
if err != nil {
lastErr = err
continue

View File

@@ -34,22 +34,22 @@ func (ll *Link) fetch(s uintptr) {
for i := 0; i < len(ll.Name); i++ {
lifr.Name[i] = int8(ll.Name[i])
}
ioc := int64(sysSIOCGLIFINDEX)
ioc := int64(unix.SIOCGLIFINDEX)
if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil {
ll.Index = int(nativeEndian.Uint32(lifr.Lifru[:4]))
}
ioc = int64(sysSIOCGLIFFLAGS)
ioc = int64(unix.SIOCGLIFFLAGS)
if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil {
ll.Flags = int(nativeEndian.Uint64(lifr.Lifru[:8]))
}
ioc = int64(sysSIOCGLIFMTU)
ioc = int64(unix.SIOCGLIFMTU)
if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil {
ll.MTU = int(nativeEndian.Uint32(lifr.Lifru[:4]))
}
switch ll.Type {
case unix.IFT_IPV4, unix.IFT_IPV6, unix.IFT_6TO4:
default:
ioc = int64(sysSIOCGLIFHWADDR)
ioc = int64(unix.SIOCGLIFHWADDR)
if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil {
ll.Addr, _ = parseLinkAddr(lifr.Lifru[4:])
}
@@ -79,7 +79,7 @@ func links(eps []endpoint, name string) ([]Link, error) {
lifc := lifconf{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_ALLZONES | sysLIFC_UNDER_IPMP}
for _, ep := range eps {
lifn.Family = uint16(ep.af)
ioc := int64(sysSIOCGLIFNUM)
ioc := int64(unix.SIOCGLIFNUM)
if err := ioctl(ep.s, uintptr(ioc), unsafe.Pointer(&lifn)); err != nil {
continue
}
@@ -94,7 +94,7 @@ func links(eps []endpoint, name string) ([]Link, error) {
} else {
nativeEndian.PutUint32(lifc.Lifcu[:], uint32(uintptr(unsafe.Pointer(&b[0]))))
}
ioc = int64(sysSIOCGLIFCONF)
ioc = int64(unix.SIOCGLIFCONF)
if err := ioctl(ep.s, uintptr(ioc), unsafe.Pointer(&lifc)); err != nil {
continue
}

View File

@@ -10,6 +10,8 @@ package lif
import (
"fmt"
"testing"
"golang.org/x/sys/unix"
)
func (ll *Link) String() string {
@@ -24,7 +26,7 @@ type linkPack struct {
func linkPacks() ([]linkPack, error) {
var lastErr error
var lps []linkPack
for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
for _, af := range [...]int{unix.AF_UNSPEC, unix.AF_INET, unix.AF_INET6} {
lls, err := Links(af, "")
if err != nil {
lastErr = err

View File

@@ -3,14 +3,6 @@
package lif
const (
sysAF_UNSPEC = 0x0
sysAF_INET = 0x2
sysAF_INET6 = 0x1a
sysSOCK_DGRAM = 0x1
)
type sockaddrStorage struct {
Family uint16
X_ss_pad1 [6]int8
@@ -25,19 +17,6 @@ const (
sysLIFC_ALLZONES = 0x8
sysLIFC_UNDER_IPMP = 0x10
sysLIFC_ENABLED = 0x20
sysSIOCGLIFADDR = -0x3f87968f
sysSIOCGLIFDSTADDR = -0x3f87968d
sysSIOCGLIFFLAGS = -0x3f87968b
sysSIOCGLIFMTU = -0x3f879686
sysSIOCGLIFNETMASK = -0x3f879683
sysSIOCGLIFMETRIC = -0x3f879681
sysSIOCGLIFNUM = -0x3ff3967e
sysSIOCGLIFINDEX = -0x3f87967b
sysSIOCGLIFSUBNET = -0x3f879676
sysSIOCGLIFLNKINFO = -0x3f879674
sysSIOCGLIFCONF = -0x3fef965b
sysSIOCGLIFHWADDR = -0x3f879640
)
const (