mirror of
https://github.com/golang/net.git
synced 2026-03-31 10:27:08 +09:00
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:
committed by
Gopher Robot
parent
1bab6f366d
commit
69896b7148
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 (
|
||||
|
||||
12
lif/lif.go
12
lif/lif.go
@@ -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
|
||||
|
||||
12
lif/link.go
12
lif/link.go
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 (
|
||||
|
||||
Reference in New Issue
Block a user