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
*/
import "C"
-func cgoAddrInfoMask() C.int {
- return C.AI_MASK
+func cgoAddrInfoFlags() C.int {
+ return C.AI_CANONNAME | C.AI_V4MAPPED | C.AI_ALL
}
*/
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
}
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))