From 33a15eb6c020b7c54456b809e02ab678a1cebb51 Mon Sep 17 00:00:00 2001 From: Mikio Hara Date: Fri, 23 Sep 2011 23:37:42 +0900 Subject: [PATCH] net: make use of AF_UNSPEC instead of individual address family R=fullung, rsc CC=golang-dev https://golang.org/cl/5034044 --- src/pkg/net/interface_bsd.go | 1 - src/pkg/net/interface_linux.go | 35 +++++++++++----------------------- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/pkg/net/interface_bsd.go b/src/pkg/net/interface_bsd.go index 9171827d22..54fa5ddeb6 100644 --- a/src/pkg/net/interface_bsd.go +++ b/src/pkg/net/interface_bsd.go @@ -150,7 +150,6 @@ func newAddr(m *syscall.InterfaceAddrMessage) ([]Addr, os.Error) { } for _, s := range sas { - switch v := s.(type) { case *syscall.SockaddrInet4: ifa := &IPAddr{IP: IPv4(v.Addr[0], v.Addr[1], v.Addr[2], v.Addr[3])} diff --git a/src/pkg/net/interface_linux.go b/src/pkg/net/interface_linux.go index 3d2a0bb9f8..36ae04ffa7 100644 --- a/src/pkg/net/interface_linux.go +++ b/src/pkg/net/interface_linux.go @@ -103,42 +103,29 @@ func linkFlags(rawFlags uint32) Flags { // for a specific interface. func interfaceAddrTable(ifindex int) ([]Addr, os.Error) { var ( - tab []byte - e int - err os.Error - ifat4 []Addr - ifat6 []Addr - msgs4 []syscall.NetlinkMessage - msgs6 []syscall.NetlinkMessage + tab []byte + e int + err os.Error + ifat []Addr + msgs []syscall.NetlinkMessage ) - tab, e = syscall.NetlinkRIB(syscall.RTM_GETADDR, syscall.AF_INET) + tab, e = syscall.NetlinkRIB(syscall.RTM_GETADDR, syscall.AF_UNSPEC) if e != 0 { return nil, os.NewSyscallError("netlink rib", e) } - msgs4, e = syscall.ParseNetlinkMessage(tab) + + msgs, e = syscall.ParseNetlinkMessage(tab) if e != 0 { return nil, os.NewSyscallError("netlink message", e) } - ifat4, err = addrTable(msgs4, ifindex) + + ifat, err = addrTable(msgs, ifindex) if err != nil { return nil, err } - tab, e = syscall.NetlinkRIB(syscall.RTM_GETADDR, syscall.AF_INET6) - if e != 0 { - return nil, os.NewSyscallError("netlink rib", e) - } - msgs6, e = syscall.ParseNetlinkMessage(tab) - if e != 0 { - return nil, os.NewSyscallError("netlink message", e) - } - ifat6, err = addrTable(msgs6, ifindex) - if err != nil { - return nil, err - } - - return append(ifat4, ifat6...), nil + return ifat, nil } func addrTable(msgs []syscall.NetlinkMessage, ifindex int) ([]Addr, os.Error) {