123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- package gopacket
- import (
- "fmt"
- )
- type Layer interface {
-
- LayerType() LayerType
-
- LayerContents() []byte
-
-
- LayerPayload() []byte
- }
- type Payload []byte
- func (p Payload) LayerType() LayerType { return LayerTypePayload }
- func (p Payload) LayerContents() []byte { return []byte(p) }
- func (p Payload) LayerPayload() []byte { return nil }
- func (p Payload) Payload() []byte { return []byte(p) }
- func (p Payload) String() string { return fmt.Sprintf("%d byte(s)", len(p)) }
- func (p Payload) GoString() string { return LongBytesGoString([]byte(p)) }
- func (p Payload) CanDecode() LayerClass { return LayerTypePayload }
- func (p Payload) NextLayerType() LayerType { return LayerTypeZero }
- func (p *Payload) DecodeFromBytes(data []byte, df DecodeFeedback) error {
- *p = Payload(data)
- return nil
- }
- func (p Payload) SerializeTo(b SerializeBuffer, opts SerializeOptions) error {
- bytes, err := b.PrependBytes(len(p))
- if err != nil {
- return err
- }
- copy(bytes, p)
- return nil
- }
- func decodePayload(data []byte, p PacketBuilder) error {
- payload := &Payload{}
- if err := payload.DecodeFromBytes(data, p); err != nil {
- return nil
- }
- p.AddLayer(payload)
- p.SetApplicationLayer(payload)
- return nil
- }
- type Fragment []byte
- func (p *Fragment) LayerType() LayerType { return LayerTypeFragment }
- func (p *Fragment) LayerContents() []byte { return []byte(*p) }
- func (p *Fragment) LayerPayload() []byte { return nil }
- func (p *Fragment) Payload() []byte { return []byte(*p) }
- func (p *Fragment) String() string { return fmt.Sprintf("%d byte(s)", len(*p)) }
- func (p *Fragment) CanDecode() LayerClass { return LayerTypeFragment }
- func (p *Fragment) NextLayerType() LayerType { return LayerTypeZero }
- func (p *Fragment) DecodeFromBytes(data []byte, df DecodeFeedback) error {
- *p = Fragment(data)
- return nil
- }
- func (p *Fragment) SerializeTo(b SerializeBuffer, opts SerializeOptions) error {
- bytes, err := b.PrependBytes(len(*p))
- if err != nil {
- return err
- }
- copy(bytes, *p)
- return nil
- }
- func decodeFragment(data []byte, p PacketBuilder) error {
- payload := &Fragment{}
- if err := payload.DecodeFromBytes(data, p); err != nil {
- return nil
- }
- p.AddLayer(payload)
- p.SetApplicationLayer(payload)
- return nil
- }
- type LinkLayer interface {
- Layer
- LinkFlow() Flow
- }
- type NetworkLayer interface {
- Layer
- NetworkFlow() Flow
- }
- type TransportLayer interface {
- Layer
- TransportFlow() Flow
- }
- type ApplicationLayer interface {
- Layer
- Payload() []byte
- }
- type ErrorLayer interface {
- Layer
- Error() error
- }
|