This module provides data structures for Ethernet frames as well as parsers and unparsers for Ethernet frames.
- type EthernetFrame = EthernetHeader :*: (EthernetBody :*: HNil)
- data EthernetBody
- data EthernetHeader
- = EthernetHeader { }
- | Ethernet8021Q { }
- type EthernetTypeCode = Word16
- ethTypeIP, typeEth2Cutoff, ethTypeVLAN, ethTypeLLDP, ethTypeARP :: EthernetTypeCode
- type VLANPriority = Word8
- type VLANID = Word16
- eth_ip_packet :: EthernetFrame -> Maybe (EthernetHeader :*: IPPacket)
- eth_ip_tcp_packet :: EthernetFrame -> Maybe (EthernetHeader :*: (IPHeader :*: (TCPHeader :*: HNil)))
- eth_ip_udp_packet :: EthernetFrame -> Maybe (EthernetHeader :*: (IPHeader :*: (UDPHeader :*: (ByteString :*: HNil))))
- foldEthernetFrame :: (EthernetHeader -> EthernetBody -> a) -> EthernetFrame -> a
- foldEthernetBody :: (IPPacket -> a) -> (ARPPacket -> a) -> (ByteString -> a) -> EthernetBody -> a
- getEthernetFrame :: Get EthernetFrame
- getEthHeader :: Get EthernetHeader
- getEthernetFrame2 :: Int -> Get EthernetFrame
- getEthHeader2 :: Get EthernetHeader
- putEthHeader :: EthernetHeader -> Put
- putEthFrame :: EthernetFrame -> Put
- arpQuery :: EthernetAddress -> IPAddress -> IPAddress -> EthernetFrame
- arpReply :: EthernetAddress -> IPAddress -> EthernetAddress -> IPAddress -> EthernetFrame
Data types
type EthernetFrame = EthernetHeader :*: (EthernetBody :*: HNil)Source
An Ethernet frame is either an IP packet, an ARP packet, or an uninterpreted ByteString
.
Based on http:en.wikipedia.orgwikiFile:Ethernet_Type_II_Frame_format.svg
data EthernetBody Source
type EthernetTypeCode = Word16Source
Ethernet type code, determines the type of payload carried by an Ethernet frame.
type VLANPriority = Word8Source
eth_ip_tcp_packet :: EthernetFrame -> Maybe (EthernetHeader :*: (IPHeader :*: (TCPHeader :*: HNil)))Source
eth_ip_udp_packet :: EthernetFrame -> Maybe (EthernetHeader :*: (IPHeader :*: (UDPHeader :*: (ByteString :*: HNil))))Source
foldEthernetFrame :: (EthernetHeader -> EthernetBody -> a) -> EthernetFrame -> aSource
foldEthernetBody :: (IPPacket -> a) -> (ARPPacket -> a) -> (ByteString -> a) -> EthernetBody -> aSource
Parsers and unparsers
getEthernetFrame :: Get EthernetFrameSource
Parser for Ethernet frames.
getEthHeader2 :: Get EthernetHeaderSource
Parser for Ethernet headers.
putEthHeader :: EthernetHeader -> PutSource
Unparser for Ethernet headers.
ARP frames
:: EthernetAddress | source hardware address |
-> IPAddress | source IP address |
-> IPAddress | target IP address |
-> EthernetFrame |
:: EthernetAddress | source hardware address |
-> IPAddress | source IP address |
-> EthernetAddress | target hardware address |
-> IPAddress | target IP address |
-> EthernetFrame |