codec-0.1: Examples/IP.hs
module Examples.IP where
import Data.Codec
import Data.Binary.Bits.Codec
import Data.Word
data IPv4 = IPv4
{ version :: Word8
, ihl :: Word8
, dscp :: Word8
, ecn :: Word8
, totalLength :: Word16
, identification :: Word16
, flags :: Word8
, fragmentOffset :: Word16
, timeToLive :: Word8
, protocol :: Word8
, headerChecksum :: Word16
, sourceIP :: Word32
, destIP :: Word32
}
genFields ''IPv4
ipv4Codec :: BitCodec IPv4
ipv4Codec =
IPv4
$>> f_version >-< word8 4
>>> f_ihl >-< word8 4
>>> f_dscp >-< word8 6
>>> f_ecn >-< word8 2
>>> f_totalLength >-< word16be 16
>>> f_identification >-< word16be 16
>>> f_flags >-< word8 3
>>> f_fragmentOffset >-< word16be 13
>>> f_timeToLive >-< word8 8
>>> f_protocol >-< word8 8
>>> f_headerChecksum >-< word16be 16
>>> f_sourceIP >-< word32be 32
>>> f_destIP >-< word32be 32