{-# 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.TrafficMirrorFilterRule
-- 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.TrafficMirrorFilterRule 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.TrafficDirection
import Amazonka.EC2.Types.TrafficMirrorPortRange
import Amazonka.EC2.Types.TrafficMirrorRuleAction
import qualified Amazonka.Prelude as Prelude

-- | Describes the Traffic Mirror rule.
--
-- /See:/ 'newTrafficMirrorFilterRule' smart constructor.
data TrafficMirrorFilterRule = TrafficMirrorFilterRule'
  { -- | The description of the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The destination CIDR block assigned to the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe Text
destinationCidrBlock :: Prelude.Maybe Prelude.Text,
    -- | The destination port range assigned to the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe TrafficMirrorPortRange
destinationPortRange :: Prelude.Maybe TrafficMirrorPortRange,
    -- | The protocol assigned to the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe Int
protocol :: Prelude.Maybe Prelude.Int,
    -- | The action assigned to the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe TrafficMirrorRuleAction
ruleAction :: Prelude.Maybe TrafficMirrorRuleAction,
    -- | The rule number of the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe Int
ruleNumber :: Prelude.Maybe Prelude.Int,
    -- | The source CIDR block assigned to the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe Text
sourceCidrBlock :: Prelude.Maybe Prelude.Text,
    -- | The source port range assigned to the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe TrafficMirrorPortRange
sourcePortRange :: Prelude.Maybe TrafficMirrorPortRange,
    -- | The traffic direction assigned to the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe TrafficDirection
trafficDirection :: Prelude.Maybe TrafficDirection,
    -- | The ID of the Traffic Mirror filter that the rule is associated with.
    TrafficMirrorFilterRule -> Maybe Text
trafficMirrorFilterId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Traffic Mirror rule.
    TrafficMirrorFilterRule -> Maybe Text
trafficMirrorFilterRuleId :: Prelude.Maybe Prelude.Text
  }
  deriving (TrafficMirrorFilterRule -> TrafficMirrorFilterRule -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TrafficMirrorFilterRule -> TrafficMirrorFilterRule -> Bool
$c/= :: TrafficMirrorFilterRule -> TrafficMirrorFilterRule -> Bool
== :: TrafficMirrorFilterRule -> TrafficMirrorFilterRule -> Bool
$c== :: TrafficMirrorFilterRule -> TrafficMirrorFilterRule -> Bool
Prelude.Eq, ReadPrec [TrafficMirrorFilterRule]
ReadPrec TrafficMirrorFilterRule
Int -> ReadS TrafficMirrorFilterRule
ReadS [TrafficMirrorFilterRule]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TrafficMirrorFilterRule]
$creadListPrec :: ReadPrec [TrafficMirrorFilterRule]
readPrec :: ReadPrec TrafficMirrorFilterRule
$creadPrec :: ReadPrec TrafficMirrorFilterRule
readList :: ReadS [TrafficMirrorFilterRule]
$creadList :: ReadS [TrafficMirrorFilterRule]
readsPrec :: Int -> ReadS TrafficMirrorFilterRule
$creadsPrec :: Int -> ReadS TrafficMirrorFilterRule
Prelude.Read, Int -> TrafficMirrorFilterRule -> ShowS
[TrafficMirrorFilterRule] -> ShowS
TrafficMirrorFilterRule -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TrafficMirrorFilterRule] -> ShowS
$cshowList :: [TrafficMirrorFilterRule] -> ShowS
show :: TrafficMirrorFilterRule -> String
$cshow :: TrafficMirrorFilterRule -> String
showsPrec :: Int -> TrafficMirrorFilterRule -> ShowS
$cshowsPrec :: Int -> TrafficMirrorFilterRule -> ShowS
Prelude.Show, forall x. Rep TrafficMirrorFilterRule x -> TrafficMirrorFilterRule
forall x. TrafficMirrorFilterRule -> Rep TrafficMirrorFilterRule x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TrafficMirrorFilterRule x -> TrafficMirrorFilterRule
$cfrom :: forall x. TrafficMirrorFilterRule -> Rep TrafficMirrorFilterRule x
Prelude.Generic)

-- |
-- Create a value of 'TrafficMirrorFilterRule' 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:
--
-- 'description', 'trafficMirrorFilterRule_description' - The description of the Traffic Mirror rule.
--
-- 'destinationCidrBlock', 'trafficMirrorFilterRule_destinationCidrBlock' - The destination CIDR block assigned to the Traffic Mirror rule.
--
-- 'destinationPortRange', 'trafficMirrorFilterRule_destinationPortRange' - The destination port range assigned to the Traffic Mirror rule.
--
-- 'protocol', 'trafficMirrorFilterRule_protocol' - The protocol assigned to the Traffic Mirror rule.
--
-- 'ruleAction', 'trafficMirrorFilterRule_ruleAction' - The action assigned to the Traffic Mirror rule.
--
-- 'ruleNumber', 'trafficMirrorFilterRule_ruleNumber' - The rule number of the Traffic Mirror rule.
--
-- 'sourceCidrBlock', 'trafficMirrorFilterRule_sourceCidrBlock' - The source CIDR block assigned to the Traffic Mirror rule.
--
-- 'sourcePortRange', 'trafficMirrorFilterRule_sourcePortRange' - The source port range assigned to the Traffic Mirror rule.
--
-- 'trafficDirection', 'trafficMirrorFilterRule_trafficDirection' - The traffic direction assigned to the Traffic Mirror rule.
--
-- 'trafficMirrorFilterId', 'trafficMirrorFilterRule_trafficMirrorFilterId' - The ID of the Traffic Mirror filter that the rule is associated with.
--
-- 'trafficMirrorFilterRuleId', 'trafficMirrorFilterRule_trafficMirrorFilterRuleId' - The ID of the Traffic Mirror rule.
newTrafficMirrorFilterRule ::
  TrafficMirrorFilterRule
newTrafficMirrorFilterRule :: TrafficMirrorFilterRule
newTrafficMirrorFilterRule =
  TrafficMirrorFilterRule'
    { $sel:description:TrafficMirrorFilterRule' :: Maybe Text
description =
        forall a. Maybe a
Prelude.Nothing,
      $sel:destinationCidrBlock:TrafficMirrorFilterRule' :: Maybe Text
destinationCidrBlock = forall a. Maybe a
Prelude.Nothing,
      $sel:destinationPortRange:TrafficMirrorFilterRule' :: Maybe TrafficMirrorPortRange
destinationPortRange = forall a. Maybe a
Prelude.Nothing,
      $sel:protocol:TrafficMirrorFilterRule' :: Maybe Int
protocol = forall a. Maybe a
Prelude.Nothing,
      $sel:ruleAction:TrafficMirrorFilterRule' :: Maybe TrafficMirrorRuleAction
ruleAction = forall a. Maybe a
Prelude.Nothing,
      $sel:ruleNumber:TrafficMirrorFilterRule' :: Maybe Int
ruleNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceCidrBlock:TrafficMirrorFilterRule' :: Maybe Text
sourceCidrBlock = forall a. Maybe a
Prelude.Nothing,
      $sel:sourcePortRange:TrafficMirrorFilterRule' :: Maybe TrafficMirrorPortRange
sourcePortRange = forall a. Maybe a
Prelude.Nothing,
      $sel:trafficDirection:TrafficMirrorFilterRule' :: Maybe TrafficDirection
trafficDirection = forall a. Maybe a
Prelude.Nothing,
      $sel:trafficMirrorFilterId:TrafficMirrorFilterRule' :: Maybe Text
trafficMirrorFilterId = forall a. Maybe a
Prelude.Nothing,
      $sel:trafficMirrorFilterRuleId:TrafficMirrorFilterRule' :: Maybe Text
trafficMirrorFilterRuleId = forall a. Maybe a
Prelude.Nothing
    }

-- | The description of the Traffic Mirror rule.
trafficMirrorFilterRule_description :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe Prelude.Text)
trafficMirrorFilterRule_description :: Lens' TrafficMirrorFilterRule (Maybe Text)
trafficMirrorFilterRule_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe Text
description :: Maybe Text
$sel:description:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
description} -> Maybe Text
description) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe Text
a -> TrafficMirrorFilterRule
s {$sel:description:TrafficMirrorFilterRule' :: Maybe Text
description = Maybe Text
a} :: TrafficMirrorFilterRule)

-- | The destination CIDR block assigned to the Traffic Mirror rule.
trafficMirrorFilterRule_destinationCidrBlock :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe Prelude.Text)
trafficMirrorFilterRule_destinationCidrBlock :: Lens' TrafficMirrorFilterRule (Maybe Text)
trafficMirrorFilterRule_destinationCidrBlock = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe Text
destinationCidrBlock :: Maybe Text
$sel:destinationCidrBlock:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
destinationCidrBlock} -> Maybe Text
destinationCidrBlock) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe Text
a -> TrafficMirrorFilterRule
s {$sel:destinationCidrBlock:TrafficMirrorFilterRule' :: Maybe Text
destinationCidrBlock = Maybe Text
a} :: TrafficMirrorFilterRule)

-- | The destination port range assigned to the Traffic Mirror rule.
trafficMirrorFilterRule_destinationPortRange :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe TrafficMirrorPortRange)
trafficMirrorFilterRule_destinationPortRange :: Lens' TrafficMirrorFilterRule (Maybe TrafficMirrorPortRange)
trafficMirrorFilterRule_destinationPortRange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe TrafficMirrorPortRange
destinationPortRange :: Maybe TrafficMirrorPortRange
$sel:destinationPortRange:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorPortRange
destinationPortRange} -> Maybe TrafficMirrorPortRange
destinationPortRange) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe TrafficMirrorPortRange
a -> TrafficMirrorFilterRule
s {$sel:destinationPortRange:TrafficMirrorFilterRule' :: Maybe TrafficMirrorPortRange
destinationPortRange = Maybe TrafficMirrorPortRange
a} :: TrafficMirrorFilterRule)

-- | The protocol assigned to the Traffic Mirror rule.
trafficMirrorFilterRule_protocol :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe Prelude.Int)
trafficMirrorFilterRule_protocol :: Lens' TrafficMirrorFilterRule (Maybe Int)
trafficMirrorFilterRule_protocol = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe Int
protocol :: Maybe Int
$sel:protocol:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Int
protocol} -> Maybe Int
protocol) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe Int
a -> TrafficMirrorFilterRule
s {$sel:protocol:TrafficMirrorFilterRule' :: Maybe Int
protocol = Maybe Int
a} :: TrafficMirrorFilterRule)

-- | The action assigned to the Traffic Mirror rule.
trafficMirrorFilterRule_ruleAction :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe TrafficMirrorRuleAction)
trafficMirrorFilterRule_ruleAction :: Lens' TrafficMirrorFilterRule (Maybe TrafficMirrorRuleAction)
trafficMirrorFilterRule_ruleAction = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe TrafficMirrorRuleAction
ruleAction :: Maybe TrafficMirrorRuleAction
$sel:ruleAction:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorRuleAction
ruleAction} -> Maybe TrafficMirrorRuleAction
ruleAction) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe TrafficMirrorRuleAction
a -> TrafficMirrorFilterRule
s {$sel:ruleAction:TrafficMirrorFilterRule' :: Maybe TrafficMirrorRuleAction
ruleAction = Maybe TrafficMirrorRuleAction
a} :: TrafficMirrorFilterRule)

-- | The rule number of the Traffic Mirror rule.
trafficMirrorFilterRule_ruleNumber :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe Prelude.Int)
trafficMirrorFilterRule_ruleNumber :: Lens' TrafficMirrorFilterRule (Maybe Int)
trafficMirrorFilterRule_ruleNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe Int
ruleNumber :: Maybe Int
$sel:ruleNumber:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Int
ruleNumber} -> Maybe Int
ruleNumber) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe Int
a -> TrafficMirrorFilterRule
s {$sel:ruleNumber:TrafficMirrorFilterRule' :: Maybe Int
ruleNumber = Maybe Int
a} :: TrafficMirrorFilterRule)

-- | The source CIDR block assigned to the Traffic Mirror rule.
trafficMirrorFilterRule_sourceCidrBlock :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe Prelude.Text)
trafficMirrorFilterRule_sourceCidrBlock :: Lens' TrafficMirrorFilterRule (Maybe Text)
trafficMirrorFilterRule_sourceCidrBlock = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe Text
sourceCidrBlock :: Maybe Text
$sel:sourceCidrBlock:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
sourceCidrBlock} -> Maybe Text
sourceCidrBlock) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe Text
a -> TrafficMirrorFilterRule
s {$sel:sourceCidrBlock:TrafficMirrorFilterRule' :: Maybe Text
sourceCidrBlock = Maybe Text
a} :: TrafficMirrorFilterRule)

-- | The source port range assigned to the Traffic Mirror rule.
trafficMirrorFilterRule_sourcePortRange :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe TrafficMirrorPortRange)
trafficMirrorFilterRule_sourcePortRange :: Lens' TrafficMirrorFilterRule (Maybe TrafficMirrorPortRange)
trafficMirrorFilterRule_sourcePortRange = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe TrafficMirrorPortRange
sourcePortRange :: Maybe TrafficMirrorPortRange
$sel:sourcePortRange:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorPortRange
sourcePortRange} -> Maybe TrafficMirrorPortRange
sourcePortRange) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe TrafficMirrorPortRange
a -> TrafficMirrorFilterRule
s {$sel:sourcePortRange:TrafficMirrorFilterRule' :: Maybe TrafficMirrorPortRange
sourcePortRange = Maybe TrafficMirrorPortRange
a} :: TrafficMirrorFilterRule)

-- | The traffic direction assigned to the Traffic Mirror rule.
trafficMirrorFilterRule_trafficDirection :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe TrafficDirection)
trafficMirrorFilterRule_trafficDirection :: Lens' TrafficMirrorFilterRule (Maybe TrafficDirection)
trafficMirrorFilterRule_trafficDirection = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe TrafficDirection
trafficDirection :: Maybe TrafficDirection
$sel:trafficDirection:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficDirection
trafficDirection} -> Maybe TrafficDirection
trafficDirection) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe TrafficDirection
a -> TrafficMirrorFilterRule
s {$sel:trafficDirection:TrafficMirrorFilterRule' :: Maybe TrafficDirection
trafficDirection = Maybe TrafficDirection
a} :: TrafficMirrorFilterRule)

-- | The ID of the Traffic Mirror filter that the rule is associated with.
trafficMirrorFilterRule_trafficMirrorFilterId :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe Prelude.Text)
trafficMirrorFilterRule_trafficMirrorFilterId :: Lens' TrafficMirrorFilterRule (Maybe Text)
trafficMirrorFilterRule_trafficMirrorFilterId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe Text
trafficMirrorFilterId :: Maybe Text
$sel:trafficMirrorFilterId:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
trafficMirrorFilterId} -> Maybe Text
trafficMirrorFilterId) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe Text
a -> TrafficMirrorFilterRule
s {$sel:trafficMirrorFilterId:TrafficMirrorFilterRule' :: Maybe Text
trafficMirrorFilterId = Maybe Text
a} :: TrafficMirrorFilterRule)

-- | The ID of the Traffic Mirror rule.
trafficMirrorFilterRule_trafficMirrorFilterRuleId :: Lens.Lens' TrafficMirrorFilterRule (Prelude.Maybe Prelude.Text)
trafficMirrorFilterRule_trafficMirrorFilterRuleId :: Lens' TrafficMirrorFilterRule (Maybe Text)
trafficMirrorFilterRule_trafficMirrorFilterRuleId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrafficMirrorFilterRule' {Maybe Text
trafficMirrorFilterRuleId :: Maybe Text
$sel:trafficMirrorFilterRuleId:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
trafficMirrorFilterRuleId} -> Maybe Text
trafficMirrorFilterRuleId) (\s :: TrafficMirrorFilterRule
s@TrafficMirrorFilterRule' {} Maybe Text
a -> TrafficMirrorFilterRule
s {$sel:trafficMirrorFilterRuleId:TrafficMirrorFilterRule' :: Maybe Text
trafficMirrorFilterRuleId = Maybe Text
a} :: TrafficMirrorFilterRule)

instance Data.FromXML TrafficMirrorFilterRule where
  parseXML :: [Node] -> Either String TrafficMirrorFilterRule
parseXML [Node]
x =
    Maybe Text
-> Maybe Text
-> Maybe TrafficMirrorPortRange
-> Maybe Int
-> Maybe TrafficMirrorRuleAction
-> Maybe Int
-> Maybe Text
-> Maybe TrafficMirrorPortRange
-> Maybe TrafficDirection
-> Maybe Text
-> Maybe Text
-> TrafficMirrorFilterRule
TrafficMirrorFilterRule'
      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
"description")
      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
"destinationCidrBlock")
      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
"destinationPortRange")
      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
"protocol")
      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
"ruleAction")
      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
"ruleNumber")
      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
"sourceCidrBlock")
      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
"sourcePortRange")
      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
"trafficDirection")
      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
"trafficMirrorFilterId")
      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
"trafficMirrorFilterRuleId")

instance Prelude.Hashable TrafficMirrorFilterRule where
  hashWithSalt :: Int -> TrafficMirrorFilterRule -> Int
hashWithSalt Int
_salt TrafficMirrorFilterRule' {Maybe Int
Maybe Text
Maybe TrafficDirection
Maybe TrafficMirrorPortRange
Maybe TrafficMirrorRuleAction
trafficMirrorFilterRuleId :: Maybe Text
trafficMirrorFilterId :: Maybe Text
trafficDirection :: Maybe TrafficDirection
sourcePortRange :: Maybe TrafficMirrorPortRange
sourceCidrBlock :: Maybe Text
ruleNumber :: Maybe Int
ruleAction :: Maybe TrafficMirrorRuleAction
protocol :: Maybe Int
destinationPortRange :: Maybe TrafficMirrorPortRange
destinationCidrBlock :: Maybe Text
description :: Maybe Text
$sel:trafficMirrorFilterRuleId:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
$sel:trafficMirrorFilterId:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
$sel:trafficDirection:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficDirection
$sel:sourcePortRange:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorPortRange
$sel:sourceCidrBlock:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
$sel:ruleNumber:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Int
$sel:ruleAction:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorRuleAction
$sel:protocol:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Int
$sel:destinationPortRange:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorPortRange
$sel:destinationCidrBlock:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
$sel:description:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
destinationCidrBlock
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TrafficMirrorPortRange
destinationPortRange
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
protocol
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TrafficMirrorRuleAction
ruleAction
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
ruleNumber
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceCidrBlock
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TrafficMirrorPortRange
sourcePortRange
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TrafficDirection
trafficDirection
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
trafficMirrorFilterId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
trafficMirrorFilterRuleId

instance Prelude.NFData TrafficMirrorFilterRule where
  rnf :: TrafficMirrorFilterRule -> ()
rnf TrafficMirrorFilterRule' {Maybe Int
Maybe Text
Maybe TrafficDirection
Maybe TrafficMirrorPortRange
Maybe TrafficMirrorRuleAction
trafficMirrorFilterRuleId :: Maybe Text
trafficMirrorFilterId :: Maybe Text
trafficDirection :: Maybe TrafficDirection
sourcePortRange :: Maybe TrafficMirrorPortRange
sourceCidrBlock :: Maybe Text
ruleNumber :: Maybe Int
ruleAction :: Maybe TrafficMirrorRuleAction
protocol :: Maybe Int
destinationPortRange :: Maybe TrafficMirrorPortRange
destinationCidrBlock :: Maybe Text
description :: Maybe Text
$sel:trafficMirrorFilterRuleId:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
$sel:trafficMirrorFilterId:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
$sel:trafficDirection:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficDirection
$sel:sourcePortRange:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorPortRange
$sel:sourceCidrBlock:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
$sel:ruleNumber:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Int
$sel:ruleAction:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorRuleAction
$sel:protocol:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Int
$sel:destinationPortRange:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe TrafficMirrorPortRange
$sel:destinationCidrBlock:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
$sel:description:TrafficMirrorFilterRule' :: TrafficMirrorFilterRule -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
destinationCidrBlock
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TrafficMirrorPortRange
destinationPortRange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
protocol
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TrafficMirrorRuleAction
ruleAction
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
ruleNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceCidrBlock
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TrafficMirrorPortRange
sourcePortRange
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TrafficDirection
trafficDirection
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
trafficMirrorFilterId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
trafficMirrorFilterRuleId