MCPcopy Create free account
hub / github.com/Edgio/vflow / Decoder

Method Decoder

packet/packet.go:53–84  ·  view source on GitHub ↗

Decoder decodes packet's layers

(data []byte, protocol uint32)

Source from the content-addressed store, hash-verified

51
52// Decoder decodes packet's layers
53func (p *Packet) Decoder(data []byte, protocol uint32) (*Packet, error) {
54 var (
55 err error
56 )
57
58 p.data = data
59
60 switch protocol {
61 case headerProtocolEthernet:
62 err = p.decodeEthernetHeader()
63 return p, err
64 case headerProtocolIPv4:
65 err = p.decodeIPv4Header()
66 if err != nil {
67 return p, err
68 }
69 case headerProtocolIPv6:
70 err = p.decodeIPv6Header()
71 if err != nil {
72 return p, err
73 }
74 default:
75 return p, errUnknownHeaderProtocol
76 }
77
78 err = p.decodeNextLayer()
79 if err != nil {
80 return p, err
81 }
82
83 return p, nil
84}
85
86func (p *Packet) decodeEthernetHeader() error {
87 var (

Callers 3

decodeSampledHeaderFunction · 0.95

Calls 4

decodeEthernetHeaderMethod · 0.95
decodeIPv4HeaderMethod · 0.95
decodeIPv6HeaderMethod · 0.95
decodeNextLayerMethod · 0.95

Tested by 2