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

Method decodeEthernet

packet/ethernet.go:66–97  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

64)
65
66func (p *Packet) decodeEthernet() error {
67 var (
68 d Datalink
69 err error
70 )
71
72 if len(p.data) < 14 {
73 return errShortEthernetHeaderLength
74 }
75
76 d, err = decodeIEEE802(p.data)
77 if err != nil {
78 return err
79 }
80
81 if d.EtherType == EtherTypeIEEE8021Q {
82 vlan := int(p.data[14])<<8 | int(p.data[15])
83 p.data[12], p.data[13] = p.data[16], p.data[17]
84 p.data = append(p.data[:14], p.data[18:]...)
85
86 d, err = decodeIEEE802(p.data)
87 if err != nil {
88 return err
89 }
90 d.Vlan = vlan
91 }
92
93 p.L2 = d
94 p.data = p.data[14:]
95
96 return nil
97}
98
99func decodeIEEE802(b []byte) (Datalink, error) {
100 var d Datalink

Callers 1

decodeEthernetHeaderMethod · 0.95

Calls 1

decodeIEEE802Function · 0.85

Tested by

no test coverage detected