func (e UnsupportedLayerType) Error() string {
	return fmt.Sprintf("No decoder for layer type %v", LayerType(e))
}
Error implements the error interface, returning a string to say that the
given layer type is unsupported.
package gopacket
import (
	"fmt"
)
type DecodingLayer interface {
	DecodeFromBytes(data []byte, df DecodeFeedback) error
	CanDecode() LayerClass
	NextLayerType() LayerType
	LayerPayload() []byte
}
type DecodingLayerParser struct {
	DecodingLayerParserOptions
	first    LayerType
	decoders map[LayerType]DecodingLayer
	df       DecodeFeedback
	Truncated bool
}
func (l *DecodingLayerParser) AddDecodingLayer(d DecodingLayer) {
	for _, typ := range d.CanDecode().LayerTypes() {
		l.decoders[typ] = d
	}
}
func (l *DecodingLayerParser) SetTruncated() {
	l.Truncated = true
}
func NewDecodingLayerParser(first LayerType, decoders ...DecodingLayer) *DecodingLayerParser {
	dlp := &DecodingLayerParser{
		decoders: make(map[LayerType]DecodingLayer),
		first:    first,
	}
	dlp.df = dlp  
	for _, d := range decoders {
		dlp.AddDecodingLayer(d)
	}
	return dlp
}
func (l *DecodingLayerParser) DecodeLayers(data []byte, decoded *[]LayerType) (err error) {
	l.Truncated = false
	if !l.IgnorePanic {
		defer panicToError(&err)
	}
	typ := l.first
	*decoded = (*decoded)[:0]  
	for len(data) > 0 {
		decoder, ok := l.decoders[typ]
		if !ok {
			if l.IgnoreUnsupported {
				return nil
			}
			return UnsupportedLayerType(typ)
		} else if err = decoder.DecodeFromBytes(data, l.df); err != nil {
			return err
		}
		*decoded = append(*decoded, typ)
		typ = decoder.NextLayerType()
		data = decoder.LayerPayload()
	}
	return nil
}
type UnsupportedLayerType LayerType