{-# LANGUAGE RecordWildCards #-}
module Net.DNSBase.RData.SOA
( T_soa(..)
, T_rp(..)
) where
import Net.DNSBase.Internal.Util
import Net.DNSBase.Decode.Domain
import Net.DNSBase.Decode.State
import Net.DNSBase.Domain
import Net.DNSBase.Encode.Metric
import Net.DNSBase.Encode.State
import Net.DNSBase.Present
import Net.DNSBase.RData
import Net.DNSBase.RRTYPE
data T_soa = T_SOA
{ T_soa -> Domain
soaMname :: Domain
, T_soa -> Domain
soaRname :: Domain
, T_soa -> Word32
soaSerial :: Word32
, T_soa -> Word32
soaRefresh :: Word32
, T_soa -> Word32
soaRetry :: Word32
, T_soa -> Word32
soaExpire :: Word32
, T_soa -> Word32
soaMinttl :: Word32
} deriving (Int -> T_soa -> ShowS
[T_soa] -> ShowS
T_soa -> String
(Int -> T_soa -> ShowS)
-> (T_soa -> String) -> ([T_soa] -> ShowS) -> Show T_soa
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> T_soa -> ShowS
showsPrec :: Int -> T_soa -> ShowS
$cshow :: T_soa -> String
show :: T_soa -> String
$cshowList :: [T_soa] -> ShowS
showList :: [T_soa] -> ShowS
Show)
instance Eq T_soa where
T_soa
a == :: T_soa -> T_soa -> Bool
== T_soa
b = (T_soa -> Word32
soaSerial T_soa
a) Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
== (T_soa -> Word32
soaSerial T_soa
b)
Bool -> Bool -> Bool
&& (T_soa -> Domain
soaMname T_soa
a) Domain -> Domain -> Bool
`equalWireHost` (T_soa -> Domain
soaMname T_soa
b)
Bool -> Bool -> Bool
&& (T_soa -> Domain
soaRname T_soa
a) Domain -> Domain -> Bool
`equalWireHost` (T_soa -> Domain
soaRname T_soa
b)
Bool -> Bool -> Bool
&& (T_soa -> Word32
soaRefresh T_soa
a) Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
== (T_soa -> Word32
soaRefresh T_soa
b)
Bool -> Bool -> Bool
&& (T_soa -> Word32
soaRetry T_soa
a) Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
== (T_soa -> Word32
soaRetry T_soa
b)
Bool -> Bool -> Bool
&& (T_soa -> Word32
soaExpire T_soa
a) Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
== (T_soa -> Word32
soaExpire T_soa
b)
Bool -> Bool -> Bool
&& (T_soa -> Word32
soaMinttl T_soa
a) Word32 -> Word32 -> Bool
forall a. Eq a => a -> a -> Bool
== (T_soa -> Word32
soaMinttl T_soa
b)
instance Ord T_soa where
T_soa
a compare :: T_soa -> T_soa -> Ordering
`compare` T_soa
b = (T_soa -> Domain
soaMname T_soa
a) Domain -> Domain -> Ordering
`compareWireHost` (T_soa -> Domain
soaMname T_soa
b)
Ordering -> Ordering -> Ordering
forall a. Semigroup a => a -> a -> a
<> (T_soa -> Domain
soaRname T_soa
a) Domain -> Domain -> Ordering
`compareWireHost` (T_soa -> Domain
soaRname T_soa
b)
Ordering -> Ordering -> Ordering
forall a. Semigroup a => a -> a -> a
<> (T_soa -> Word32
soaSerial T_soa
a) Word32 -> Word32 -> Ordering
forall a. Ord a => a -> a -> Ordering
`compare` (T_soa -> Word32
soaSerial T_soa
b)
Ordering -> Ordering -> Ordering
forall a. Semigroup a => a -> a -> a
<> (T_soa -> Word32
soaRefresh T_soa
a) Word32 -> Word32 -> Ordering
forall a. Ord a => a -> a -> Ordering
`compare` (T_soa -> Word32
soaRefresh T_soa
b)
Ordering -> Ordering -> Ordering
forall a. Semigroup a => a -> a -> a
<> (T_soa -> Word32
soaRetry T_soa
a) Word32 -> Word32 -> Ordering
forall a. Ord a => a -> a -> Ordering
`compare` (T_soa -> Word32
soaRetry T_soa
b)
Ordering -> Ordering -> Ordering
forall a. Semigroup a => a -> a -> a
<> (T_soa -> Word32
soaExpire T_soa
a) Word32 -> Word32 -> Ordering
forall a. Ord a => a -> a -> Ordering
`compare` (T_soa -> Word32
soaExpire T_soa
b)
Ordering -> Ordering -> Ordering
forall a. Semigroup a => a -> a -> a
<> (T_soa -> Word32
soaMinttl T_soa
a) Word32 -> Word32 -> Ordering
forall a. Ord a => a -> a -> Ordering
`compare` (T_soa -> Word32
soaMinttl T_soa
b)
instance Presentable T_soa where
present :: T_soa -> Builder -> Builder
present T_SOA{Word32
Domain
soaMname :: T_soa -> Domain
soaRname :: T_soa -> Domain
soaSerial :: T_soa -> Word32
soaRefresh :: T_soa -> Word32
soaRetry :: T_soa -> Word32
soaExpire :: T_soa -> Word32
soaMinttl :: T_soa -> Word32
soaMname :: Domain
soaRname :: Domain
soaSerial :: Word32
soaRefresh :: Word32
soaRetry :: Word32
soaExpire :: Word32
soaMinttl :: Word32
..} =
Domain -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
present Domain
soaMname
(Builder -> Builder) -> (Builder -> Builder) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Domain -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
presentSp Domain
soaRname
(Builder -> Builder) -> (Builder -> Builder) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
presentSp Word32
soaSerial
(Builder -> Builder) -> (Builder -> Builder) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
presentSp Word32
soaRefresh
(Builder -> Builder) -> (Builder -> Builder) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
presentSp Word32
soaRetry
(Builder -> Builder) -> (Builder -> Builder) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
presentSp Word32
soaExpire
(Builder -> Builder) -> (Builder -> Builder) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
presentSp Word32
soaMinttl
instance KnownRData T_soa where
rdType :: forall b -> (b ~ T_soa) => RRTYPE
rdType _ = RRTYPE
SOA
{-# INLINE rdType #-}
rdEncode :: forall s. T_soa -> SPut s RData
rdEncode T_SOA{Word32
Domain
soaMname :: T_soa -> Domain
soaRname :: T_soa -> Domain
soaSerial :: T_soa -> Word32
soaRefresh :: T_soa -> Word32
soaRetry :: T_soa -> Word32
soaExpire :: T_soa -> Word32
soaMinttl :: T_soa -> Word32
soaMname :: Domain
soaRname :: Domain
soaSerial :: Word32
soaRefresh :: Word32
soaRetry :: Word32
soaExpire :: Word32
soaMinttl :: Word32
..}= do
Domain -> SPut s RData
forall r s. ErrorContext r => Domain -> SPut s r
putDomain Domain
soaMname
Domain -> SPut s RData
forall r s. ErrorContext r => Domain -> SPut s r
putDomain Domain
soaRname
SizedBuilder -> SPut s RData
forall r s. ErrorContext r => SizedBuilder -> SPut s r
putSizedBuilder (SizedBuilder -> SPut s RData) -> SizedBuilder -> SPut s RData
forall a b. (a -> b) -> a -> b
$
Word32 -> SizedBuilder
mbWord32 Word32
soaSerial
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaRefresh
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaRetry
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaExpire
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaMinttl
cnEncode :: forall s. T_soa -> SPut s RData
cnEncode T_SOA{Word32
Domain
soaMname :: T_soa -> Domain
soaRname :: T_soa -> Domain
soaSerial :: T_soa -> Word32
soaRefresh :: T_soa -> Word32
soaRetry :: T_soa -> Word32
soaExpire :: T_soa -> Word32
soaMinttl :: T_soa -> Word32
soaMname :: Domain
soaRname :: Domain
soaSerial :: Word32
soaRefresh :: Word32
soaRetry :: Word32
soaExpire :: Word32
soaMinttl :: Word32
..} = SizedBuilder -> SPut s RData
forall r s. ErrorContext r => SizedBuilder -> SPut s r
putSizedBuilder (SizedBuilder -> SPut s RData) -> SizedBuilder -> SPut s RData
forall a b. (a -> b) -> a -> b
$
Domain -> SizedBuilder
mbWireForm (Domain -> Domain
canonicalise Domain
soaMname)
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Domain -> SizedBuilder
mbWireForm (Domain -> Domain
canonicalise Domain
soaRname)
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaSerial
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaRefresh
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaRetry
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaExpire
SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Word32 -> SizedBuilder
mbWord32 Word32
soaMinttl
rdDecode :: forall b ->
(b ~ T_soa) => RDataExtensionVal T_soa -> Int -> SGet RData
rdDecode _ RDataExtensionVal T_soa
_ = SGet RData -> Int -> SGet RData
forall a b. a -> b -> a
const do
soaMname <- SGet Domain
getDomain
soaRname <- getDomain
soaSerial <- get32
soaRefresh <- get32
soaRetry <- get32
soaExpire <- get32
soaMinttl <- get32
return $ RData T_SOA{..}
data T_rp = T_RP
{ T_rp -> Domain
rpMbox :: Domain
, T_rp -> Domain
rpTxt :: Domain
} deriving (Int -> T_rp -> ShowS
[T_rp] -> ShowS
T_rp -> String
(Int -> T_rp -> ShowS)
-> (T_rp -> String) -> ([T_rp] -> ShowS) -> Show T_rp
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> T_rp -> ShowS
showsPrec :: Int -> T_rp -> ShowS
$cshow :: T_rp -> String
show :: T_rp -> String
$cshowList :: [T_rp] -> ShowS
showList :: [T_rp] -> ShowS
Show)
instance Eq T_rp where
T_rp
a == :: T_rp -> T_rp -> Bool
== T_rp
b = T_rp -> Domain
rpMbox T_rp
a Domain -> Domain -> Bool
`equalWireHost` T_rp -> Domain
rpMbox T_rp
b
Bool -> Bool -> Bool
&& T_rp -> Domain
rpTxt T_rp
a Domain -> Domain -> Bool
`equalWireHost` T_rp -> Domain
rpTxt T_rp
b
instance Ord T_rp where
T_rp
a compare :: T_rp -> T_rp -> Ordering
`compare` T_rp
b = T_rp -> Domain
rpMbox T_rp
a Domain -> Domain -> Ordering
`compareWireHost` T_rp -> Domain
rpMbox T_rp
b
Ordering -> Ordering -> Ordering
forall a. Semigroup a => a -> a -> a
<> T_rp -> Domain
rpTxt T_rp
a Domain -> Domain -> Ordering
`compareWireHost` T_rp -> Domain
rpTxt T_rp
b
instance Presentable T_rp where
present :: T_rp -> Builder -> Builder
present T_RP{Domain
rpMbox :: T_rp -> Domain
rpTxt :: T_rp -> Domain
rpMbox :: Domain
rpTxt :: Domain
..} = Domain -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
present Domain
rpMbox (Builder -> Builder) -> (Builder -> Builder) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Domain -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
presentSp Domain
rpTxt
instance KnownRData T_rp where
rdType :: forall b -> (b ~ T_rp) => RRTYPE
rdType _ = RRTYPE
RP
rdEncode :: forall s. T_rp -> SPut s RData
rdEncode T_RP{Domain
rpMbox :: T_rp -> Domain
rpTxt :: T_rp -> Domain
rpMbox :: Domain
rpTxt :: Domain
..} = SizedBuilder -> SPut s RData
forall r s. ErrorContext r => SizedBuilder -> SPut s r
putSizedBuilder (SizedBuilder -> SPut s RData) -> SizedBuilder -> SPut s RData
forall a b. (a -> b) -> a -> b
$
Domain -> SizedBuilder
mbWireForm Domain
rpMbox SizedBuilder -> SizedBuilder -> SizedBuilder
forall a. Semigroup a => a -> a -> a
<> Domain -> SizedBuilder
mbWireForm Domain
rpTxt
cnEncode :: forall s. T_rp -> SPut s RData
cnEncode T_RP{Domain
rpMbox :: T_rp -> Domain
rpTxt :: T_rp -> Domain
rpMbox :: Domain
rpTxt :: Domain
..} =
T_rp -> SPut s RData
forall a s. KnownRData a => a -> SPut s RData
forall s. T_rp -> SPut s RData
rdEncode (T_rp -> SPut s RData) -> T_rp -> SPut s RData
forall a b. (a -> b) -> a -> b
$ Domain -> Domain -> T_rp
T_RP (Domain -> Domain
canonicalise Domain
rpMbox)
(Domain -> Domain
canonicalise Domain
rpTxt)
rdDecode :: forall b ->
(b ~ T_rp) => RDataExtensionVal T_rp -> Int -> SGet RData
rdDecode _ RDataExtensionVal T_rp
_ = SGet RData -> Int -> SGet RData
forall a b. a -> b -> a
const do
rpMbox <- SGet Domain
getDomain
rpTxt <- getDomain
return $ RData T_RP{..}