{-# LINE 1 "src/Network/Icmp/Marshal.hsc" #-}
{-# language DataKinds #-}
module Network.Icmp.Marshal
( pokeIcmpHeader
, peekIcmpHeaderSequenceNumber
, peekIcmpHeaderPayload
, peekIcmpHeaderType
, sizeOfIcmpHeader
) where
import Data.Word (Word32,Word16,Word8)
import GHC.Exts (RealWorld)
import Data.Primitive (MutableByteArray)
import Data.Primitive (readByteArray,writeByteArray)
sizeOfIcmpHeader :: Int
sizeOfIcmpHeader = (8)
{-# LINE 42 "src/Network/Icmp/Marshal.hsc" #-}
pokeIcmpHeader ::
MutableByteArray RealWorld
-> Word16
-> Word32
-> IO ()
pokeIcmpHeader ptr sequenceNumber payload = do
(\hsc_arr -> writeByteArray hsc_arr 0) ptr (8 :: Word8)
{-# LINE 60 "src/Network/Icmp/Marshal.hsc" #-}
(\hsc_arr -> writeByteArray hsc_arr 3) ptr sequenceNumber
{-# LINE 61 "src/Network/Icmp/Marshal.hsc" #-}
writeByteArray ptr 2 payload
{-# LINE 62 "src/Network/Icmp/Marshal.hsc" #-}
peekIcmpHeaderType :: MutableByteArray RealWorld -> IO Word8
peekIcmpHeaderType ptr = do
(\hsc_arr -> readByteArray hsc_arr 0) ptr
{-# LINE 66 "src/Network/Icmp/Marshal.hsc" #-}
peekIcmpHeaderSequenceNumber :: MutableByteArray RealWorld -> IO Word16
peekIcmpHeaderSequenceNumber ptr = do
(\hsc_arr -> readByteArray hsc_arr 3) ptr
{-# LINE 70 "src/Network/Icmp/Marshal.hsc" #-}
peekIcmpHeaderPayload :: MutableByteArray RealWorld -> IO Word32
peekIcmpHeaderPayload ptr = do
readByteArray ptr 2
{-# LINE 74 "src/Network/Icmp/Marshal.hsc" #-}