func (b IPv6) DestinationAddress() tcpip.Address {
	return tcpip.Address(b[v6DstAddr:][:IPv6AddressSize])
}
DestinationAddress returns the "destination address" field of the ipv6
header.
package header
import (
	"encoding/binary"
	"strings"
	"github.com/google/netstack/tcpip"
)
const (
	versTCFL = 0
	IPv6PayloadLenOffset = 4
	nextHdr              = 6
	hopLimit             = 7
	v6SrcAddr            = 8
	v6DstAddr            = v6SrcAddr + IPv6AddressSize
)
type IPv6Fields struct {
	TrafficClass uint8
	FlowLabel uint32
	PayloadLength uint16
	NextHeader uint8
	HopLimit uint8
	SrcAddr tcpip.Address
	DstAddr tcpip.Address
}
type IPv6 []byte
const (
	IPv6MinimumSize = 40
	IPv6AddressSize = 16
	IPv6ProtocolNumber tcpip.NetworkProtocolNumber = 0x86dd
	IPv6Version = 6
	IPv6AllNodesMulticastAddress tcpip.Address = "\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"
	IPv6MinimumMTU = 1280
	IPv6Any tcpip.Address = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
)
var IPv6EmptySubnet = func() tcpip.Subnet {
	subnet, err := tcpip.NewSubnet(IPv6Any, tcpip.AddressMask(IPv6Any))
	if err != nil {
		panic(err)
	}
	return subnet
}()
var IPv6LinkLocalPrefix = tcpip.AddressWithPrefix{
	Address:   "\xfe\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
	PrefixLen: 64,
}
func (b IPv6) PayloadLength() uint16 {
	return binary.BigEndian.Uint16(b[IPv6PayloadLenOffset:])
}
func (b IPv6) HopLimit() uint8 {
	return b[hopLimit]
}
func (b IPv6) NextHeader() uint8 {
	return b[nextHdr]
}
func (b IPv6) TransportProtocol() tcpip.TransportProtocolNumber {
	return tcpip.TransportProtocolNumber(b.NextHeader())
}
func (b IPv6) Payload() []byte {
	return b[IPv6MinimumSize:][:b.PayloadLength()]
}
func (b IPv6) SourceAddress() tcpip.Address {
	return tcpip.Address(b[v6SrcAddr:][:IPv6AddressSize])
}