mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-27 05:48:39 +00:00
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
// Copyright 2012 Google, Inc. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style license
|
|
// that can be found in the LICENSE file in the root of the source
|
|
// tree.
|
|
|
|
package layers
|
|
|
|
import (
|
|
"github.com/google/gopacket"
|
|
)
|
|
|
|
// EAPOL defines an EAP over LAN (802.1x) layer.
|
|
type EAPOL struct {
|
|
BaseLayer
|
|
Version uint8
|
|
Type EAPOLType
|
|
}
|
|
|
|
// LayerType returns LayerTypeEAPOL.
|
|
func (e *EAPOL) LayerType() gopacket.LayerType { return LayerTypeEAPOL }
|
|
|
|
// DecodeFromBytes decodes the given bytes into this layer.
|
|
func (e *EAPOL) DecodeFromBytes(data []byte, df gopacket.DecodeFeedback) error {
|
|
e.Version = data[0]
|
|
e.Type = EAPOLType(data[1])
|
|
e.BaseLayer = BaseLayer{data[:2], data[2:]}
|
|
return nil
|
|
}
|
|
|
|
// CanDecode returns the set of layer types that this DecodingLayer can decode.
|
|
func (e *EAPOL) CanDecode() gopacket.LayerClass {
|
|
return LayerTypeEAPOL
|
|
}
|
|
|
|
// NextLayerType returns the layer type contained by this DecodingLayer.
|
|
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)
|
|
}
|