123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package gopacket
- import (
- "errors"
- )
- type DecodeFeedback interface {
-
-
-
- SetTruncated()
- }
- type nilDecodeFeedback struct{}
- func (nilDecodeFeedback) SetTruncated() {}
- var NilDecodeFeedback DecodeFeedback = nilDecodeFeedback{}
- type PacketBuilder interface {
- DecodeFeedback
-
-
- AddLayer(l Layer)
-
-
-
- SetLinkLayer(LinkLayer)
- SetNetworkLayer(NetworkLayer)
- SetTransportLayer(TransportLayer)
- SetApplicationLayer(ApplicationLayer)
- SetErrorLayer(ErrorLayer)
-
-
-
-
-
-
- NextDecoder(next Decoder) error
-
-
-
-
- DumpPacketData()
-
- DecodeOptions() *DecodeOptions
- }
- type Decoder interface {
-
-
-
- Decode([]byte, PacketBuilder) error
- }
- type DecodeFunc func([]byte, PacketBuilder) error
- func (d DecodeFunc) Decode(data []byte, p PacketBuilder) error {
-
- return d(data, p)
- }
- var DecodePayload Decoder = DecodeFunc(decodePayload)
- var DecodeUnknown Decoder = DecodeFunc(decodeUnknown)
- var DecodeFragment Decoder = DecodeFunc(decodeFragment)
- var LayerTypeZero = RegisterLayerType(0, LayerTypeMetadata{Name: "Unknown", Decoder: DecodeUnknown})
- var LayerTypeDecodeFailure = RegisterLayerType(1, LayerTypeMetadata{Name: "DecodeFailure", Decoder: DecodeUnknown})
- var LayerTypePayload = RegisterLayerType(2, LayerTypeMetadata{Name: "Payload", Decoder: DecodePayload})
- var LayerTypeFragment = RegisterLayerType(3, LayerTypeMetadata{Name: "Fragment", Decoder: DecodeFragment})
- type DecodeFailure struct {
- data []byte
- err error
- stack []byte
- }
- func (d *DecodeFailure) Error() error { return d.err }
- func (d *DecodeFailure) LayerContents() []byte { return d.data }
- func (d *DecodeFailure) LayerPayload() []byte { return nil }
- func (d *DecodeFailure) String() string {
- return "Packet decoding error: " + d.Error().Error()
- }
- func (d *DecodeFailure) Dump() (s string) {
- if d.stack != nil {
- s = string(d.stack)
- }
- return
- }
- func (d *DecodeFailure) LayerType() LayerType { return LayerTypeDecodeFailure }
- func decodeUnknown(data []byte, p PacketBuilder) error {
- return errors.New("Layer type not currently supported")
- }
|