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

Method decodeNextLayer

packet/network.go:85–133  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

83)
84
85func (p *Packet) decodeNextLayer() error {
86
87 var (
88 proto int
89 len int
90 )
91
92 switch p.L3.(type) {
93 case IPv4Header:
94 proto = p.L3.(IPv4Header).Protocol
95 case IPv6Header:
96 proto = p.L3.(IPv6Header).NextHeader
97 default:
98 return errUnknownL3Protocol
99 }
100
101 switch proto {
102 case IANAProtoICMP, IANAProtoIPv6ICMP:
103 icmp, err := decodeICMP(p.data)
104 if err != nil {
105 return err
106 }
107
108 p.L4 = icmp
109 len = 4
110 case IANAProtoTCP:
111 tcp, err := decodeTCP(p.data)
112 if err != nil {
113 return err
114 }
115
116 p.L4 = tcp
117 len = 20
118 case IANAProtoUDP:
119 udp, err := decodeUDP(p.data)
120 if err != nil {
121 return err
122 }
123
124 p.L4 = udp
125 len = 8
126 default:
127 return errUnknownTransportLayer
128 }
129
130 p.data = p.data[len:]
131
132 return nil
133}
134
135func (p *Packet) decodeIPv6Header() error {
136 if len(p.data) < IPv6HLen {

Callers 2

DecoderMethod · 0.95
decodeEthernetHeaderMethod · 0.95

Calls 3

decodeICMPFunction · 0.85
decodeTCPFunction · 0.85
decodeUDPFunction · 0.85

Tested by

no test coverage detected