1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // 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"
- "net"
- )
- // FDDI contains the header for FDDI frames.
- type FDDI struct {
- BaseLayer
- FrameControl FDDIFrameControl
- Priority uint8
- SrcMAC, DstMAC net.HardwareAddr
- }
- // LayerType returns LayerTypeFDDI.
- func (f *FDDI) LayerType() gopacket.LayerType { return LayerTypeFDDI }
- // LinkFlow returns a new flow of type EndpointMAC.
- func (f *FDDI) LinkFlow() gopacket.Flow {
- return gopacket.NewFlow(EndpointMAC, f.SrcMAC, f.DstMAC)
- }
- func decodeFDDI(data []byte, p gopacket.PacketBuilder) error {
- f := &FDDI{
- FrameControl: FDDIFrameControl(data[0] & 0xF8),
- Priority: data[0] & 0x07,
- SrcMAC: net.HardwareAddr(data[1:7]),
- DstMAC: net.HardwareAddr(data[7:13]),
- BaseLayer: BaseLayer{data[:13], data[13:]},
- }
- p.SetLinkLayer(f)
- p.AddLayer(f)
- return p.NextDecoder(f.FrameControl)
- }
|