blob: 4d9869de04fabbf6f9dcf14375dfae035cfb1d5d [file] [log] [blame]
Mikio Hara99f5f792015-01-28 20:08:41 +09001// 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
Russ Coxd4b26382021-02-19 18:35:10 -05005//go:build cgo && !netgo && (aix || darwin || dragonfly || freebsd || netbsd || openbsd)
Mikio Hara99f5f792015-01-28 20:08:41 +09006
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
Mikio Hara8854bdb2015-11-27 12:06:11 +090028func cgoSockaddrInet6(ip IP, zone int) *C.struct_sockaddr {
29 sa := syscall.RawSockaddrInet6{Len: syscall.SizeofSockaddrInet6, Family: syscall.AF_INET6, Scope_id: uint32(zone)}
Mikio Hara99f5f792015-01-28 20:08:41 +090030 copy(sa.Addr[:], ip)
31 return (*C.struct_sockaddr)(unsafe.Pointer(&sa))
32}