-- 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