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

package icmp

// A DstUnreach represents an ICMP destination unreachable message
// body.
type DstUnreach struct {
	Data []byte // data
}

// Len implements the Len method of MessageBody interface.
func (p *DstUnreach) Len() int {
	if p == nil {
		return 0
	}
	return 4 + len(p.Data)
}

// Marshal implements the Marshal method of MessageBody interface.
func (p *DstUnreach) Marshal() ([]byte, error) {
	b := make([]byte, 4+len(p.Data))
	copy(b[4:], p.Data)
	return b, nil
}

// parseDstUnreach parses b as an ICMP destination unreachable message
// body.
func parseDstUnreach(b []byte) (MessageBody, error) {
	bodyLen := len(b)
	if bodyLen < 4 {
		return nil, errMessageTooShort
	}
	p := &DstUnreach{}
	if bodyLen > 4 {
		p.Data = make([]byte, bodyLen-4)
		copy(p.Data, b[4:])
	}
	return p, nil
}
