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