github.com/gidoBOSSftw5731/go/src@v0.0.0-20210226122457-d24b0edbf019/net/cgo_sockold.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 && (aix || darwin || dragonfly || freebsd || netbsd || openbsd) 6 // +build cgo 7 // +build !netgo 8 // +build aix darwin dragonfly freebsd netbsd openbsd 9 10 package net 11 12 /* 13 #include <sys/types.h> 14 #include <sys/socket.h> 15 16 #include <netinet/in.h> 17 */ 18 import "C" 19 20 import ( 21 "syscall" 22 "unsafe" 23 ) 24 25 func cgoSockaddrInet4(ip IP) *C.struct_sockaddr { 26 sa := syscall.RawSockaddrInet4{Len: syscall.SizeofSockaddrInet4, Family: syscall.AF_INET} 27 copy(sa.Addr[:], ip) 28 return (*C.struct_sockaddr)(unsafe.Pointer(&sa)) 29 } 30 31 func cgoSockaddrInet6(ip IP, zone int) *C.struct_sockaddr { 32 sa := syscall.RawSockaddrInet6{Len: syscall.SizeofSockaddrInet6, Family: syscall.AF_INET6, Scope_id: uint32(zone)} 33 copy(sa.Addr[:], ip) 34 return (*C.struct_sockaddr)(unsafe.Pointer(&sa)) 35 }