-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Library for network data structures and their serialization.
--
-- This library includes definitions for common headers such as Ethernet,
-- IPv4, IPv6, UDP, TCP, etc. This code is untested for any serious work
-- - use at your own risk.
@package network-data
@version 0.5
module Data.Header
-- | A class of network headers that assumes a checksum is present.
class (Eq c, Num c, Serialize h) => L3Header h a c | h -> a, a -> h, h -> c where zeroChecksum h = setChecksum h 0 fillChecksum h = setChecksum h (computeChecksum h) valid h = computeChecksum h == getChecksum h
getChecksum :: L3Header h a c => h -> c
setChecksum :: L3Header h a c => h -> c -> h
src :: L3Header h a c => h -> a
dst :: L3Header h a c => h -> a
zeroChecksum :: L3Header h a c => h -> h
computeChecksum :: L3Header h a c => h -> c
fillChecksum :: L3Header h a c => h -> h
pseudoHeader :: L3Header h a c => h -> ByteString
valid :: L3Header h a c => h -> Bool
-- | A class of network addresses that assumes there is a
-- broadcast concept.
class Serialize a => L3Address a h | a -> h, h -> a
localBroadcast :: L3Address a h => a -> a
globalBroadcast :: L3Address a h => a
module Data.IPv6
data IPv6
IPv6 :: ByteString -> IPv6
data IPv6Header
instance Typeable IPv6
instance Typeable IPv6Ext
instance Typeable IPv6Header
instance Eq IPv6
instance Ord IPv6
instance Show IPv6
instance Read IPv6
instance Data IPv6
instance Eq IPv6Ext
instance Ord IPv6Ext
instance Show IPv6Ext
instance Read IPv6Ext
instance Data IPv6Ext
instance Eq IPv6Header
instance Ord IPv6Header
instance Show IPv6Header
instance Read IPv6Header
instance Data IPv6Header
instance Pretty IPv6
instance Serialize IPv6Ext
instance Serialize IPv6Header
instance Serialize IPv6
module Data.CSum
csum16 :: ByteString -> CSum
data CSum
zeroCSum :: CSum
instance Typeable CSum
instance Eq CSum
instance Ord CSum
instance Show CSum
instance Read CSum
instance Bounded CSum
instance Num CSum
instance Data CSum
instance Serialize CSum
-- | The Data.IP library exports IPv4 address and header structures.
--
-- FIXME: There is currently no support for options fields of the IP
-- header.
module Data.IP
-- | For IPv4 addresses.
data IPv4
IPv4 :: Word32 -> IPv4
-- | This IPv4 header structure lacks support for options. Ints are used
-- for most integral data types and the binary instance hands the bit
-- packing.
--
-- No warning is provided if a value is trunkated when packed!
data IPv4Header
IPv4Hdr :: Int -> Int -> Int -> Int -> Int -> [IPv4Flag] -> Int -> Int -> Int -> CSum -> IPv4 -> IPv4 -> IPv4Header
hdrLength :: IPv4Header -> Int
version :: IPv4Header -> Int
tos :: IPv4Header -> Int
totalLength :: IPv4Header -> Int
ipID :: IPv4Header -> Int
flags :: IPv4Header -> [IPv4Flag]
fragmentOffset :: IPv4Header -> Int
ttl :: IPv4Header -> Int
protocol :: IPv4Header -> Int
checksum :: IPv4Header -> CSum
source :: IPv4Header -> IPv4
destination :: IPv4Header -> IPv4
-- | Don't fragment, more fragment and reserved flags
data IPv4Flag
DF :: IPv4Flag
MF :: IPv4Flag
Res :: IPv4Flag
type IP = Either IPv4 IPv6
type IPHeader = Either IPv4Header IPv6Header
-- | A dummy header with zeroed fields except version, header length and
-- TTL (255).
dummyIPv4Header :: IPv4Header
instance Typeable IPv4
instance Typeable IPv4Flag
instance Typeable IPv4Header
instance Eq IPv4
instance Ord IPv4
instance Show IPv4
instance Read IPv4
instance Data IPv4
instance Eq IPv4Flag
instance Ord IPv4Flag
instance Show IPv4Flag
instance Read IPv4Flag
instance Data IPv4Flag
instance Eq IPv4Header
instance Ord IPv4Header
instance Show IPv4Header
instance Read IPv4Header
instance Data IPv4Header
instance Pretty IPv4
instance L3Address IPv4 IPv4Header
instance L3Header IPv4Header IPv4 CSum
instance Serialize IPv4Header
instance Enum [IPv4Flag]
instance Serialize IPv4
module Data.TCP
newtype TCPPort
TCPPort :: Word16 -> TCPPort
data TCPHeader
TCPHdr :: TCPPort -> TCPPort -> SeqNumber -> AckNumber -> Int -> Int -> [TCPFlag] -> Int -> CSum -> Int -> TCPHeader
srcPort :: TCPHeader -> TCPPort
dstPort :: TCPHeader -> TCPPort
seqNumber :: TCPHeader -> SeqNumber
ackNumber :: TCPHeader -> AckNumber
dataOffset :: TCPHeader -> Int
res :: TCPHeader -> Int
flags :: TCPHeader -> [TCPFlag]
windowSize :: TCPHeader -> Int
checksum :: TCPHeader -> CSum
urgentPtr :: TCPHeader -> Int
data TCPFlag
FIN :: TCPFlag
SYN :: TCPFlag
RST :: TCPFlag
PSH :: TCPFlag
ACK :: TCPFlag
URG :: TCPFlag
ECE :: TCPFlag
CWR :: TCPFlag
instance Typeable TCPPort
instance Typeable SeqNumber
instance Typeable AckNumber
instance Typeable TCPFlag
instance Typeable TCPHeader
instance Eq TCPPort
instance Ord TCPPort
instance Show TCPPort
instance Read TCPPort
instance Num TCPPort
instance Bounded TCPPort
instance Data TCPPort
instance Eq SeqNumber
instance Ord SeqNumber
instance Show SeqNumber
instance Read SeqNumber
instance Num SeqNumber
instance Bounded SeqNumber
instance Data SeqNumber
instance Eq AckNumber
instance Ord AckNumber
instance Show AckNumber
instance Read AckNumber
instance Num AckNumber
instance Bounded AckNumber
instance Data AckNumber
instance Eq TCPFlag
instance Ord TCPFlag
instance Show TCPFlag
instance Read TCPFlag
instance Enum TCPFlag
instance Data TCPFlag
instance Eq TCPHeader
instance Ord TCPHeader
instance Show TCPHeader
instance Read TCPHeader
instance Data TCPHeader
instance Serialize TCPHeader
instance Enum [TCPFlag]
instance Serialize AckNumber
instance Serialize SeqNumber
instance Serialize TCPPort
module Data.UDP
newtype UDPPort
UDPPort :: Word16 -> UDPPort
data UDPHeader
UDPHdr :: UDPPort -> UDPPort -> Int -> CSum -> UDPHeader
srcPort :: UDPHeader -> UDPPort
dstPort :: UDPHeader -> UDPPort
payloadLength :: UDPHeader -> Int
checksum :: UDPHeader -> CSum
instance Typeable UDPPort
instance Typeable UDPHeader
instance Eq UDPPort
instance Ord UDPPort
instance Show UDPPort
instance Read UDPPort
instance Num UDPPort
instance Bounded UDPPort
instance Data UDPPort
instance Eq UDPHeader
instance Ord UDPHeader
instance Show UDPHeader
instance Read UDPHeader
instance Data UDPHeader
instance Serialize UDPHeader
instance Serialize UDPPort
instance Pretty UDPPort
-- | The Data.Ethernet module exports Ethernet header structures.
module Data.Ethernet
-- | An Ethernet hardware address or MAC address.
data Ethernet
Ethernet :: !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> !Word8 -> Ethernet
data EthernetHeader
EthernetHdr :: !Ethernet -> !Ethernet -> !(Maybe Word16) -> !Word16 -> EthernetHeader
destination :: EthernetHeader -> !Ethernet
source :: EthernetHeader -> !Ethernet
vlanTag :: EthernetHeader -> !(Maybe Word16)
etherType :: EthernetHeader -> !Word16
-- | Two bytes of ethertype if 802.1Q tag is present.
vlanEthertype :: Word16
instance Typeable Ethernet
instance Typeable EthernetHeader
instance Eq Ethernet
instance Ord Ethernet
instance Show Ethernet
instance Read Ethernet
instance Data Ethernet
instance Eq EthernetHeader
instance Ord EthernetHeader
instance Show EthernetHeader
instance Read EthernetHeader
instance Data EthernetHeader
instance Pretty Ethernet
instance Serialize EthernetHeader
instance Serialize Ethernet