]> Cypherpunks repositories - gostls13.git/commitdiff
net: move cgo address info flags to per-platform files
authorJoel Sing <jsing@google.com>
Sun, 3 Jun 2012 13:54:14 +0000 (23:54 +1000)
committerJoel Sing <jsing@google.com>
Sun, 3 Jun 2012 13:54:14 +0000 (23:54 +1000)
Move address info flags to per-platform files. This is needed to
enable cgo on NetBSD (and later OpenBSD), as some of the currently
used AI_* defines do not exist on these platforms.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6250075

src/pkg/net/cgo_bsd.go
src/pkg/net/cgo_linux.go
src/pkg/net/cgo_unix.go

index 63750f7a3dbd2d2e9e295454584fcb10d5943fb8..cf9cabbfebbb0554ae82c0ba16ce8cf140199c14 100644 (file)
@@ -11,6 +11,6 @@ package net
 */
 import "C"
 
-func cgoAddrInfoMask() C.int {
-       return C.AI_MASK
+func cgoAddrInfoFlags() C.int {
+       return C.AI_CANONNAME | C.AI_V4MAPPED | C.AI_ALL
 }
index 8d4413d2da67230fcc67e480c3e78742c8ab54a2..f6cefa89ae785c8f059e03ecaff0de0c48fb0590 100644 (file)
@@ -9,6 +9,12 @@ package net
 */
 import "C"
 
-func cgoAddrInfoMask() C.int {
+func cgoAddrInfoFlags() C.int {
+       // NOTE(rsc): In theory there are approximately balanced
+       // arguments for and against including AI_ADDRCONFIG
+       // in the flags (it includes IPv4 results only on IPv4 systems,
+       // and similarly for IPv6), but in practice setting it causes
+       // getaddrinfo to return the wrong canonical name on Linux.
+       // So definitely leave it out.
        return C.AI_CANONNAME | C.AI_V4MAPPED | C.AI_ALL
 }
index 36a3f3d349ef5648cab4bd25f1971a5a68a8e44f..d703df992c51d176ee74e60c86e0f50d0bdcf8da 100644 (file)
@@ -81,13 +81,7 @@ func cgoLookupIPCNAME(name string) (addrs []IP, cname string, err error, complet
        var res *C.struct_addrinfo
        var hints C.struct_addrinfo
 
-       // NOTE(rsc): In theory there are approximately balanced
-       // arguments for and against including AI_ADDRCONFIG
-       // in the flags (it includes IPv4 results only on IPv4 systems,
-       // and similarly for IPv6), but in practice setting it causes
-       // getaddrinfo to return the wrong canonical name on Linux.
-       // So definitely leave it out.
-       hints.ai_flags = (C.AI_ALL | C.AI_V4MAPPED | C.AI_CANONNAME) & cgoAddrInfoMask()
+       hints.ai_flags = cgoAddrInfoFlags()
 
        h := C.CString(name)
        defer C.free(unsafe.Pointer(h))