github.com/dorkamotorka/go/src@v0.0.0-20230614113921-187095f0e316/net/cgo_socknew.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 //go:build cgo && !netgo && (android || linux || solaris) 6 7 package net 8 9 /* 10 #include <sys/types.h> 11 #include <sys/socket.h> 12 13 #include <netinet/in.h> 14 */ 15 import "C" 16 17 import ( 18 "syscall" 19 "unsafe" 20 ) 21 22 func cgoSockaddrInet4(ip IP) *C.struct_sockaddr { 23 sa := syscall.RawSockaddrInet4{Family: syscall.AF_INET} 24 copy(sa.Addr[:], ip) 25 return (*C.struct_sockaddr)(unsafe.Pointer(&sa)) 26 } 27 28 func cgoSockaddrInet6(ip IP, zone int) *C.struct_sockaddr { 29 sa := syscall.RawSockaddrInet6{Family: syscall.AF_INET6, Scope_id: uint32(zone)} 30 copy(sa.Addr[:], ip) 31 return (*C.struct_sockaddr)(unsafe.Pointer(&sa)) 32 }