github.com/axw/llgo@v0.0.0-20160805011314-95b5fe4dca20/third_party/gofrontend/libgo/go/net/cgo_resold.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build cgo,!netgo 6 // +build android freebsd dragonfly openbsd 7 8 package net 9 10 /* 11 #include <sys/types.h> 12 #include <sys/socket.h> 13 14 #include <netdb.h> 15 */ 16 17 import ( 18 "syscall" 19 ) 20 21 //extern getnameinfo 22 func libc_getnameinfo(*syscall.RawSockaddr, syscall.Socklen_t, *byte, syscall.Size_t, *byte, syscall.Size_t, int) int 23 24 func cgoNameinfoPTR(b []byte, sa *syscall.RawSockaddr, salen syscall.Socklen_t) (int, error) { 25 syscall.Entersyscall() 26 gerrno := libc_getnameinfo(sa, salen, &b[0], syscall.Size(len(b)), nil, 0, syscall.NI_NAMEREQD) 27 syscall.Exitsyscall() 28 var err error 29 if gerrno == syscall.EAI_SYSTEM { 30 errno := syscall.GetErrno() 31 if errno != 0 { 32 err = errno 33 } 34 } 35 return gerrno, err 36 }