{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.EC2.Types.TransitGatewayOptions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.EC2.Types.TransitGatewayOptions where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.AutoAcceptSharedAttachmentsValue
import Amazonka.EC2.Types.DefaultRouteTableAssociationValue
import Amazonka.EC2.Types.DefaultRouteTablePropagationValue
import Amazonka.EC2.Types.DnsSupportValue
import Amazonka.EC2.Types.MulticastSupportValue
import Amazonka.EC2.Types.VpnEcmpSupportValue
import qualified Amazonka.Prelude as Prelude

-- | Describes the options for a transit gateway.
--
-- /See:/ 'newTransitGatewayOptions' smart constructor.
data TransitGatewayOptions = TransitGatewayOptions'
  { -- | A private Autonomous System Number (ASN) for the Amazon side of a BGP
    -- session. The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to
    -- 4294967294 for 32-bit ASNs.
    TransitGatewayOptions -> Maybe Integer
amazonSideAsn :: Prelude.Maybe Prelude.Integer,
    -- | The ID of the default association route table.
    TransitGatewayOptions -> Maybe Text
associationDefaultRouteTableId :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether attachment requests are automatically accepted.
    TransitGatewayOptions -> Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments :: Prelude.Maybe AutoAcceptSharedAttachmentsValue,
    -- | Indicates whether resource attachments are automatically associated with
    -- the default association route table.
    TransitGatewayOptions -> Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation :: Prelude.Maybe DefaultRouteTableAssociationValue,
    -- | Indicates whether resource attachments automatically propagate routes to
    -- the default propagation route table.
    TransitGatewayOptions -> Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation :: Prelude.Maybe DefaultRouteTablePropagationValue,
    -- | Indicates whether DNS support is enabled.
    TransitGatewayOptions -> Maybe DnsSupportValue
dnsSupport :: Prelude.Maybe DnsSupportValue,
    -- | Indicates whether multicast is enabled on the transit gateway
    TransitGatewayOptions -> Maybe MulticastSupportValue
multicastSupport :: Prelude.Maybe MulticastSupportValue,
    -- | The ID of the default propagation route table.
    TransitGatewayOptions -> Maybe Text
propagationDefaultRouteTableId :: Prelude.Maybe Prelude.Text,
    -- | The transit gateway CIDR blocks.
    TransitGatewayOptions -> Maybe [Text]
transitGatewayCidrBlocks :: Prelude.Maybe [Prelude.Text],
    -- | Indicates whether Equal Cost Multipath Protocol support is enabled.
    TransitGatewayOptions -> Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Prelude.Maybe VpnEcmpSupportValue
  }
  deriving (TransitGatewayOptions -> TransitGatewayOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TransitGatewayOptions -> TransitGatewayOptions -> Bool
$c/= :: TransitGatewayOptions -> TransitGatewayOptions -> Bool
== :: TransitGatewayOptions -> TransitGatewayOptions -> Bool
$c== :: TransitGatewayOptions -> TransitGatewayOptions -> Bool
Prelude.Eq, ReadPrec [TransitGatewayOptions]
ReadPrec TransitGatewayOptions
Int -> ReadS TransitGatewayOptions
ReadS [TransitGatewayOptions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TransitGatewayOptions]
$creadListPrec :: ReadPrec [TransitGatewayOptions]
readPrec :: ReadPrec TransitGatewayOptions
$creadPrec :: ReadPrec TransitGatewayOptions
readList :: ReadS [TransitGatewayOptions]
$creadList :: ReadS [TransitGatewayOptions]
readsPrec :: Int -> ReadS TransitGatewayOptions
$creadsPrec :: Int -> ReadS TransitGatewayOptions
Prelude.Read, Int -> TransitGatewayOptions -> ShowS
[TransitGatewayOptions] -> ShowS
TransitGatewayOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TransitGatewayOptions] -> ShowS
$cshowList :: [TransitGatewayOptions] -> ShowS
show :: TransitGatewayOptions -> String
$cshow :: TransitGatewayOptions -> String
showsPrec :: Int -> TransitGatewayOptions -> ShowS
$cshowsPrec :: Int -> TransitGatewayOptions -> ShowS
Prelude.Show, forall x. Rep TransitGatewayOptions x -> TransitGatewayOptions
forall x. TransitGatewayOptions -> Rep TransitGatewayOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TransitGatewayOptions x -> TransitGatewayOptions
$cfrom :: forall x. TransitGatewayOptions -> Rep TransitGatewayOptions x
Prelude.Generic)

-- |
-- Create a value of 'TransitGatewayOptions' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'amazonSideAsn', 'transitGatewayOptions_amazonSideAsn' - A private Autonomous System Number (ASN) for the Amazon side of a BGP
-- session. The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to
-- 4294967294 for 32-bit ASNs.
--
-- 'associationDefaultRouteTableId', 'transitGatewayOptions_associationDefaultRouteTableId' - The ID of the default association route table.
--
-- 'autoAcceptSharedAttachments', 'transitGatewayOptions_autoAcceptSharedAttachments' - Indicates whether attachment requests are automatically accepted.
--
-- 'defaultRouteTableAssociation', 'transitGatewayOptions_defaultRouteTableAssociation' - Indicates whether resource attachments are automatically associated with
-- the default association route table.
--
-- 'defaultRouteTablePropagation', 'transitGatewayOptions_defaultRouteTablePropagation' - Indicates whether resource attachments automatically propagate routes to
-- the default propagation route table.
--
-- 'dnsSupport', 'transitGatewayOptions_dnsSupport' - Indicates whether DNS support is enabled.
--
-- 'multicastSupport', 'transitGatewayOptions_multicastSupport' - Indicates whether multicast is enabled on the transit gateway
--
-- 'propagationDefaultRouteTableId', 'transitGatewayOptions_propagationDefaultRouteTableId' - The ID of the default propagation route table.
--
-- 'transitGatewayCidrBlocks', 'transitGatewayOptions_transitGatewayCidrBlocks' - The transit gateway CIDR blocks.
--
-- 'vpnEcmpSupport', 'transitGatewayOptions_vpnEcmpSupport' - Indicates whether Equal Cost Multipath Protocol support is enabled.
newTransitGatewayOptions ::
  TransitGatewayOptions
newTransitGatewayOptions :: TransitGatewayOptions
newTransitGatewayOptions =
  TransitGatewayOptions'
    { $sel:amazonSideAsn:TransitGatewayOptions' :: Maybe Integer
amazonSideAsn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:associationDefaultRouteTableId:TransitGatewayOptions' :: Maybe Text
associationDefaultRouteTableId = forall a. Maybe a
Prelude.Nothing,
      $sel:autoAcceptSharedAttachments:TransitGatewayOptions' :: Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteTableAssociation:TransitGatewayOptions' :: Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteTablePropagation:TransitGatewayOptions' :: Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation = forall a. Maybe a
Prelude.Nothing,
      $sel:dnsSupport:TransitGatewayOptions' :: Maybe DnsSupportValue
dnsSupport = forall a. Maybe a
Prelude.Nothing,
      $sel:multicastSupport:TransitGatewayOptions' :: Maybe MulticastSupportValue
multicastSupport = forall a. Maybe a
Prelude.Nothing,
      $sel:propagationDefaultRouteTableId:TransitGatewayOptions' :: Maybe Text
propagationDefaultRouteTableId = forall a. Maybe a
Prelude.Nothing,
      $sel:transitGatewayCidrBlocks:TransitGatewayOptions' :: Maybe [Text]
transitGatewayCidrBlocks = forall a. Maybe a
Prelude.Nothing,
      $sel:vpnEcmpSupport:TransitGatewayOptions' :: Maybe VpnEcmpSupportValue
vpnEcmpSupport = forall a. Maybe a
Prelude.Nothing
    }

-- | A private Autonomous System Number (ASN) for the Amazon side of a BGP
-- session. The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to
-- 4294967294 for 32-bit ASNs.
transitGatewayOptions_amazonSideAsn :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe Prelude.Integer)
transitGatewayOptions_amazonSideAsn :: Lens' TransitGatewayOptions (Maybe Integer)
transitGatewayOptions_amazonSideAsn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe Integer
amazonSideAsn :: Maybe Integer
$sel:amazonSideAsn:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Integer
amazonSideAsn} -> Maybe Integer
amazonSideAsn) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe Integer
a -> TransitGatewayOptions
s {$sel:amazonSideAsn:TransitGatewayOptions' :: Maybe Integer
amazonSideAsn = Maybe Integer
a} :: TransitGatewayOptions)

-- | The ID of the default association route table.
transitGatewayOptions_associationDefaultRouteTableId :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe Prelude.Text)
transitGatewayOptions_associationDefaultRouteTableId :: Lens' TransitGatewayOptions (Maybe Text)
transitGatewayOptions_associationDefaultRouteTableId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe Text
associationDefaultRouteTableId :: Maybe Text
$sel:associationDefaultRouteTableId:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Text
associationDefaultRouteTableId} -> Maybe Text
associationDefaultRouteTableId) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe Text
a -> TransitGatewayOptions
s {$sel:associationDefaultRouteTableId:TransitGatewayOptions' :: Maybe Text
associationDefaultRouteTableId = Maybe Text
a} :: TransitGatewayOptions)

-- | Indicates whether attachment requests are automatically accepted.
transitGatewayOptions_autoAcceptSharedAttachments :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe AutoAcceptSharedAttachmentsValue)
transitGatewayOptions_autoAcceptSharedAttachments :: Lens'
  TransitGatewayOptions (Maybe AutoAcceptSharedAttachmentsValue)
transitGatewayOptions_autoAcceptSharedAttachments = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments :: Maybe AutoAcceptSharedAttachmentsValue
$sel:autoAcceptSharedAttachments:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments} -> Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe AutoAcceptSharedAttachmentsValue
a -> TransitGatewayOptions
s {$sel:autoAcceptSharedAttachments:TransitGatewayOptions' :: Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments = Maybe AutoAcceptSharedAttachmentsValue
a} :: TransitGatewayOptions)

-- | Indicates whether resource attachments are automatically associated with
-- the default association route table.
transitGatewayOptions_defaultRouteTableAssociation :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe DefaultRouteTableAssociationValue)
transitGatewayOptions_defaultRouteTableAssociation :: Lens'
  TransitGatewayOptions (Maybe DefaultRouteTableAssociationValue)
transitGatewayOptions_defaultRouteTableAssociation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation :: Maybe DefaultRouteTableAssociationValue
$sel:defaultRouteTableAssociation:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation} -> Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe DefaultRouteTableAssociationValue
a -> TransitGatewayOptions
s {$sel:defaultRouteTableAssociation:TransitGatewayOptions' :: Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation = Maybe DefaultRouteTableAssociationValue
a} :: TransitGatewayOptions)

-- | Indicates whether resource attachments automatically propagate routes to
-- the default propagation route table.
transitGatewayOptions_defaultRouteTablePropagation :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe DefaultRouteTablePropagationValue)
transitGatewayOptions_defaultRouteTablePropagation :: Lens'
  TransitGatewayOptions (Maybe DefaultRouteTablePropagationValue)
transitGatewayOptions_defaultRouteTablePropagation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation :: Maybe DefaultRouteTablePropagationValue
$sel:defaultRouteTablePropagation:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation} -> Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe DefaultRouteTablePropagationValue
a -> TransitGatewayOptions
s {$sel:defaultRouteTablePropagation:TransitGatewayOptions' :: Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation = Maybe DefaultRouteTablePropagationValue
a} :: TransitGatewayOptions)

-- | Indicates whether DNS support is enabled.
transitGatewayOptions_dnsSupport :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe DnsSupportValue)
transitGatewayOptions_dnsSupport :: Lens' TransitGatewayOptions (Maybe DnsSupportValue)
transitGatewayOptions_dnsSupport = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe DnsSupportValue
dnsSupport :: Maybe DnsSupportValue
$sel:dnsSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DnsSupportValue
dnsSupport} -> Maybe DnsSupportValue
dnsSupport) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe DnsSupportValue
a -> TransitGatewayOptions
s {$sel:dnsSupport:TransitGatewayOptions' :: Maybe DnsSupportValue
dnsSupport = Maybe DnsSupportValue
a} :: TransitGatewayOptions)

-- | Indicates whether multicast is enabled on the transit gateway
transitGatewayOptions_multicastSupport :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe MulticastSupportValue)
transitGatewayOptions_multicastSupport :: Lens' TransitGatewayOptions (Maybe MulticastSupportValue)
transitGatewayOptions_multicastSupport = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe MulticastSupportValue
multicastSupport :: Maybe MulticastSupportValue
$sel:multicastSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe MulticastSupportValue
multicastSupport} -> Maybe MulticastSupportValue
multicastSupport) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe MulticastSupportValue
a -> TransitGatewayOptions
s {$sel:multicastSupport:TransitGatewayOptions' :: Maybe MulticastSupportValue
multicastSupport = Maybe MulticastSupportValue
a} :: TransitGatewayOptions)

-- | The ID of the default propagation route table.
transitGatewayOptions_propagationDefaultRouteTableId :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe Prelude.Text)
transitGatewayOptions_propagationDefaultRouteTableId :: Lens' TransitGatewayOptions (Maybe Text)
transitGatewayOptions_propagationDefaultRouteTableId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe Text
propagationDefaultRouteTableId :: Maybe Text
$sel:propagationDefaultRouteTableId:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Text
propagationDefaultRouteTableId} -> Maybe Text
propagationDefaultRouteTableId) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe Text
a -> TransitGatewayOptions
s {$sel:propagationDefaultRouteTableId:TransitGatewayOptions' :: Maybe Text
propagationDefaultRouteTableId = Maybe Text
a} :: TransitGatewayOptions)

-- | The transit gateway CIDR blocks.
transitGatewayOptions_transitGatewayCidrBlocks :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe [Prelude.Text])
transitGatewayOptions_transitGatewayCidrBlocks :: Lens' TransitGatewayOptions (Maybe [Text])
transitGatewayOptions_transitGatewayCidrBlocks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe [Text]
transitGatewayCidrBlocks :: Maybe [Text]
$sel:transitGatewayCidrBlocks:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe [Text]
transitGatewayCidrBlocks} -> Maybe [Text]
transitGatewayCidrBlocks) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe [Text]
a -> TransitGatewayOptions
s {$sel:transitGatewayCidrBlocks:TransitGatewayOptions' :: Maybe [Text]
transitGatewayCidrBlocks = Maybe [Text]
a} :: TransitGatewayOptions) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Indicates whether Equal Cost Multipath Protocol support is enabled.
transitGatewayOptions_vpnEcmpSupport :: Lens.Lens' TransitGatewayOptions (Prelude.Maybe VpnEcmpSupportValue)
transitGatewayOptions_vpnEcmpSupport :: Lens' TransitGatewayOptions (Maybe VpnEcmpSupportValue)
transitGatewayOptions_vpnEcmpSupport = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayOptions' {Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
$sel:vpnEcmpSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe VpnEcmpSupportValue
vpnEcmpSupport} -> Maybe VpnEcmpSupportValue
vpnEcmpSupport) (\s :: TransitGatewayOptions
s@TransitGatewayOptions' {} Maybe VpnEcmpSupportValue
a -> TransitGatewayOptions
s {$sel:vpnEcmpSupport:TransitGatewayOptions' :: Maybe VpnEcmpSupportValue
vpnEcmpSupport = Maybe VpnEcmpSupportValue
a} :: TransitGatewayOptions)

instance Data.FromXML TransitGatewayOptions where
  parseXML :: [Node] -> Either String TransitGatewayOptions
parseXML [Node]
x =
    Maybe Integer
-> Maybe Text
-> Maybe AutoAcceptSharedAttachmentsValue
-> Maybe DefaultRouteTableAssociationValue
-> Maybe DefaultRouteTablePropagationValue
-> Maybe DnsSupportValue
-> Maybe MulticastSupportValue
-> Maybe Text
-> Maybe [Text]
-> Maybe VpnEcmpSupportValue
-> TransitGatewayOptions
TransitGatewayOptions'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"amazonSideAsn")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"associationDefaultRouteTableId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"autoAcceptSharedAttachments")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"defaultRouteTableAssociation")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"defaultRouteTablePropagation")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"dnsSupport")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"multicastSupport")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"propagationDefaultRouteTableId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"transitGatewayCidrBlocks"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"vpnEcmpSupport")

instance Prelude.Hashable TransitGatewayOptions where
  hashWithSalt :: Int -> TransitGatewayOptions -> Int
hashWithSalt Int
_salt TransitGatewayOptions' {Maybe Integer
Maybe [Text]
Maybe Text
Maybe AutoAcceptSharedAttachmentsValue
Maybe DefaultRouteTableAssociationValue
Maybe DefaultRouteTablePropagationValue
Maybe DnsSupportValue
Maybe MulticastSupportValue
Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
transitGatewayCidrBlocks :: Maybe [Text]
propagationDefaultRouteTableId :: Maybe Text
multicastSupport :: Maybe MulticastSupportValue
dnsSupport :: Maybe DnsSupportValue
defaultRouteTablePropagation :: Maybe DefaultRouteTablePropagationValue
defaultRouteTableAssociation :: Maybe DefaultRouteTableAssociationValue
autoAcceptSharedAttachments :: Maybe AutoAcceptSharedAttachmentsValue
associationDefaultRouteTableId :: Maybe Text
amazonSideAsn :: Maybe Integer
$sel:vpnEcmpSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe VpnEcmpSupportValue
$sel:transitGatewayCidrBlocks:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe [Text]
$sel:propagationDefaultRouteTableId:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Text
$sel:multicastSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe MulticastSupportValue
$sel:dnsSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DnsSupportValue
$sel:defaultRouteTablePropagation:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DefaultRouteTablePropagationValue
$sel:defaultRouteTableAssociation:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DefaultRouteTableAssociationValue
$sel:autoAcceptSharedAttachments:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe AutoAcceptSharedAttachmentsValue
$sel:associationDefaultRouteTableId:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Text
$sel:amazonSideAsn:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Integer
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
amazonSideAsn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
associationDefaultRouteTableId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DnsSupportValue
dnsSupport
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MulticastSupportValue
multicastSupport
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
propagationDefaultRouteTableId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
transitGatewayCidrBlocks
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VpnEcmpSupportValue
vpnEcmpSupport

instance Prelude.NFData TransitGatewayOptions where
  rnf :: TransitGatewayOptions -> ()
rnf TransitGatewayOptions' {Maybe Integer
Maybe [Text]
Maybe Text
Maybe AutoAcceptSharedAttachmentsValue
Maybe DefaultRouteTableAssociationValue
Maybe DefaultRouteTablePropagationValue
Maybe DnsSupportValue
Maybe MulticastSupportValue
Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
transitGatewayCidrBlocks :: Maybe [Text]
propagationDefaultRouteTableId :: Maybe Text
multicastSupport :: Maybe MulticastSupportValue
dnsSupport :: Maybe DnsSupportValue
defaultRouteTablePropagation :: Maybe DefaultRouteTablePropagationValue
defaultRouteTableAssociation :: Maybe DefaultRouteTableAssociationValue
autoAcceptSharedAttachments :: Maybe AutoAcceptSharedAttachmentsValue
associationDefaultRouteTableId :: Maybe Text
amazonSideAsn :: Maybe Integer
$sel:vpnEcmpSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe VpnEcmpSupportValue
$sel:transitGatewayCidrBlocks:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe [Text]
$sel:propagationDefaultRouteTableId:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Text
$sel:multicastSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe MulticastSupportValue
$sel:dnsSupport:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DnsSupportValue
$sel:defaultRouteTablePropagation:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DefaultRouteTablePropagationValue
$sel:defaultRouteTableAssociation:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe DefaultRouteTableAssociationValue
$sel:autoAcceptSharedAttachments:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe AutoAcceptSharedAttachmentsValue
$sel:associationDefaultRouteTableId:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Text
$sel:amazonSideAsn:TransitGatewayOptions' :: TransitGatewayOptions -> Maybe Integer
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
amazonSideAsn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
associationDefaultRouteTableId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DnsSupportValue
dnsSupport
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MulticastSupportValue
multicastSupport
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
propagationDefaultRouteTableId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
transitGatewayCidrBlocks
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VpnEcmpSupportValue
vpnEcmpSupport