{-# 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.ModifyTransitGatewayOptions
-- 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.ModifyTransitGatewayOptions 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.VpnEcmpSupportValue
import qualified Amazonka.Prelude as Prelude

-- | The transit gateway options.
--
-- /See:/ 'newModifyTransitGatewayOptions' smart constructor.
data ModifyTransitGatewayOptions = ModifyTransitGatewayOptions'
  { -- | Adds 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.
    ModifyTransitGatewayOptions -> Maybe [Text]
addTransitGatewayCidrBlocks :: Prelude.Maybe [Prelude.Text],
    -- | 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 modify ASN operation is not allowed on a transit gateway with active
    -- BGP sessions. You must first delete all transit gateway attachments that
    -- have BGP configured prior to modifying the ASN on the transit gateway.
    ModifyTransitGatewayOptions -> Maybe Integer
amazonSideAsn :: Prelude.Maybe Prelude.Integer,
    -- | The ID of the default association route table.
    ModifyTransitGatewayOptions -> Maybe Text
associationDefaultRouteTableId :: Prelude.Maybe Prelude.Text,
    -- | Enable or disable automatic acceptance of attachment requests.
    ModifyTransitGatewayOptions
-> Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments :: Prelude.Maybe AutoAcceptSharedAttachmentsValue,
    -- | Enable or disable automatic association with the default association
    -- route table.
    ModifyTransitGatewayOptions
-> Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation :: Prelude.Maybe DefaultRouteTableAssociationValue,
    -- | Enable or disable automatic propagation of routes to the default
    -- propagation route table.
    ModifyTransitGatewayOptions
-> Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation :: Prelude.Maybe DefaultRouteTablePropagationValue,
    -- | Enable or disable DNS support.
    ModifyTransitGatewayOptions -> Maybe DnsSupportValue
dnsSupport :: Prelude.Maybe DnsSupportValue,
    -- | The ID of the default propagation route table.
    ModifyTransitGatewayOptions -> Maybe Text
propagationDefaultRouteTableId :: Prelude.Maybe Prelude.Text,
    -- | Removes CIDR blocks for the transit gateway.
    ModifyTransitGatewayOptions -> Maybe [Text]
removeTransitGatewayCidrBlocks :: Prelude.Maybe [Prelude.Text],
    -- | Enable or disable Equal Cost Multipath Protocol support.
    ModifyTransitGatewayOptions -> Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Prelude.Maybe VpnEcmpSupportValue
  }
  deriving (ModifyTransitGatewayOptions -> ModifyTransitGatewayOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyTransitGatewayOptions -> ModifyTransitGatewayOptions -> Bool
$c/= :: ModifyTransitGatewayOptions -> ModifyTransitGatewayOptions -> Bool
== :: ModifyTransitGatewayOptions -> ModifyTransitGatewayOptions -> Bool
$c== :: ModifyTransitGatewayOptions -> ModifyTransitGatewayOptions -> Bool
Prelude.Eq, ReadPrec [ModifyTransitGatewayOptions]
ReadPrec ModifyTransitGatewayOptions
Int -> ReadS ModifyTransitGatewayOptions
ReadS [ModifyTransitGatewayOptions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyTransitGatewayOptions]
$creadListPrec :: ReadPrec [ModifyTransitGatewayOptions]
readPrec :: ReadPrec ModifyTransitGatewayOptions
$creadPrec :: ReadPrec ModifyTransitGatewayOptions
readList :: ReadS [ModifyTransitGatewayOptions]
$creadList :: ReadS [ModifyTransitGatewayOptions]
readsPrec :: Int -> ReadS ModifyTransitGatewayOptions
$creadsPrec :: Int -> ReadS ModifyTransitGatewayOptions
Prelude.Read, Int -> ModifyTransitGatewayOptions -> ShowS
[ModifyTransitGatewayOptions] -> ShowS
ModifyTransitGatewayOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyTransitGatewayOptions] -> ShowS
$cshowList :: [ModifyTransitGatewayOptions] -> ShowS
show :: ModifyTransitGatewayOptions -> String
$cshow :: ModifyTransitGatewayOptions -> String
showsPrec :: Int -> ModifyTransitGatewayOptions -> ShowS
$cshowsPrec :: Int -> ModifyTransitGatewayOptions -> ShowS
Prelude.Show, forall x.
Rep ModifyTransitGatewayOptions x -> ModifyTransitGatewayOptions
forall x.
ModifyTransitGatewayOptions -> Rep ModifyTransitGatewayOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyTransitGatewayOptions x -> ModifyTransitGatewayOptions
$cfrom :: forall x.
ModifyTransitGatewayOptions -> Rep ModifyTransitGatewayOptions x
Prelude.Generic)

-- |
-- Create a value of 'ModifyTransitGatewayOptions' 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:
--
-- 'addTransitGatewayCidrBlocks', 'modifyTransitGatewayOptions_addTransitGatewayCidrBlocks' - Adds 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.
--
-- 'amazonSideAsn', 'modifyTransitGatewayOptions_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 modify ASN operation is not allowed on a transit gateway with active
-- BGP sessions. You must first delete all transit gateway attachments that
-- have BGP configured prior to modifying the ASN on the transit gateway.
--
-- 'associationDefaultRouteTableId', 'modifyTransitGatewayOptions_associationDefaultRouteTableId' - The ID of the default association route table.
--
-- 'autoAcceptSharedAttachments', 'modifyTransitGatewayOptions_autoAcceptSharedAttachments' - Enable or disable automatic acceptance of attachment requests.
--
-- 'defaultRouteTableAssociation', 'modifyTransitGatewayOptions_defaultRouteTableAssociation' - Enable or disable automatic association with the default association
-- route table.
--
-- 'defaultRouteTablePropagation', 'modifyTransitGatewayOptions_defaultRouteTablePropagation' - Enable or disable automatic propagation of routes to the default
-- propagation route table.
--
-- 'dnsSupport', 'modifyTransitGatewayOptions_dnsSupport' - Enable or disable DNS support.
--
-- 'propagationDefaultRouteTableId', 'modifyTransitGatewayOptions_propagationDefaultRouteTableId' - The ID of the default propagation route table.
--
-- 'removeTransitGatewayCidrBlocks', 'modifyTransitGatewayOptions_removeTransitGatewayCidrBlocks' - Removes CIDR blocks for the transit gateway.
--
-- 'vpnEcmpSupport', 'modifyTransitGatewayOptions_vpnEcmpSupport' - Enable or disable Equal Cost Multipath Protocol support.
newModifyTransitGatewayOptions ::
  ModifyTransitGatewayOptions
newModifyTransitGatewayOptions :: ModifyTransitGatewayOptions
newModifyTransitGatewayOptions =
  ModifyTransitGatewayOptions'
    { $sel:addTransitGatewayCidrBlocks:ModifyTransitGatewayOptions' :: Maybe [Text]
addTransitGatewayCidrBlocks =
        forall a. Maybe a
Prelude.Nothing,
      $sel:amazonSideAsn:ModifyTransitGatewayOptions' :: Maybe Integer
amazonSideAsn = forall a. Maybe a
Prelude.Nothing,
      $sel:associationDefaultRouteTableId:ModifyTransitGatewayOptions' :: Maybe Text
associationDefaultRouteTableId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:autoAcceptSharedAttachments:ModifyTransitGatewayOptions' :: Maybe AutoAcceptSharedAttachmentsValue
autoAcceptSharedAttachments = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteTableAssociation:ModifyTransitGatewayOptions' :: Maybe DefaultRouteTableAssociationValue
defaultRouteTableAssociation = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRouteTablePropagation:ModifyTransitGatewayOptions' :: Maybe DefaultRouteTablePropagationValue
defaultRouteTablePropagation = forall a. Maybe a
Prelude.Nothing,
      $sel:dnsSupport:ModifyTransitGatewayOptions' :: Maybe DnsSupportValue
dnsSupport = forall a. Maybe a
Prelude.Nothing,
      $sel:propagationDefaultRouteTableId:ModifyTransitGatewayOptions' :: Maybe Text
propagationDefaultRouteTableId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:removeTransitGatewayCidrBlocks:ModifyTransitGatewayOptions' :: Maybe [Text]
removeTransitGatewayCidrBlocks =
        forall a. Maybe a
Prelude.Nothing,
      $sel:vpnEcmpSupport:ModifyTransitGatewayOptions' :: Maybe VpnEcmpSupportValue
vpnEcmpSupport = forall a. Maybe a
Prelude.Nothing
    }

-- | Adds 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.
modifyTransitGatewayOptions_addTransitGatewayCidrBlocks :: Lens.Lens' ModifyTransitGatewayOptions (Prelude.Maybe [Prelude.Text])
modifyTransitGatewayOptions_addTransitGatewayCidrBlocks :: Lens' ModifyTransitGatewayOptions (Maybe [Text])
modifyTransitGatewayOptions_addTransitGatewayCidrBlocks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyTransitGatewayOptions' {Maybe [Text]
addTransitGatewayCidrBlocks :: Maybe [Text]
$sel:addTransitGatewayCidrBlocks:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe [Text]
addTransitGatewayCidrBlocks} -> Maybe [Text]
addTransitGatewayCidrBlocks) (\s :: ModifyTransitGatewayOptions
s@ModifyTransitGatewayOptions' {} Maybe [Text]
a -> ModifyTransitGatewayOptions
s {$sel:addTransitGatewayCidrBlocks:ModifyTransitGatewayOptions' :: Maybe [Text]
addTransitGatewayCidrBlocks = Maybe [Text]
a} :: ModifyTransitGatewayOptions) 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

-- | 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 modify ASN operation is not allowed on a transit gateway with active
-- BGP sessions. You must first delete all transit gateway attachments that
-- have BGP configured prior to modifying the ASN on the transit gateway.
modifyTransitGatewayOptions_amazonSideAsn :: Lens.Lens' ModifyTransitGatewayOptions (Prelude.Maybe Prelude.Integer)
modifyTransitGatewayOptions_amazonSideAsn :: Lens' ModifyTransitGatewayOptions (Maybe Integer)
modifyTransitGatewayOptions_amazonSideAsn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyTransitGatewayOptions' {Maybe Integer
amazonSideAsn :: Maybe Integer
$sel:amazonSideAsn:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe Integer
amazonSideAsn} -> Maybe Integer
amazonSideAsn) (\s :: ModifyTransitGatewayOptions
s@ModifyTransitGatewayOptions' {} Maybe Integer
a -> ModifyTransitGatewayOptions
s {$sel:amazonSideAsn:ModifyTransitGatewayOptions' :: Maybe Integer
amazonSideAsn = Maybe Integer
a} :: ModifyTransitGatewayOptions)

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

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

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

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

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

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

-- | Removes CIDR blocks for the transit gateway.
modifyTransitGatewayOptions_removeTransitGatewayCidrBlocks :: Lens.Lens' ModifyTransitGatewayOptions (Prelude.Maybe [Prelude.Text])
modifyTransitGatewayOptions_removeTransitGatewayCidrBlocks :: Lens' ModifyTransitGatewayOptions (Maybe [Text])
modifyTransitGatewayOptions_removeTransitGatewayCidrBlocks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyTransitGatewayOptions' {Maybe [Text]
removeTransitGatewayCidrBlocks :: Maybe [Text]
$sel:removeTransitGatewayCidrBlocks:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe [Text]
removeTransitGatewayCidrBlocks} -> Maybe [Text]
removeTransitGatewayCidrBlocks) (\s :: ModifyTransitGatewayOptions
s@ModifyTransitGatewayOptions' {} Maybe [Text]
a -> ModifyTransitGatewayOptions
s {$sel:removeTransitGatewayCidrBlocks:ModifyTransitGatewayOptions' :: Maybe [Text]
removeTransitGatewayCidrBlocks = Maybe [Text]
a} :: ModifyTransitGatewayOptions) 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.
modifyTransitGatewayOptions_vpnEcmpSupport :: Lens.Lens' ModifyTransitGatewayOptions (Prelude.Maybe VpnEcmpSupportValue)
modifyTransitGatewayOptions_vpnEcmpSupport :: Lens' ModifyTransitGatewayOptions (Maybe VpnEcmpSupportValue)
modifyTransitGatewayOptions_vpnEcmpSupport = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyTransitGatewayOptions' {Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
$sel:vpnEcmpSupport:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe VpnEcmpSupportValue
vpnEcmpSupport} -> Maybe VpnEcmpSupportValue
vpnEcmpSupport) (\s :: ModifyTransitGatewayOptions
s@ModifyTransitGatewayOptions' {} Maybe VpnEcmpSupportValue
a -> ModifyTransitGatewayOptions
s {$sel:vpnEcmpSupport:ModifyTransitGatewayOptions' :: Maybe VpnEcmpSupportValue
vpnEcmpSupport = Maybe VpnEcmpSupportValue
a} :: ModifyTransitGatewayOptions)

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

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

instance Data.ToQuery ModifyTransitGatewayOptions where
  toQuery :: ModifyTransitGatewayOptions -> QueryString
toQuery ModifyTransitGatewayOptions' {Maybe Integer
Maybe [Text]
Maybe Text
Maybe AutoAcceptSharedAttachmentsValue
Maybe DefaultRouteTableAssociationValue
Maybe DefaultRouteTablePropagationValue
Maybe DnsSupportValue
Maybe VpnEcmpSupportValue
vpnEcmpSupport :: Maybe VpnEcmpSupportValue
removeTransitGatewayCidrBlocks :: Maybe [Text]
propagationDefaultRouteTableId :: Maybe Text
dnsSupport :: Maybe DnsSupportValue
defaultRouteTablePropagation :: Maybe DefaultRouteTablePropagationValue
defaultRouteTableAssociation :: Maybe DefaultRouteTableAssociationValue
autoAcceptSharedAttachments :: Maybe AutoAcceptSharedAttachmentsValue
associationDefaultRouteTableId :: Maybe Text
amazonSideAsn :: Maybe Integer
addTransitGatewayCidrBlocks :: Maybe [Text]
$sel:vpnEcmpSupport:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe VpnEcmpSupportValue
$sel:removeTransitGatewayCidrBlocks:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe [Text]
$sel:propagationDefaultRouteTableId:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe Text
$sel:dnsSupport:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe DnsSupportValue
$sel:defaultRouteTablePropagation:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions
-> Maybe DefaultRouteTablePropagationValue
$sel:defaultRouteTableAssociation:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions
-> Maybe DefaultRouteTableAssociationValue
$sel:autoAcceptSharedAttachments:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions
-> Maybe AutoAcceptSharedAttachmentsValue
$sel:associationDefaultRouteTableId:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe Text
$sel:amazonSideAsn:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe Integer
$sel:addTransitGatewayCidrBlocks:ModifyTransitGatewayOptions' :: ModifyTransitGatewayOptions -> Maybe [Text]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"AddTransitGatewayCidrBlocks"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
addTransitGatewayCidrBlocks
          ),
        ByteString
"AmazonSideAsn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Integer
amazonSideAsn,
        ByteString
"AssociationDefaultRouteTableId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
associationDefaultRouteTableId,
        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
"PropagationDefaultRouteTableId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
propagationDefaultRouteTableId,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"RemoveTransitGatewayCidrBlocks"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
removeTransitGatewayCidrBlocks
          ),
        ByteString
"VpnEcmpSupport" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe VpnEcmpSupportValue
vpnEcmpSupport
      ]