-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Library for network data structures (ex: ip/udp/tcp headers and helper functions)
--
-- This library includes definiations for common headers such as IPv4,
-- IPv6, UDP, TCP, etc. Data type/functions for full packets, better
-- typeclass setup, and a more agreeable interface with a berkeley
-- sockets like API should be coming soon. Also, test cases - this code
-- is untested as of yet.
@package network-data
@version 0.0.2
module Data.Header
-- | A class of network headers that assumes a checksum is present.
class (Num c, Binary h) => L3Header h a c | h -> a, a -> h, h -> c
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 (Binary a) => L3Address a h | a -> h, h -> a
localBroadcast :: (L3Address a h) => a -> a
globalBroadcast :: (L3Address a h) => a
module Data.CSum
csum16 :: ByteString -> CSum
data CSum
zeroCSum :: CSum
instance Eq CSum
instance Ord CSum
instance Show CSum
instance Bounded CSum
instance Num CSum
instance Binary CSum
module Data.TCP
data 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
instance Eq TCPHeader
instance Ord TCPHeader
instance Show TCPHeader
instance Eq TCPFlag
instance Ord TCPFlag
instance Show TCPFlag
instance Enum TCPFlag
instance Eq AckNumber
instance Ord AckNumber
instance Show AckNumber
instance Read AckNumber
instance Num AckNumber
instance Bounded AckNumber
instance Eq SeqNumber
instance Ord SeqNumber
instance Show SeqNumber
instance Read SeqNumber
instance Num SeqNumber
instance Bounded SeqNumber
instance Eq TCPPort
instance Ord TCPPort
instance Show TCPPort
instance Read TCPPort
instance Num TCPPort
instance Bounded TCPPort
instance Binary TCPHeader
instance Enum [TCPFlag]
instance Binary AckNumber
instance Binary SeqNumber
instance Binary TCPPort
module Data.UDP
data UDPPort
data UDPHeader
UDPHdr :: UDPPort -> UDPPort -> Int -> CSum -> UDPHeader
srcPort :: UDPHeader -> UDPPort
dstPort :: UDPHeader -> UDPPort
payloadLength :: UDPHeader -> Int
checksum :: UDPHeader -> CSum
instance Eq UDPHeader
instance Ord UDPHeader
instance Show UDPHeader
instance Eq UDPPort
instance Ord UDPPort
instance Show UDPPort
instance Read UDPPort
instance Num UDPPort
instance Bounded UDPPort
instance Binary UDPHeader
instance Binary UDPPort
module Data.IPv6
data IPv6
IPv6 :: ByteString -> IPv6
instance Eq IPv6Ext
instance Ord IPv6Ext
instance Show IPv6Ext
instance Eq IPv6Header
instance Ord IPv6Header
instance Show IPv6Header
instance Eq IPv6
instance Ord IPv6
instance Show IPv6
instance Read IPv6
instance Pretty IPv6
instance Binary IPv6Ext
instance Binary IPv6Header
instance Binary IPv6
-- | The Data.IP library exports IPv4 and IPv6 address and header
-- structures.
--
-- Patches to add more parsing and pretty printing are welcome.
--
-- FIXME: There is currently no support for options fields of the IP
-- header.
module Data.IP
-- | For IPv4 addresses. The internal representation is a bytestring so use
-- the pretty print ipv4 function as needed (instead of
-- show).
data IPv4
IPv4 :: ByteString -> 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 field is overflowed!
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
payloadLength :: 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
dummyIPv4Header :: IPv4Header
ipv4 :: GenParser Char st IPv4
instance Eq IPv4Header
instance Ord IPv4Header
instance Show IPv4Header
instance Eq IPv4Flag
instance Ord IPv4Flag
instance Show IPv4Flag
instance Read IPv4Flag
instance Eq IPv4
instance Ord IPv4
instance Show IPv4
instance Read IPv4
instance Pretty IPv4
instance L3Address IPv4 IPv4Header
instance L3Header IPv4Header IPv4 CSum
instance Binary IPv4Header
instance Enum [IPv4Flag]
instance Binary IPv4