]> Cypherpunks repositories - gostls13.git/commitdiff
net: make zone helpers into methods of ipv6ZoneCache
authorMikio Hara <mikioh.mikioh@gmail.com>
Thu, 27 Apr 2017 10:00:09 +0000 (19:00 +0900)
committerMikio Hara <mikioh.mikioh@gmail.com>
Fri, 28 Apr 2017 00:03:17 +0000 (00:03 +0000)
Change-Id: Id93e78f0c8bef125f124a0a919053208e24a63cd
Reviewed-on: https://go-review.googlesource.com/41836
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/cgo_unix.go
src/net/interface.go
src/net/iprawsock_posix.go
src/net/ipsock_posix.go
src/net/lookup_windows.go
src/net/main_test.go
src/net/tcpsock_posix.go
src/net/udpsock_posix.go

index 56d34b6d0356bfd7f08560f91634e9a3b7089d03..d5173d68be30f5171c946fe9ff39c07909cc0688 100644 (file)
@@ -192,7 +192,7 @@ func cgoLookupIPCNAME(name string) (addrs []IPAddr, cname string, err error) {
                        addrs = append(addrs, addr)
                case C.AF_INET6:
                        sa := (*syscall.RawSockaddrInet6)(unsafe.Pointer(r.ai_addr))
-                       addr := IPAddr{IP: copyIP(sa.Addr[:]), Zone: zoneToString(int(sa.Scope_id))}
+                       addr := IPAddr{IP: copyIP(sa.Addr[:]), Zone: zoneCache.name(int(sa.Scope_id))}
                        addrs = append(addrs, addr)
                }
        }
@@ -317,7 +317,7 @@ func cgoSockaddr(ip IP, zone string) (*C.struct_sockaddr, C.socklen_t) {
                return cgoSockaddrInet4(ip4), C.socklen_t(syscall.SizeofSockaddrInet4)
        }
        if ip6 := ip.To16(); ip6 != nil {
-               return cgoSockaddrInet6(ip6, zoneToInt(zone)), C.socklen_t(syscall.SizeofSockaddrInet6)
+               return cgoSockaddrInet6(ip6, zoneCache.index(zone)), C.socklen_t(syscall.SizeofSockaddrInet6)
        }
        return nil, 0
 }
index b3297f249d6c41a9cee3083f12e6fb654088267b..4036a7f4750dc0e33b16f4eb18349388af5f8401 100644 (file)
@@ -211,30 +211,30 @@ func (zc *ipv6ZoneCache) update(ift []Interface) {
        }
 }
 
-func zoneToString(zone int) string {
-       if zone == 0 {
+func (zc *ipv6ZoneCache) name(index int) string {
+       if index == 0 {
                return ""
        }
        zoneCache.update(nil)
        zoneCache.RLock()
        defer zoneCache.RUnlock()
-       name, ok := zoneCache.toName[zone]
+       name, ok := zoneCache.toName[index]
        if !ok {
-               name = uitoa(uint(zone))
+               name = uitoa(uint(index))
        }
        return name
 }
 
-func zoneToInt(zone string) int {
-       if zone == "" {
+func (zc *ipv6ZoneCache) index(name string) int {
+       if name == "" {
                return 0
        }
        zoneCache.update(nil)
        zoneCache.RLock()
        defer zoneCache.RUnlock()
-       index, ok := zoneCache.toIndex[zone]
+       index, ok := zoneCache.toIndex[name]
        if !ok {
-               index, _, _ = dtoi(zone)
+               index, _, _ = dtoi(name)
        }
        return index
 }
index 5d76818af9f70121a2e2e72a1b0fbb469b17d7ad..64c601602fe88d491e934e9395f68bb2381df209 100644 (file)
@@ -16,7 +16,7 @@ func sockaddrToIP(sa syscall.Sockaddr) Addr {
        case *syscall.SockaddrInet4:
                return &IPAddr{IP: sa.Addr[0:]}
        case *syscall.SockaddrInet6:
-               return &IPAddr{IP: sa.Addr[0:], Zone: zoneToString(int(sa.ZoneId))}
+               return &IPAddr{IP: sa.Addr[0:], Zone: zoneCache.name(int(sa.ZoneId))}
        }
        return nil
 }
@@ -52,7 +52,7 @@ func (c *IPConn) readFrom(b []byte) (int, *IPAddr, error) {
                addr = &IPAddr{IP: sa.Addr[0:]}
                n = stripIPv4Header(n, b)
        case *syscall.SockaddrInet6:
-               addr = &IPAddr{IP: sa.Addr[0:], Zone: zoneToString(int(sa.ZoneId))}
+               addr = &IPAddr{IP: sa.Addr[0:], Zone: zoneCache.name(int(sa.ZoneId))}
        }
        return n, addr, err
 }
@@ -79,7 +79,7 @@ func (c *IPConn) readMsg(b, oob []byte) (n, oobn, flags int, addr *IPAddr, err e
        case *syscall.SockaddrInet4:
                addr = &IPAddr{IP: sa.Addr[0:]}
        case *syscall.SockaddrInet6:
-               addr = &IPAddr{IP: sa.Addr[0:], Zone: zoneToString(int(sa.ZoneId))}
+               addr = &IPAddr{IP: sa.Addr[0:], Zone: zoneCache.name(int(sa.ZoneId))}
        }
        return
 }
index f1a701329eb0596936bd00d2e5f216dfdece560f..d659bf063a1675984c7a21e10535e69120494dad 100644 (file)
@@ -174,7 +174,7 @@ func ipToSockaddr(family int, ip IP, port int, zone string) (syscall.Sockaddr, e
                if ip6 == nil {
                        return nil, &AddrError{Err: "non-IPv6 address", Addr: ip.String()}
                }
-               sa := &syscall.SockaddrInet6{Port: port, ZoneId: uint32(zoneToInt(zone))}
+               sa := &syscall.SockaddrInet6{Port: port, ZoneId: uint32(zoneCache.index(zone))}
                copy(sa.Addr[:], ip6)
                return sa, nil
        }
index 5808293058aa8625f4bc4a0d01c06f8b4b104614..0036d89d150dc6910729e845d0c2a114ca49cd97 100644 (file)
@@ -107,7 +107,7 @@ func (r *Resolver) lookupIP(ctx context.Context, name string) ([]IPAddr, error)
                                addrs = append(addrs, IPAddr{IP: IPv4(a[0], a[1], a[2], a[3])})
                        case syscall.AF_INET6:
                                a := (*syscall.RawSockaddrInet6)(addr).Addr
-                               zone := zoneToString(int((*syscall.RawSockaddrInet6)(addr).Scope_id))
+                               zone := zoneCache.name(int((*syscall.RawSockaddrInet6)(addr).Scope_id))
                                addrs = append(addrs, IPAddr{IP: IP{a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]}, Zone: zone})
                        default:
                                ch <- ret{err: &DNSError{Err: syscall.EWINDOWS.Error(), Name: name}}
index 1d3f73a2661699a2138f887cb6d62260753d256f..bbf32cfcd945c7ef49249cd7ed165b56d0d74b3a 100644 (file)
@@ -95,15 +95,15 @@ func setupTestData() {
        if ifi != nil {
                index := fmt.Sprintf("%v", ifi.Index)
                resolveTCPAddrTests = append(resolveTCPAddrTests, []resolveTCPAddrTest{
-                       {"tcp6", "[fe80::1%" + ifi.Name + "]:1", &TCPAddr{IP: ParseIP("fe80::1"), Port: 1, Zone: zoneToString(ifi.Index)}, nil},
+                       {"tcp6", "[fe80::1%" + ifi.Name + "]:1", &TCPAddr{IP: ParseIP("fe80::1"), Port: 1, Zone: zoneCache.name(ifi.Index)}, nil},
                        {"tcp6", "[fe80::1%" + index + "]:2", &TCPAddr{IP: ParseIP("fe80::1"), Port: 2, Zone: index}, nil},
                }...)
                resolveUDPAddrTests = append(resolveUDPAddrTests, []resolveUDPAddrTest{
-                       {"udp6", "[fe80::1%" + ifi.Name + "]:1", &UDPAddr{IP: ParseIP("fe80::1"), Port: 1, Zone: zoneToString(ifi.Index)}, nil},
+                       {"udp6", "[fe80::1%" + ifi.Name + "]:1", &UDPAddr{IP: ParseIP("fe80::1"), Port: 1, Zone: zoneCache.name(ifi.Index)}, nil},
                        {"udp6", "[fe80::1%" + index + "]:2", &UDPAddr{IP: ParseIP("fe80::1"), Port: 2, Zone: index}, nil},
                }...)
                resolveIPAddrTests = append(resolveIPAddrTests, []resolveIPAddrTest{
-                       {"ip6", "fe80::1%" + ifi.Name, &IPAddr{IP: ParseIP("fe80::1"), Zone: zoneToString(ifi.Index)}, nil},
+                       {"ip6", "fe80::1%" + ifi.Name, &IPAddr{IP: ParseIP("fe80::1"), Zone: zoneCache.name(ifi.Index)}, nil},
                        {"ip6", "fe80::1%" + index, &IPAddr{IP: ParseIP("fe80::1"), Zone: index}, nil},
                }...)
        }
index 9641e5c028323e508267cb66250b5deaabeff467..58c7e49a77c05e8bcf2ad4dfda289c36477de861 100644 (file)
@@ -18,7 +18,7 @@ func sockaddrToTCP(sa syscall.Sockaddr) Addr {
        case *syscall.SockaddrInet4:
                return &TCPAddr{IP: sa.Addr[0:], Port: sa.Port}
        case *syscall.SockaddrInet6:
-               return &TCPAddr{IP: sa.Addr[0:], Port: sa.Port, Zone: zoneToString(int(sa.ZoneId))}
+               return &TCPAddr{IP: sa.Addr[0:], Port: sa.Port, Zone: zoneCache.name(int(sa.ZoneId))}
        }
        return nil
 }
index 72aadca5dc9637a518ba0c351bb0c7d343e8b625..a126506d3423ca812c014c629957127389a5218b 100644 (file)
@@ -16,7 +16,7 @@ func sockaddrToUDP(sa syscall.Sockaddr) Addr {
        case *syscall.SockaddrInet4:
                return &UDPAddr{IP: sa.Addr[0:], Port: sa.Port}
        case *syscall.SockaddrInet6:
-               return &UDPAddr{IP: sa.Addr[0:], Port: sa.Port, Zone: zoneToString(int(sa.ZoneId))}
+               return &UDPAddr{IP: sa.Addr[0:], Port: sa.Port, Zone: zoneCache.name(int(sa.ZoneId))}
        }
        return nil
 }
@@ -49,7 +49,7 @@ func (c *UDPConn) readFrom(b []byte) (int, *UDPAddr, error) {
        case *syscall.SockaddrInet4:
                addr = &UDPAddr{IP: sa.Addr[0:], Port: sa.Port}
        case *syscall.SockaddrInet6:
-               addr = &UDPAddr{IP: sa.Addr[0:], Port: sa.Port, Zone: zoneToString(int(sa.ZoneId))}
+               addr = &UDPAddr{IP: sa.Addr[0:], Port: sa.Port, Zone: zoneCache.name(int(sa.ZoneId))}
        }
        return n, addr, err
 }
@@ -61,7 +61,7 @@ func (c *UDPConn) readMsg(b, oob []byte) (n, oobn, flags int, addr *UDPAddr, err
        case *syscall.SockaddrInet4:
                addr = &UDPAddr{IP: sa.Addr[0:], Port: sa.Port}
        case *syscall.SockaddrInet6:
-               addr = &UDPAddr{IP: sa.Addr[0:], Port: sa.Port, Zone: zoneToString(int(sa.ZoneId))}
+               addr = &UDPAddr{IP: sa.Addr[0:], Port: sa.Port, Zone: zoneCache.name(int(sa.ZoneId))}
        }
        return
 }