| 12345678910111213141516171819202122232425262728293031323334353637383940 | // Copyright 2012 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.// +build darwin dragonfly freebsd netbsd openbsdpackage ipv4import (	"net"	"syscall"	"unsafe"	"golang.org/x/net/internal/iana"	"golang.org/x/net/internal/socket")func marshalDst(b []byte, cm *ControlMessage) []byte {	m := socket.ControlMessage(b)	m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len)	return m.Next(net.IPv4len)}func parseDst(cm *ControlMessage, b []byte) {	if len(cm.Dst) < net.IPv4len {		cm.Dst = make(net.IP, net.IPv4len)	}	copy(cm.Dst, b[:net.IPv4len])}func marshalInterface(b []byte, cm *ControlMessage) []byte {	m := socket.ControlMessage(b)	m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink)	return m.Next(syscall.SizeofSockaddrDatalink)}func parseInterface(cm *ControlMessage, b []byte) {	sadl := (*syscall.SockaddrDatalink)(unsafe.Pointer(&b[0]))	cm.IfIndex = int(sadl.Index)}
 |