Documentation ¶
Index ¶
Constants ¶
Variables ¶
View Source
var ( // ErrNotVLAN is an error returned when calling EthernetFrame.ExtractVLAN // if the frame is not of type EthernetTypeVLAN ErrNotVLAN = errors.New("ethernet frame not of type VLAN") // ErrMalformedVLAN is an error returned when parsing a VLAN tag // that is malformed ErrMalformedVLAN = errors.New("VLAN tag is malformed") // ErrMalformedFrame is an error returned when parsing an ethernet frame // that is malformed ErrMalformedFrame = errors.New("malformed ethernet frame") )
Functions ¶
This section is empty.
Types ¶
type ARPPacket ¶
type ARPPacket struct { SendIPAddr netip.Addr TgtIPAddr netip.Addr SendHwAddr net.HardwareAddr TgtHwAddr net.HardwareAddr HardwareType HardwareType OpCode uint16 ProtocolType ProtocolType HardwareAddrLen uint8 ProtocolAddrLen uint8 }
ARPPacket is a struct containing the data of an ARP packet
type EthernetFrame ¶
type EthernetFrame struct { SrcMAC net.HardwareAddr DstMAC net.HardwareAddr Payload []byte Len uint16 EthernetType EthernetType }
EthernetFrame represents an ethernet frame
func (*EthernetFrame) ExtractARPPacket ¶
func (e *EthernetFrame) ExtractARPPacket() (*ARPPacket, error)
ExtractARPPacket will extract an ARP packet from the ethernet frame's payload
func (*EthernetFrame) ExtractVLAN ¶
func (e *EthernetFrame) ExtractVLAN() (*VLAN, error)
ExtractVLAN will extract the VLAN tag from the ethernet frame's payload if one is present and return ErrNotVLAN if not
func (*EthernetFrame) UnmarshalBinary ¶
func (e *EthernetFrame) UnmarshalBinary(buf []byte) error
UnmarshalBinary parses ethernet frame bytes into an EthernetFrame
type EthernetType ¶
type EthernetType uint16
const ( // EthernetTypeLLC is a special ethernet type, if found the frame is truncated EthernetTypeLLC EthernetType = 0 // EthernetTypeIPv4 is the ethernet type for a frame containing an IPv4 packet EthernetTypeIPv4 EthernetType = 0x0800 // EthernetTypeARP is the ethernet type for a frame containing an ARP packet EthernetTypeARP EthernetType = 0x0806 // EthernetTypeIPv6 is the ethernet type for a frame containing an IPv6 packet EthernetTypeIPv6 EthernetType = 0x86dd // EthernetTypeVLAN is the ethernet type for a frame containing a VLAN tag, // the VLAN tag bytes will indicate the actual type of packet the frame contains EthernetTypeVLAN EthernetType = 0x8100 // NonStdLenEthernetTypes is a magic number to find any non-standard types // and mark them as EthernetTypeLLC NonStdLenEthernetTypes EthernetType = 0x600 )
func (EthernetType) String ¶
func (i EthernetType) String() string
type HardwareType ¶
type HardwareType uint16
const ( // HardwareTypeReserved is a special value for hardware type HardwareTypeReserved HardwareType = 0 // see RFC5494 // HardwareTypeEthernet is the hardware type value for Ethernet // we only care about ethernet, but additional types are defined for // testing and possible future use HardwareTypeEthernet HardwareType = 1 // HardwareTypeExpEth is the hardware type for experimental ethernet HardwareTypeExpEth HardwareType = 2 // HardwareTypeAX25 is the hardware type for Radio AX.25 HardwareTypeAX25 HardwareType = 3 // HardwareTypeChaos is a chaos value for hardware type HardwareTypeChaos HardwareType = 4 // HardwareTypeIEEE802 is for IEEE 802 networks HardwareTypeIEEE802 HardwareType = 5 // HardwareTypeFiberChannel is the hardware type for fiber channel HardwareTypeFiberChannel HardwareType = 18 // HardwareTypeSerialLine is the hardware type for serial line HardwareTypeSerialLine HardwareType = 19 // HardwareTypeHIPARP is the hardware type for HIPARP HardwareTypeHIPARP HardwareType = 28 // HardwareTypeIPARPISO7163 is the hardware type for IP and ARP over ISO 7816-3 HardwareTypeIPARPISO7163 HardwareType = 29 // HardwareTypeARPSec is the hardware type for ARPSec HardwareTypeARPSec HardwareType = 30 // HardwareTypeIPSec is the hardware type for IPSec tunnel HardwareTypeIPSec HardwareType = 31 // HardwareTypeInfiniBand is the hardware type for InfiniBand HardwareTypeInfiniBand HardwareType = 32 )
func (HardwareType) String ¶
func (i HardwareType) String() string
type ProtocolType ¶
type ProtocolType uint16
const ( // ProtocolTypeIPv4 is the value for IPv4 ARP packets ProtocolTypeIPv4 ProtocolType = 0x0800 // ProtocolTypeIPv6 is the value for IPv6 ARP packets, // which shouldn't be used, this is defined for testing purposes ProtocolTypeIPv6 ProtocolType = 0x86dd // ProtocolTypeARP is the value for ARP packets with a protocol // value of ARP itself ProtocolTypeARP ProtocolType = 0x0806 )
func (ProtocolType) String ¶
func (i ProtocolType) String() string
type VLAN ¶
type VLAN struct { Priority uint8 DropEligible bool ID uint16 EthernetType EthernetType }
VLAN represents a VLAN tag within an ethernet frame
Click to show internal directories.
Click to hide internal directories.