1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
{-# OPTIONS_HADDOCK hide #-}
module Network.DNS.Decode.Internal (
-- ** Internal message component decoders for tests
decodeDNSHeader
, decodeDNSFlags
, decodeDomain
, decodeMailbox
, decodeResourceRecordAt
, decodeResourceRecord
) where
import Network.DNS.Decode.Parsers
import Network.DNS.Imports
import Network.DNS.StateBinary
import Network.DNS.Types.Internal
----------------------------------------------------------------
-- | Decode the 'DNSFlags' field of 'DNSHeader'. This is an internal function
-- exposed only for testing.
--
decodeDNSFlags :: ByteString -> Either DNSError DNSFlags
decodeDNSFlags bs = fst <$> runSGet getDNSFlags bs
-- | Decode the 'DNSHeader' of a message. This is an internal function.
-- exposed only for testing.
--
decodeDNSHeader :: ByteString -> Either DNSError DNSHeader
decodeDNSHeader bs = fst <$> runSGet getHeader bs
-- | Decode a domain name. Since DNS names may use name compression, it is not
-- generally possible to decode the names separately from the enclosing DNS
-- message. This is an internal function exposed only for testing.
--
decodeDomain :: ByteString -> Either DNSError Domain
decodeDomain bs = fst <$> runSGet getDomain bs
-- | Decode a mailbox name (e.g. the SOA record /rname/ field). Since DNS names
-- may use name compression, it is not generally possible to decode the names
-- separately from the enclosing DNS message. This is an internal function.
--
decodeMailbox :: ByteString -> Either DNSError Mailbox
decodeMailbox bs = fst <$> runSGet getMailbox bs
-- | Decoding resource records.
-- | Decode a resource record (RR) with any DNS timestamps interpreted at the
-- nominal epoch time (see 'decodeAt'). Since RRs may use name compression,
-- it is not generally possible to decode resource record separately from the
-- enclosing DNS message. This is an internal function.
--
decodeResourceRecord :: ByteString -> Either DNSError ResourceRecord
decodeResourceRecord bs = fst <$> runSGet getResourceRecord bs
-- | Decode a resource record (RR) with DNS timestamps interpreted at the
-- supplied epoch time. Since RRs may use DNS name compression, it is not
-- generally possible to decode resource record separately from the enclosing
-- DNS message. This is an internal function.
--
decodeResourceRecordAt :: Int64 -- ^ current epoch time
-> ByteString -- ^ encoded resource record
-> Either DNSError ResourceRecord
decodeResourceRecordAt t bs = fst <$> runSGetAt t getResourceRecord bs
|