]> Cypherpunks repositories - gostls13.git/commitdiff
net: make use of AF_UNSPEC instead of individual address family
authorMikio Hara <mikioh.mikioh@gmail.com>
Fri, 23 Sep 2011 14:37:42 +0000 (23:37 +0900)
committerMikio Hara <mikioh.mikioh@gmail.com>
Fri, 23 Sep 2011 14:37:42 +0000 (23:37 +0900)
R=fullung, rsc
CC=golang-dev
https://golang.org/cl/5034044

src/pkg/net/interface_bsd.go
src/pkg/net/interface_linux.go

index 9171827d22c28f9fd7cbb35e101c8ce048e49928..54fa5ddeb69f83d75849884d4c8624c2b96af4ce 100644 (file)
@@ -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])}
index 3d2a0bb9f8a0a614142e871bd9cd653fb3fbd730..36ae04ffa71e936423572c6d0790fb347456a555 100644 (file)
@@ -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)
-       if e != 0 {
-               return nil, os.NewSyscallError("netlink message", e)
-       }
-       ifat4, err = addrTable(msgs4, 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)
+       msgs, e = syscall.ParseNetlinkMessage(tab)
        if e != 0 {
                return nil, os.NewSyscallError("netlink message", e)
        }
-       ifat6, err = addrTable(msgs6, ifindex)
+
+       ifat, err = addrTable(msgs, 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) {