// Copyright 2014 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.

//go:build darwin || linux || solaris

package ipv4

import (
	
	

	
	

	
)

func marshalPacketInfo( []byte,  *ControlMessage) []byte {
	 := socket.ControlMessage()
	.MarshalHeader(iana.ProtocolIP, unix.IP_PKTINFO, sizeofInetPktinfo)
	if  != nil {
		 := (*inetPktinfo)(unsafe.Pointer(&.Data(sizeofInetPktinfo)[0]))
		if  := .Src.To4();  != nil {
			copy(.Spec_dst[:], )
		}
		if .IfIndex > 0 {
			.setIfindex(.IfIndex)
		}
	}
	return .Next(sizeofInetPktinfo)
}

func parsePacketInfo( *ControlMessage,  []byte) {
	 := (*inetPktinfo)(unsafe.Pointer(&[0]))
	.IfIndex = int(.Ifindex)
	if len(.Dst) < net.IPv4len {
		.Dst = make(net.IP, net.IPv4len)
	}
	copy(.Dst, .Addr[:])
}