-- 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.2.0
module Data.Header
-- | A class of network headers that assumes a checksum is present.
class (Num c, Serialize 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 Serialize 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 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
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 Typeable TCPHeader
instance Typeable TCPFlag
instance Typeable AckNumber
instance Typeable SeqNumber
instance Typeable TCPPort
instance Eq TCPHeader
instance Ord TCPHeader
instance Show TCPHeader
instance Read TCPHeader
instance Data TCPHeader
instance Eq TCPFlag
instance Ord TCPFlag
instance Show TCPFlag
instance Read TCPFlag
instance Enum TCPFlag
instance Data TCPFlag
instance Eq AckNumber
instance Ord AckNumber
instance Show AckNumber
instance Read AckNumber
instance Num AckNumber
instance Bounded AckNumber
instance Data AckNumber
instance Eq SeqNumber
instance Ord SeqNumber
instance Show SeqNumber
instance Read SeqNumber
instance Num SeqNumber
instance Bounded SeqNumber
instance Data SeqNumber
instance Eq TCPPort
instance Ord TCPPort
instance Show TCPPort
instance Read TCPPort
instance Num TCPPort
instance Bounded TCPPort
instance Data TCPPort
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 UDPHeader
instance Typeable UDPPort
instance Eq UDPHeader
instance Ord UDPHeader
instance Show UDPHeader
instance Read UDPHeader
instance Data UDPHeader
instance Eq UDPPort
instance Ord UDPPort
instance Show UDPPort
instance Read UDPPort
instance Num UDPPort
instance Bounded UDPPort
instance Data UDPPort
instance Serialize UDPHeader
instance Serialize UDPPort
instance Pretty UDPPort
module Data.IPv6
data IPv6
IPv6 :: ByteString -> IPv6
data IPv6Header
ipv6 :: GenParser Char st IPv6
instance Typeable IPv6Ext
instance Typeable IPv6Header
instance Typeable 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 Eq IPv6
instance Ord IPv6
instance Show IPv6
instance Read IPv6
instance Data IPv6
instance Pretty IPv6
instance Serialize IPv6Ext
instance Serialize IPv6Header
instance Serialize IPv6
-- | 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. 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 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
dummyIPv4Header :: IPv4Header
-- | Parsec parser for IPv4 strings (ex: 33.44.255.17)
ipv4 :: GenParser Char st IPv4
instance Typeable IPv4Header
instance Typeable IPv4Flag
instance Typeable IPv4
instance Eq IPv4Header
instance Ord IPv4Header
instance Show IPv4Header
instance Read IPv4Header
instance Data IPv4Header
instance Eq IPv4Flag
instance Ord IPv4Flag
instance Show IPv4Flag
instance Read IPv4Flag
instance Data IPv4Flag
instance Eq IPv4
instance Ord IPv4
instance Show IPv4
instance Read IPv4
instance Data IPv4
instance Pretty IPv4
instance L3Address IPv4 IPv4Header
instance L3Header IPv4Header IPv4 CSum
instance Serialize IPv4Header
instance Enum [IPv4Flag]
instance Serialize IPv4