123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package layers
- import (
- "encoding/binary"
- "github.com/google/gopacket"
- )
- type EAPOL struct {
- BaseLayer
- Version uint8
- Type EAPOLType
- Length uint16
- }
- func (e *EAPOL) LayerType() gopacket.LayerType { return LayerTypeEAPOL }
- func (e *EAPOL) DecodeFromBytes(data []byte, df gopacket.DecodeFeedback) error {
- e.Version = data[0]
- e.Type = EAPOLType(data[1])
- e.Length = binary.BigEndian.Uint16(data[2:4])
- e.BaseLayer = BaseLayer{data[:4], data[4:]}
- return nil
- }
- func (e *EAPOL) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
- bytes, _ := b.PrependBytes(4)
- bytes[0] = e.Version
- bytes[1] = byte(e.Type)
- binary.BigEndian.PutUint16(bytes[2:], e.Length)
- return nil
- }
- func (e *EAPOL) CanDecode() gopacket.LayerClass {
- return LayerTypeEAPOL
- }
- func (e *EAPOL) NextLayerType() gopacket.LayerType {
- return e.Type.LayerType()
- }
- func decodeEAPOL(data []byte, p gopacket.PacketBuilder) error {
- e := &EAPOL{}
- return decodingLayerDecoder(e, data, p)
- }
|