{-# 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.Lightsail.Types.PortInfo -- Copyright : (c) 2013-2021 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.Lightsail.Types.PortInfo where import qualified Amazonka.Core as Core import qualified Amazonka.Lens as Lens import Amazonka.Lightsail.Types.NetworkProtocol import qualified Amazonka.Prelude as Prelude -- | Describes ports to open on an instance, the IP addresses allowed to -- connect to the instance through the ports, and the protocol. -- -- /See:/ 'newPortInfo' smart constructor. data PortInfo = PortInfo' { -- | The first port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP type for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages Control Messages> -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP type for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6 Internet Control Message Protocol for IPv6>. PortInfo -> Maybe Int fromPort :: Prelude.Maybe Prelude.Int, -- | The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- -- The @ipv6Cidrs@ parameter lists the IPv6 addresses that are allowed to -- connect to an instance. -- -- Examples: -- -- - To allow the IP address @192.0.2.44@, specify @192.0.2.44@ or -- @192.0.2.44\/32@. -- -- - To allow the IP addresses @192.0.2.0@ to @192.0.2.255@, specify -- @192.0.2.0\/24@. -- -- For more information about CIDR block notation, see -- <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation Classless Inter-Domain Routing> -- on /Wikipedia/. PortInfo -> Maybe [Text] cidrs :: Prelude.Maybe [Prelude.Text], -- | The IP protocol name. -- -- The name can be one of the following: -- -- - @tcp@ - Transmission Control Protocol (TCP) provides reliable, -- ordered, and error-checked delivery of streamed data between -- applications running on hosts communicating by an IP network. If you -- have an application that doesn\'t require reliable data stream -- service, use UDP instead. -- -- - @all@ - All transport layer protocol types. For more general -- information, see -- <https://en.wikipedia.org/wiki/Transport_layer Transport layer> on -- /Wikipedia/. -- -- - @udp@ - With User Datagram Protocol (UDP), computer applications can -- send messages (or datagrams) to other hosts on an Internet Protocol -- (IP) network. Prior communications are not required to set up -- transmission channels or data paths. Applications that don\'t -- require reliable data stream service can use UDP, which provides a -- connectionless datagram service that emphasizes reduced latency over -- reliability. If you do require reliable data stream service, use TCP -- instead. -- -- - @icmp@ - Internet Control Message Protocol (ICMP) is used to send -- error messages and operational information indicating success or -- failure when communicating with an instance. For example, an error -- is indicated when an instance could not be reached. When you specify -- @icmp@ as the @protocol@, you must specify the ICMP type using the -- @fromPort@ parameter, and ICMP code using the @toPort@ parameter. PortInfo -> Maybe NetworkProtocol protocol :: Prelude.Maybe NetworkProtocol, -- | An alias that defines access for a preconfigured range of IP addresses. -- -- The only alias currently supported is @lightsail-connect@, which allows -- IP addresses of the browser-based RDP\/SSH client in the Lightsail -- console to connect to your instance. PortInfo -> Maybe [Text] cidrListAliases :: Prelude.Maybe [Prelude.Text], -- | The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- Only devices with an IPv6 address can connect to an instance through -- IPv6; otherwise, IPv4 should be used. -- -- The @cidrs@ parameter lists the IPv4 addresses that are allowed to -- connect to an instance. -- -- For more information about CIDR block notation, see -- <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation Classless Inter-Domain Routing> -- on /Wikipedia/. PortInfo -> Maybe [Text] ipv6Cidrs :: Prelude.Maybe [Prelude.Text], -- | The last port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP code for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages Control Messages> -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP code for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6 Internet Control Message Protocol for IPv6>. PortInfo -> Maybe Int toPort :: Prelude.Maybe Prelude.Int } deriving (PortInfo -> PortInfo -> Bool (PortInfo -> PortInfo -> Bool) -> (PortInfo -> PortInfo -> Bool) -> Eq PortInfo forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PortInfo -> PortInfo -> Bool $c/= :: PortInfo -> PortInfo -> Bool == :: PortInfo -> PortInfo -> Bool $c== :: PortInfo -> PortInfo -> Bool Prelude.Eq, ReadPrec [PortInfo] ReadPrec PortInfo Int -> ReadS PortInfo ReadS [PortInfo] (Int -> ReadS PortInfo) -> ReadS [PortInfo] -> ReadPrec PortInfo -> ReadPrec [PortInfo] -> Read PortInfo forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [PortInfo] $creadListPrec :: ReadPrec [PortInfo] readPrec :: ReadPrec PortInfo $creadPrec :: ReadPrec PortInfo readList :: ReadS [PortInfo] $creadList :: ReadS [PortInfo] readsPrec :: Int -> ReadS PortInfo $creadsPrec :: Int -> ReadS PortInfo Prelude.Read, Int -> PortInfo -> ShowS [PortInfo] -> ShowS PortInfo -> String (Int -> PortInfo -> ShowS) -> (PortInfo -> String) -> ([PortInfo] -> ShowS) -> Show PortInfo forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [PortInfo] -> ShowS $cshowList :: [PortInfo] -> ShowS show :: PortInfo -> String $cshow :: PortInfo -> String showsPrec :: Int -> PortInfo -> ShowS $cshowsPrec :: Int -> PortInfo -> ShowS Prelude.Show, (forall x. PortInfo -> Rep PortInfo x) -> (forall x. Rep PortInfo x -> PortInfo) -> Generic PortInfo forall x. Rep PortInfo x -> PortInfo forall x. PortInfo -> Rep PortInfo x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep PortInfo x -> PortInfo $cfrom :: forall x. PortInfo -> Rep PortInfo x Prelude.Generic) -- | -- Create a value of 'PortInfo' 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: -- -- 'fromPort', 'portInfo_fromPort' - The first port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP type for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages Control Messages> -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP type for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6 Internet Control Message Protocol for IPv6>. -- -- 'cidrs', 'portInfo_cidrs' - The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- -- The @ipv6Cidrs@ parameter lists the IPv6 addresses that are allowed to -- connect to an instance. -- -- Examples: -- -- - To allow the IP address @192.0.2.44@, specify @192.0.2.44@ or -- @192.0.2.44\/32@. -- -- - To allow the IP addresses @192.0.2.0@ to @192.0.2.255@, specify -- @192.0.2.0\/24@. -- -- For more information about CIDR block notation, see -- <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation Classless Inter-Domain Routing> -- on /Wikipedia/. -- -- 'protocol', 'portInfo_protocol' - The IP protocol name. -- -- The name can be one of the following: -- -- - @tcp@ - Transmission Control Protocol (TCP) provides reliable, -- ordered, and error-checked delivery of streamed data between -- applications running on hosts communicating by an IP network. If you -- have an application that doesn\'t require reliable data stream -- service, use UDP instead. -- -- - @all@ - All transport layer protocol types. For more general -- information, see -- <https://en.wikipedia.org/wiki/Transport_layer Transport layer> on -- /Wikipedia/. -- -- - @udp@ - With User Datagram Protocol (UDP), computer applications can -- send messages (or datagrams) to other hosts on an Internet Protocol -- (IP) network. Prior communications are not required to set up -- transmission channels or data paths. Applications that don\'t -- require reliable data stream service can use UDP, which provides a -- connectionless datagram service that emphasizes reduced latency over -- reliability. If you do require reliable data stream service, use TCP -- instead. -- -- - @icmp@ - Internet Control Message Protocol (ICMP) is used to send -- error messages and operational information indicating success or -- failure when communicating with an instance. For example, an error -- is indicated when an instance could not be reached. When you specify -- @icmp@ as the @protocol@, you must specify the ICMP type using the -- @fromPort@ parameter, and ICMP code using the @toPort@ parameter. -- -- 'cidrListAliases', 'portInfo_cidrListAliases' - An alias that defines access for a preconfigured range of IP addresses. -- -- The only alias currently supported is @lightsail-connect@, which allows -- IP addresses of the browser-based RDP\/SSH client in the Lightsail -- console to connect to your instance. -- -- 'ipv6Cidrs', 'portInfo_ipv6Cidrs' - The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- Only devices with an IPv6 address can connect to an instance through -- IPv6; otherwise, IPv4 should be used. -- -- The @cidrs@ parameter lists the IPv4 addresses that are allowed to -- connect to an instance. -- -- For more information about CIDR block notation, see -- <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation Classless Inter-Domain Routing> -- on /Wikipedia/. -- -- 'toPort', 'portInfo_toPort' - The last port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP code for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages Control Messages> -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP code for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6 Internet Control Message Protocol for IPv6>. newPortInfo :: PortInfo newPortInfo :: PortInfo newPortInfo = PortInfo' :: Maybe Int -> Maybe [Text] -> Maybe NetworkProtocol -> Maybe [Text] -> Maybe [Text] -> Maybe Int -> PortInfo PortInfo' { $sel:fromPort:PortInfo' :: Maybe Int fromPort = Maybe Int forall a. Maybe a Prelude.Nothing, $sel:cidrs:PortInfo' :: Maybe [Text] cidrs = Maybe [Text] forall a. Maybe a Prelude.Nothing, $sel:protocol:PortInfo' :: Maybe NetworkProtocol protocol = Maybe NetworkProtocol forall a. Maybe a Prelude.Nothing, $sel:cidrListAliases:PortInfo' :: Maybe [Text] cidrListAliases = Maybe [Text] forall a. Maybe a Prelude.Nothing, $sel:ipv6Cidrs:PortInfo' :: Maybe [Text] ipv6Cidrs = Maybe [Text] forall a. Maybe a Prelude.Nothing, $sel:toPort:PortInfo' :: Maybe Int toPort = Maybe Int forall a. Maybe a Prelude.Nothing } -- | The first port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP type for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages Control Messages> -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP type for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6 Internet Control Message Protocol for IPv6>. portInfo_fromPort :: Lens.Lens' PortInfo (Prelude.Maybe Prelude.Int) portInfo_fromPort :: (Maybe Int -> f (Maybe Int)) -> PortInfo -> f PortInfo portInfo_fromPort = (PortInfo -> Maybe Int) -> (PortInfo -> Maybe Int -> PortInfo) -> Lens PortInfo PortInfo (Maybe Int) (Maybe Int) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\PortInfo' {Maybe Int fromPort :: Maybe Int $sel:fromPort:PortInfo' :: PortInfo -> Maybe Int fromPort} -> Maybe Int fromPort) (\s :: PortInfo s@PortInfo' {} Maybe Int a -> PortInfo s {$sel:fromPort:PortInfo' :: Maybe Int fromPort = Maybe Int a} :: PortInfo) -- | The IPv4 address, or range of IPv4 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- -- The @ipv6Cidrs@ parameter lists the IPv6 addresses that are allowed to -- connect to an instance. -- -- Examples: -- -- - To allow the IP address @192.0.2.44@, specify @192.0.2.44@ or -- @192.0.2.44\/32@. -- -- - To allow the IP addresses @192.0.2.0@ to @192.0.2.255@, specify -- @192.0.2.0\/24@. -- -- For more information about CIDR block notation, see -- <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation Classless Inter-Domain Routing> -- on /Wikipedia/. portInfo_cidrs :: Lens.Lens' PortInfo (Prelude.Maybe [Prelude.Text]) portInfo_cidrs :: (Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo portInfo_cidrs = (PortInfo -> Maybe [Text]) -> (PortInfo -> Maybe [Text] -> PortInfo) -> Lens PortInfo PortInfo (Maybe [Text]) (Maybe [Text]) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\PortInfo' {Maybe [Text] cidrs :: Maybe [Text] $sel:cidrs:PortInfo' :: PortInfo -> Maybe [Text] cidrs} -> Maybe [Text] cidrs) (\s :: PortInfo s@PortInfo' {} Maybe [Text] a -> PortInfo s {$sel:cidrs:PortInfo' :: Maybe [Text] cidrs = Maybe [Text] a} :: PortInfo) ((Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo) -> ((Maybe [Text] -> f (Maybe [Text])) -> Maybe [Text] -> f (Maybe [Text])) -> (Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo forall b c a. (b -> c) -> (a -> b) -> a -> c Prelude.. AnIso [Text] [Text] [Text] [Text] -> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) 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 AnIso [Text] [Text] [Text] [Text] forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b Lens.coerced -- | The IP protocol name. -- -- The name can be one of the following: -- -- - @tcp@ - Transmission Control Protocol (TCP) provides reliable, -- ordered, and error-checked delivery of streamed data between -- applications running on hosts communicating by an IP network. If you -- have an application that doesn\'t require reliable data stream -- service, use UDP instead. -- -- - @all@ - All transport layer protocol types. For more general -- information, see -- <https://en.wikipedia.org/wiki/Transport_layer Transport layer> on -- /Wikipedia/. -- -- - @udp@ - With User Datagram Protocol (UDP), computer applications can -- send messages (or datagrams) to other hosts on an Internet Protocol -- (IP) network. Prior communications are not required to set up -- transmission channels or data paths. Applications that don\'t -- require reliable data stream service can use UDP, which provides a -- connectionless datagram service that emphasizes reduced latency over -- reliability. If you do require reliable data stream service, use TCP -- instead. -- -- - @icmp@ - Internet Control Message Protocol (ICMP) is used to send -- error messages and operational information indicating success or -- failure when communicating with an instance. For example, an error -- is indicated when an instance could not be reached. When you specify -- @icmp@ as the @protocol@, you must specify the ICMP type using the -- @fromPort@ parameter, and ICMP code using the @toPort@ parameter. portInfo_protocol :: Lens.Lens' PortInfo (Prelude.Maybe NetworkProtocol) portInfo_protocol :: (Maybe NetworkProtocol -> f (Maybe NetworkProtocol)) -> PortInfo -> f PortInfo portInfo_protocol = (PortInfo -> Maybe NetworkProtocol) -> (PortInfo -> Maybe NetworkProtocol -> PortInfo) -> Lens PortInfo PortInfo (Maybe NetworkProtocol) (Maybe NetworkProtocol) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\PortInfo' {Maybe NetworkProtocol protocol :: Maybe NetworkProtocol $sel:protocol:PortInfo' :: PortInfo -> Maybe NetworkProtocol protocol} -> Maybe NetworkProtocol protocol) (\s :: PortInfo s@PortInfo' {} Maybe NetworkProtocol a -> PortInfo s {$sel:protocol:PortInfo' :: Maybe NetworkProtocol protocol = Maybe NetworkProtocol a} :: PortInfo) -- | An alias that defines access for a preconfigured range of IP addresses. -- -- The only alias currently supported is @lightsail-connect@, which allows -- IP addresses of the browser-based RDP\/SSH client in the Lightsail -- console to connect to your instance. portInfo_cidrListAliases :: Lens.Lens' PortInfo (Prelude.Maybe [Prelude.Text]) portInfo_cidrListAliases :: (Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo portInfo_cidrListAliases = (PortInfo -> Maybe [Text]) -> (PortInfo -> Maybe [Text] -> PortInfo) -> Lens PortInfo PortInfo (Maybe [Text]) (Maybe [Text]) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\PortInfo' {Maybe [Text] cidrListAliases :: Maybe [Text] $sel:cidrListAliases:PortInfo' :: PortInfo -> Maybe [Text] cidrListAliases} -> Maybe [Text] cidrListAliases) (\s :: PortInfo s@PortInfo' {} Maybe [Text] a -> PortInfo s {$sel:cidrListAliases:PortInfo' :: Maybe [Text] cidrListAliases = Maybe [Text] a} :: PortInfo) ((Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo) -> ((Maybe [Text] -> f (Maybe [Text])) -> Maybe [Text] -> f (Maybe [Text])) -> (Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo forall b c a. (b -> c) -> (a -> b) -> a -> c Prelude.. AnIso [Text] [Text] [Text] [Text] -> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) 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 AnIso [Text] [Text] [Text] [Text] forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b Lens.coerced -- | The IPv6 address, or range of IPv6 addresses (in CIDR notation) that are -- allowed to connect to an instance through the ports, and the protocol. -- Only devices with an IPv6 address can connect to an instance through -- IPv6; otherwise, IPv4 should be used. -- -- The @cidrs@ parameter lists the IPv4 addresses that are allowed to -- connect to an instance. -- -- For more information about CIDR block notation, see -- <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation Classless Inter-Domain Routing> -- on /Wikipedia/. portInfo_ipv6Cidrs :: Lens.Lens' PortInfo (Prelude.Maybe [Prelude.Text]) portInfo_ipv6Cidrs :: (Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo portInfo_ipv6Cidrs = (PortInfo -> Maybe [Text]) -> (PortInfo -> Maybe [Text] -> PortInfo) -> Lens PortInfo PortInfo (Maybe [Text]) (Maybe [Text]) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\PortInfo' {Maybe [Text] ipv6Cidrs :: Maybe [Text] $sel:ipv6Cidrs:PortInfo' :: PortInfo -> Maybe [Text] ipv6Cidrs} -> Maybe [Text] ipv6Cidrs) (\s :: PortInfo s@PortInfo' {} Maybe [Text] a -> PortInfo s {$sel:ipv6Cidrs:PortInfo' :: Maybe [Text] ipv6Cidrs = Maybe [Text] a} :: PortInfo) ((Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo) -> ((Maybe [Text] -> f (Maybe [Text])) -> Maybe [Text] -> f (Maybe [Text])) -> (Maybe [Text] -> f (Maybe [Text])) -> PortInfo -> f PortInfo forall b c a. (b -> c) -> (a -> b) -> a -> c Prelude.. AnIso [Text] [Text] [Text] [Text] -> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) 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 AnIso [Text] [Text] [Text] [Text] forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b Lens.coerced -- | The last port in a range of open ports on an instance. -- -- Allowed ports: -- -- - TCP and UDP - @0@ to @65535@ -- -- - ICMP - The ICMP code for IPv4 addresses. For example, specify @8@ as -- the @fromPort@ (ICMP type), and @-1@ as the @toPort@ (ICMP code), to -- enable ICMP Ping. For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages Control Messages> -- on /Wikipedia/. -- -- - ICMPv6 - The ICMP code for IPv6 addresses. For example, specify -- @128@ as the @fromPort@ (ICMPv6 type), and @0@ as @toPort@ (ICMPv6 -- code). For more information, see -- <https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_for_IPv6 Internet Control Message Protocol for IPv6>. portInfo_toPort :: Lens.Lens' PortInfo (Prelude.Maybe Prelude.Int) portInfo_toPort :: (Maybe Int -> f (Maybe Int)) -> PortInfo -> f PortInfo portInfo_toPort = (PortInfo -> Maybe Int) -> (PortInfo -> Maybe Int -> PortInfo) -> Lens PortInfo PortInfo (Maybe Int) (Maybe Int) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b Lens.lens (\PortInfo' {Maybe Int toPort :: Maybe Int $sel:toPort:PortInfo' :: PortInfo -> Maybe Int toPort} -> Maybe Int toPort) (\s :: PortInfo s@PortInfo' {} Maybe Int a -> PortInfo s {$sel:toPort:PortInfo' :: Maybe Int toPort = Maybe Int a} :: PortInfo) instance Prelude.Hashable PortInfo instance Prelude.NFData PortInfo instance Core.ToJSON PortInfo where toJSON :: PortInfo -> Value toJSON PortInfo' {Maybe Int Maybe [Text] Maybe NetworkProtocol toPort :: Maybe Int ipv6Cidrs :: Maybe [Text] cidrListAliases :: Maybe [Text] protocol :: Maybe NetworkProtocol cidrs :: Maybe [Text] fromPort :: Maybe Int $sel:toPort:PortInfo' :: PortInfo -> Maybe Int $sel:ipv6Cidrs:PortInfo' :: PortInfo -> Maybe [Text] $sel:cidrListAliases:PortInfo' :: PortInfo -> Maybe [Text] $sel:protocol:PortInfo' :: PortInfo -> Maybe NetworkProtocol $sel:cidrs:PortInfo' :: PortInfo -> Maybe [Text] $sel:fromPort:PortInfo' :: PortInfo -> Maybe Int ..} = [Pair] -> Value Core.object ( [Maybe Pair] -> [Pair] forall a. [Maybe a] -> [a] Prelude.catMaybes [ (Text "fromPort" Text -> Int -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> Maybe Int fromPort, (Text "cidrs" Text -> [Text] -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..=) ([Text] -> Pair) -> Maybe [Text] -> Maybe Pair forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> Maybe [Text] cidrs, (Text "protocol" Text -> NetworkProtocol -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..=) (NetworkProtocol -> Pair) -> Maybe NetworkProtocol -> Maybe Pair forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> Maybe NetworkProtocol protocol, (Text "cidrListAliases" Text -> [Text] -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..=) ([Text] -> Pair) -> Maybe [Text] -> Maybe Pair forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> Maybe [Text] cidrListAliases, (Text "ipv6Cidrs" Text -> [Text] -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..=) ([Text] -> Pair) -> Maybe [Text] -> Maybe Pair forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> Maybe [Text] ipv6Cidrs, (Text "toPort" Text -> Int -> Pair forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b Prelude.<$> Maybe Int toPort ] )