{-# 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.TransitGatewayRequestOptions
-- 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.TransitGatewayRequestOptions 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:/ 'newTransitGatewayRequestOptions' smart constructor.
data TransitGatewayRequestOptions = TransitGatewayRequestOptions'
  { -- | 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. The default is @64512@.
    TransitGatewayRequestOptions -> Maybe Integer
amazonSideAsn :: Prelude.Maybe Prelude.Integer,
    -- | Enable or disable automatic acceptance of attachment requests. Disabled
    -- by default.
    TransitGatewayRequestOptions
-> Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments :: Prelude.Maybe AutoAcceptSharedAttachmentsValue,
    -- | Enable or disable automatic association with the default association
    -- route table. Enabled by default.
    TransitGatewayRequestOptions
-> Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation :: Prelude.Maybe DefaultRouteTableAssociationValue,
    -- | Enable or disable automatic propagation of routes to the default
    -- propagation route table. Enabled by default.
    TransitGatewayRequestOptions
-> Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation :: Prelude.Maybe DefaultRouteTablePropagationValue,
    -- | Enable or disable DNS support. Enabled by default.
    TransitGatewayRequestOptions -> Maybe DnsSupportValue
dnsSupport :: Prelude.Maybe DnsSupportValue,
    -- | Indicates whether multicast is enabled on the transit gateway
    TransitGatewayRequestOptions -> Maybe MulticastSupportValue
multicastSupport :: Prelude.Maybe MulticastSupportValue,
    -- | One or more IPv4 or IPv6 CIDR blocks for the transit gateway. Must be a
    -- size \/24 CIDR block or larger for IPv4, or a size \/64 CIDR block or
    -- larger for IPv6.
    TransitGatewayRequestOptions -> Maybe [Text]
transitGatewayCidrBlocks :: Prelude.Maybe [Prelude.Text],
    -- | Enable or disable Equal Cost Multipath Protocol support. Enabled by
    -- default.
    TransitGatewayRequestOptions -> Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Prelude.Maybe VpnEcmpSupportValue
  }
  deriving (TransitGatewayRequestOptions
-> TransitGatewayRequestOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TransitGatewayRequestOptions
-> TransitGatewayRequestOptions -> Bool
$c/= :: TransitGatewayRequestOptions
-> TransitGatewayRequestOptions -> Bool
== :: TransitGatewayRequestOptions
-> TransitGatewayRequestOptions -> Bool
$c== :: TransitGatewayRequestOptions
-> TransitGatewayRequestOptions -> Bool
Prelude.Eq, ReadPrec [TransitGatewayRequestOptions]
ReadPrec TransitGatewayRequestOptions
Int -> ReadS TransitGatewayRequestOptions
ReadS [TransitGatewayRequestOptions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TransitGatewayRequestOptions]
$creadListPrec :: ReadPrec [TransitGatewayRequestOptions]
readPrec :: ReadPrec TransitGatewayRequestOptions
$creadPrec :: ReadPrec TransitGatewayRequestOptions
readList :: ReadS [TransitGatewayRequestOptions]
$creadList :: ReadS [TransitGatewayRequestOptions]
readsPrec :: Int -> ReadS TransitGatewayRequestOptions
$creadsPrec :: Int -> ReadS TransitGatewayRequestOptions
Prelude.Read, Int -> TransitGatewayRequestOptions -> ShowS
[TransitGatewayRequestOptions] -> ShowS
TransitGatewayRequestOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TransitGatewayRequestOptions] -> ShowS
$cshowList :: [TransitGatewayRequestOptions] -> ShowS
show :: TransitGatewayRequestOptions -> String
$cshow :: TransitGatewayRequestOptions -> String
showsPrec :: Int -> TransitGatewayRequestOptions -> ShowS
$cshowsPrec :: Int -> TransitGatewayRequestOptions -> ShowS
Prelude.Show, forall x.
Rep TransitGatewayRequestOptions x -> TransitGatewayRequestOptions
forall x.
TransitGatewayRequestOptions -> Rep TransitGatewayRequestOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep TransitGatewayRequestOptions x -> TransitGatewayRequestOptions
$cfrom :: forall x.
TransitGatewayRequestOptions -> Rep TransitGatewayRequestOptions x
Prelude.Generic)

-- |
-- Create a value of 'TransitGatewayRequestOptions' 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', 'transitGatewayRequestOptions_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. The default is @64512@.
--
-- 'autoAcceptSharedAttachments', 'transitGatewayRequestOptions_autoAcceptSharedAttachments' - Enable or disable automatic acceptance of attachment requests. Disabled
-- by default.
--
-- 'defaultRouteTableAssociation', 'transitGatewayRequestOptions_defaultRouteTableAssociation' - Enable or disable automatic association with the default association
-- route table. Enabled by default.
--
-- 'defaultRouteTablePropagation', 'transitGatewayRequestOptions_defaultRouteTablePropagation' - Enable or disable automatic propagation of routes to the default
-- propagation route table. Enabled by default.
--
-- 'dnsSupport', 'transitGatewayRequestOptions_dnsSupport' - Enable or disable DNS support. Enabled by default.
--
-- 'multicastSupport', 'transitGatewayRequestOptions_multicastSupport' - Indicates whether multicast is enabled on the transit gateway
--
-- 'transitGatewayCidrBlocks', 'transitGatewayRequestOptions_transitGatewayCidrBlocks' - One or more IPv4 or IPv6 CIDR blocks for the transit gateway. Must be a
-- size \/24 CIDR block or larger for IPv4, or a size \/64 CIDR block or
-- larger for IPv6.
--
-- 'vpnEcmpSupport', 'transitGatewayRequestOptions_vpnEcmpSupport' - Enable or disable Equal Cost Multipath Protocol support. Enabled by
-- default.
newTransitGatewayRequestOptions ::
  TransitGatewayRequestOptions
newTransitGatewayRequestOptions :: TransitGatewayRequestOptions
newTransitGatewayRequestOptions =
  TransitGatewayRequestOptions'
    { $sel:amazonSideAsn:TransitGatewayRequestOptions' :: Maybe Integer
amazonSideAsn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:autoAcceptSharedAttachments:TransitGatewayRequestOptions' :: Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteTableAssociation:TransitGatewayRequestOptions' :: Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation =
        forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteTablePropagation:TransitGatewayRequestOptions' :: Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dnsSupport:TransitGatewayRequestOptions' :: Maybe DnsSupportValue
dnsSupport = forall a. Maybe a
Prelude.Nothing,
      $sel:multicastSupport:TransitGatewayRequestOptions' :: Maybe MulticastSupportValue
multicastSupport = forall a. Maybe a
Prelude.Nothing,
      $sel:transitGatewayCidrBlocks:TransitGatewayRequestOptions' :: Maybe [Text]
transitGatewayCidrBlocks = forall a. Maybe a
Prelude.Nothing,
      $sel:vpnEcmpSupport:TransitGatewayRequestOptions' :: 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. The default is @64512@.
transitGatewayRequestOptions_amazonSideAsn :: Lens.Lens' TransitGatewayRequestOptions (Prelude.Maybe Prelude.Integer)
transitGatewayRequestOptions_amazonSideAsn :: Lens' TransitGatewayRequestOptions (Maybe Integer)
transitGatewayRequestOptions_amazonSideAsn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayRequestOptions' {Maybe Integer
amazonSideAsn :: Maybe Integer
$sel:amazonSideAsn:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe Integer
amazonSideAsn} -> Maybe Integer
amazonSideAsn) (\s :: TransitGatewayRequestOptions
s@TransitGatewayRequestOptions' {} Maybe Integer
a -> TransitGatewayRequestOptions
s {$sel:amazonSideAsn:TransitGatewayRequestOptions' :: Maybe Integer
amazonSideAsn = Maybe Integer
a} :: TransitGatewayRequestOptions)

-- | Enable or disable automatic acceptance of attachment requests. Disabled
-- by default.
transitGatewayRequestOptions_autoAcceptSharedAttachments :: Lens.Lens' TransitGatewayRequestOptions (Prelude.Maybe AutoAcceptSharedAttachmentsValue)
transitGatewayRequestOptions_autoAcceptSharedAttachments :: Lens'
  TransitGatewayRequestOptions
  (Maybe AutoAcceptSharedAttachmentsValue)
transitGatewayRequestOptions_autoAcceptSharedAttachments = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayRequestOptions' {Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments :: Maybe AutoAcceptSharedAttachmentsValue
$sel:autoAcceptSharedAttachments:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments} -> Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments) (\s :: TransitGatewayRequestOptions
s@TransitGatewayRequestOptions' {} Maybe AutoAcceptSharedAttachmentsValue
a -> TransitGatewayRequestOptions
s {$sel:autoAcceptSharedAttachments:TransitGatewayRequestOptions' :: Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments = Maybe AutoAcceptSharedAttachmentsValue
a} :: TransitGatewayRequestOptions)

-- | Enable or disable automatic association with the default association
-- route table. Enabled by default.
transitGatewayRequestOptions_defaultRouteTableAssociation :: Lens.Lens' TransitGatewayRequestOptions (Prelude.Maybe DefaultRouteTableAssociationValue)
transitGatewayRequestOptions_defaultRouteTableAssociation :: Lens'
  TransitGatewayRequestOptions
  (Maybe DefaultRouteTableAssociationValue)
transitGatewayRequestOptions_defaultRouteTableAssociation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayRequestOptions' {Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation :: Maybe DefaultRouteTableAssociationValue
$sel:defaultRouteTableAssociation:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation} -> Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation) (\s :: TransitGatewayRequestOptions
s@TransitGatewayRequestOptions' {} Maybe DefaultRouteTableAssociationValue
a -> TransitGatewayRequestOptions
s {$sel:defaultRouteTableAssociation:TransitGatewayRequestOptions' :: Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation = Maybe DefaultRouteTableAssociationValue
a} :: TransitGatewayRequestOptions)

-- | Enable or disable automatic propagation of routes to the default
-- propagation route table. Enabled by default.
transitGatewayRequestOptions_defaultRouteTablePropagation :: Lens.Lens' TransitGatewayRequestOptions (Prelude.Maybe DefaultRouteTablePropagationValue)
transitGatewayRequestOptions_defaultRouteTablePropagation :: Lens'
  TransitGatewayRequestOptions
  (Maybe DefaultRouteTablePropagationValue)
transitGatewayRequestOptions_defaultRouteTablePropagation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayRequestOptions' {Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation :: Maybe DefaultRouteTablePropagationValue
$sel:defaultRouteTablePropagation:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation} -> Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation) (\s :: TransitGatewayRequestOptions
s@TransitGatewayRequestOptions' {} Maybe DefaultRouteTablePropagationValue
a -> TransitGatewayRequestOptions
s {$sel:defaultRouteTablePropagation:TransitGatewayRequestOptions' :: Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation = Maybe DefaultRouteTablePropagationValue
a} :: TransitGatewayRequestOptions)

-- | Enable or disable DNS support. Enabled by default.
transitGatewayRequestOptions_dnsSupport :: Lens.Lens' TransitGatewayRequestOptions (Prelude.Maybe DnsSupportValue)
transitGatewayRequestOptions_dnsSupport :: Lens' TransitGatewayRequestOptions (Maybe DnsSupportValue)
transitGatewayRequestOptions_dnsSupport = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayRequestOptions' {Maybe DnsSupportValue
dnsSupport :: Maybe DnsSupportValue
$sel:dnsSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe DnsSupportValue
dnsSupport} -> Maybe DnsSupportValue
dnsSupport) (\s :: TransitGatewayRequestOptions
s@TransitGatewayRequestOptions' {} Maybe DnsSupportValue
a -> TransitGatewayRequestOptions
s {$sel:dnsSupport:TransitGatewayRequestOptions' :: Maybe DnsSupportValue
dnsSupport = Maybe DnsSupportValue
a} :: TransitGatewayRequestOptions)

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

-- | One or more IPv4 or IPv6 CIDR blocks for the transit gateway. Must be a
-- size \/24 CIDR block or larger for IPv4, or a size \/64 CIDR block or
-- larger for IPv6.
transitGatewayRequestOptions_transitGatewayCidrBlocks :: Lens.Lens' TransitGatewayRequestOptions (Prelude.Maybe [Prelude.Text])
transitGatewayRequestOptions_transitGatewayCidrBlocks :: Lens' TransitGatewayRequestOptions (Maybe [Text])
transitGatewayRequestOptions_transitGatewayCidrBlocks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayRequestOptions' {Maybe [Text]
transitGatewayCidrBlocks :: Maybe [Text]
$sel:transitGatewayCidrBlocks:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe [Text]
transitGatewayCidrBlocks} -> Maybe [Text]
transitGatewayCidrBlocks) (\s :: TransitGatewayRequestOptions
s@TransitGatewayRequestOptions' {} Maybe [Text]
a -> TransitGatewayRequestOptions
s {$sel:transitGatewayCidrBlocks:TransitGatewayRequestOptions' :: Maybe [Text]
transitGatewayCidrBlocks = Maybe [Text]
a} :: TransitGatewayRequestOptions) 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

-- | Enable or disable Equal Cost Multipath Protocol support. Enabled by
-- default.
transitGatewayRequestOptions_vpnEcmpSupport :: Lens.Lens' TransitGatewayRequestOptions (Prelude.Maybe VpnEcmpSupportValue)
transitGatewayRequestOptions_vpnEcmpSupport :: Lens' TransitGatewayRequestOptions (Maybe VpnEcmpSupportValue)
transitGatewayRequestOptions_vpnEcmpSupport = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransitGatewayRequestOptions' {Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
$sel:vpnEcmpSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe VpnEcmpSupportValue
vpnEcmpSupport} -> Maybe VpnEcmpSupportValue
vpnEcmpSupport) (\s :: TransitGatewayRequestOptions
s@TransitGatewayRequestOptions' {} Maybe VpnEcmpSupportValue
a -> TransitGatewayRequestOptions
s {$sel:vpnEcmpSupport:TransitGatewayRequestOptions' :: Maybe VpnEcmpSupportValue
vpnEcmpSupport = Maybe VpnEcmpSupportValue
a} :: TransitGatewayRequestOptions)

instance
  Prelude.Hashable
    TransitGatewayRequestOptions
  where
  hashWithSalt :: Int -> TransitGatewayRequestOptions -> Int
hashWithSalt Int
_salt TransitGatewayRequestOptions' {Maybe Integer
Maybe [Text]
Maybe AutoAcceptSharedAttachmentsValue
Maybe DefaultRouteTableAssociationValue
Maybe DefaultRouteTablePropagationValue
Maybe DnsSupportValue
Maybe MulticastSupportValue
Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
transitGatewayCidrBlocks :: Maybe [Text]
multicastSupport :: Maybe MulticastSupportValue
dnsSupport :: Maybe DnsSupportValue
defaultRouteTablePropagation :: Maybe DefaultRouteTablePropagationValue
defaultRouteTableAssociation :: Maybe DefaultRouteTableAssociationValue
autoAcceptSharedAttachments :: Maybe AutoAcceptSharedAttachmentsValue
amazonSideAsn :: Maybe Integer
$sel:vpnEcmpSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe VpnEcmpSupportValue
$sel:transitGatewayCidrBlocks:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe [Text]
$sel:multicastSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe MulticastSupportValue
$sel:dnsSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe DnsSupportValue
$sel:defaultRouteTablePropagation:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe DefaultRouteTablePropagationValue
$sel:defaultRouteTableAssociation:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe DefaultRouteTableAssociationValue
$sel:autoAcceptSharedAttachments:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe AutoAcceptSharedAttachmentsValue
$sel:amazonSideAsn:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> 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 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]
transitGatewayCidrBlocks
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VpnEcmpSupportValue
vpnEcmpSupport

instance Prelude.NFData TransitGatewayRequestOptions where
  rnf :: TransitGatewayRequestOptions -> ()
rnf TransitGatewayRequestOptions' {Maybe Integer
Maybe [Text]
Maybe AutoAcceptSharedAttachmentsValue
Maybe DefaultRouteTableAssociationValue
Maybe DefaultRouteTablePropagationValue
Maybe DnsSupportValue
Maybe MulticastSupportValue
Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
transitGatewayCidrBlocks :: Maybe [Text]
multicastSupport :: Maybe MulticastSupportValue
dnsSupport :: Maybe DnsSupportValue
defaultRouteTablePropagation :: Maybe DefaultRouteTablePropagationValue
defaultRouteTableAssociation :: Maybe DefaultRouteTableAssociationValue
autoAcceptSharedAttachments :: Maybe AutoAcceptSharedAttachmentsValue
amazonSideAsn :: Maybe Integer
$sel:vpnEcmpSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe VpnEcmpSupportValue
$sel:transitGatewayCidrBlocks:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe [Text]
$sel:multicastSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe MulticastSupportValue
$sel:dnsSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe DnsSupportValue
$sel:defaultRouteTablePropagation:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe DefaultRouteTablePropagationValue
$sel:defaultRouteTableAssociation:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe DefaultRouteTableAssociationValue
$sel:autoAcceptSharedAttachments:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe AutoAcceptSharedAttachmentsValue
$sel:amazonSideAsn:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> 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 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]
transitGatewayCidrBlocks
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VpnEcmpSupportValue
vpnEcmpSupport

instance Data.ToQuery TransitGatewayRequestOptions where
  toQuery :: TransitGatewayRequestOptions -> QueryString
toQuery TransitGatewayRequestOptions' {Maybe Integer
Maybe [Text]
Maybe AutoAcceptSharedAttachmentsValue
Maybe DefaultRouteTableAssociationValue
Maybe DefaultRouteTablePropagationValue
Maybe DnsSupportValue
Maybe MulticastSupportValue
Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
transitGatewayCidrBlocks :: Maybe [Text]
multicastSupport :: Maybe MulticastSupportValue
dnsSupport :: Maybe DnsSupportValue
defaultRouteTablePropagation :: Maybe DefaultRouteTablePropagationValue
defaultRouteTableAssociation :: Maybe DefaultRouteTableAssociationValue
autoAcceptSharedAttachments :: Maybe AutoAcceptSharedAttachmentsValue
amazonSideAsn :: Maybe Integer
$sel:vpnEcmpSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe VpnEcmpSupportValue
$sel:transitGatewayCidrBlocks:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe [Text]
$sel:multicastSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe MulticastSupportValue
$sel:dnsSupport:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe DnsSupportValue
$sel:defaultRouteTablePropagation:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe DefaultRouteTablePropagationValue
$sel:defaultRouteTableAssociation:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe DefaultRouteTableAssociationValue
$sel:autoAcceptSharedAttachments:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions
-> Maybe AutoAcceptSharedAttachmentsValue
$sel:amazonSideAsn:TransitGatewayRequestOptions' :: TransitGatewayRequestOptions -> Maybe Integer
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"AmazonSideAsn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Integer
amazonSideAsn,
        ByteString
"AutoAcceptSharedAttachments"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments,
        ByteString
"DefaultRouteTableAssociation"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation,
        ByteString
"DefaultRouteTablePropagation"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation,
        ByteString
"DnsSupport" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DnsSupportValue
dnsSupport,
        ByteString
"MulticastSupport" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe MulticastSupportValue
multicastSupport,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"TransitGatewayCidrBlocks"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
transitGatewayCidrBlocks
          ),
        ByteString
"VpnEcmpSupport" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe VpnEcmpSupportValue
vpnEcmpSupport
      ]