/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace FMS { namespace Model { /** *

The definition of the Network Firewall firewall policy.

See * Also:

AWS * API Reference

*/ class NetworkFirewallPolicyDescription { public: AWS_FMS_API NetworkFirewallPolicyDescription(); AWS_FMS_API NetworkFirewallPolicyDescription(Aws::Utils::Json::JsonView jsonValue); AWS_FMS_API NetworkFirewallPolicyDescription& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_FMS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The stateless rule groups that are used in the Network Firewall firewall * policy.

*/ inline const Aws::Vector& GetStatelessRuleGroups() const{ return m_statelessRuleGroups; } /** *

The stateless rule groups that are used in the Network Firewall firewall * policy.

*/ inline bool StatelessRuleGroupsHasBeenSet() const { return m_statelessRuleGroupsHasBeenSet; } /** *

The stateless rule groups that are used in the Network Firewall firewall * policy.

*/ inline void SetStatelessRuleGroups(const Aws::Vector& value) { m_statelessRuleGroupsHasBeenSet = true; m_statelessRuleGroups = value; } /** *

The stateless rule groups that are used in the Network Firewall firewall * policy.

*/ inline void SetStatelessRuleGroups(Aws::Vector&& value) { m_statelessRuleGroupsHasBeenSet = true; m_statelessRuleGroups = std::move(value); } /** *

The stateless rule groups that are used in the Network Firewall firewall * policy.

*/ inline NetworkFirewallPolicyDescription& WithStatelessRuleGroups(const Aws::Vector& value) { SetStatelessRuleGroups(value); return *this;} /** *

The stateless rule groups that are used in the Network Firewall firewall * policy.

*/ inline NetworkFirewallPolicyDescription& WithStatelessRuleGroups(Aws::Vector&& value) { SetStatelessRuleGroups(std::move(value)); return *this;} /** *

The stateless rule groups that are used in the Network Firewall firewall * policy.

*/ inline NetworkFirewallPolicyDescription& AddStatelessRuleGroups(const StatelessRuleGroup& value) { m_statelessRuleGroupsHasBeenSet = true; m_statelessRuleGroups.push_back(value); return *this; } /** *

The stateless rule groups that are used in the Network Firewall firewall * policy.

*/ inline NetworkFirewallPolicyDescription& AddStatelessRuleGroups(StatelessRuleGroup&& value) { m_statelessRuleGroupsHasBeenSet = true; m_statelessRuleGroups.push_back(std::move(value)); return *this; } /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline const Aws::Vector& GetStatelessDefaultActions() const{ return m_statelessDefaultActions; } /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline bool StatelessDefaultActionsHasBeenSet() const { return m_statelessDefaultActionsHasBeenSet; } /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline void SetStatelessDefaultActions(const Aws::Vector& value) { m_statelessDefaultActionsHasBeenSet = true; m_statelessDefaultActions = value; } /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline void SetStatelessDefaultActions(Aws::Vector&& value) { m_statelessDefaultActionsHasBeenSet = true; m_statelessDefaultActions = std::move(value); } /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline NetworkFirewallPolicyDescription& WithStatelessDefaultActions(const Aws::Vector& value) { SetStatelessDefaultActions(value); return *this;} /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline NetworkFirewallPolicyDescription& WithStatelessDefaultActions(Aws::Vector&& value) { SetStatelessDefaultActions(std::move(value)); return *this;} /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline NetworkFirewallPolicyDescription& AddStatelessDefaultActions(const Aws::String& value) { m_statelessDefaultActionsHasBeenSet = true; m_statelessDefaultActions.push_back(value); return *this; } /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline NetworkFirewallPolicyDescription& AddStatelessDefaultActions(Aws::String&& value) { m_statelessDefaultActionsHasBeenSet = true; m_statelessDefaultActions.push_back(std::move(value)); return *this; } /** *

The actions to take on packets that don't match any of the stateless rule * groups.

*/ inline NetworkFirewallPolicyDescription& AddStatelessDefaultActions(const char* value) { m_statelessDefaultActionsHasBeenSet = true; m_statelessDefaultActions.push_back(value); return *this; } /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline const Aws::Vector& GetStatelessFragmentDefaultActions() const{ return m_statelessFragmentDefaultActions; } /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline bool StatelessFragmentDefaultActionsHasBeenSet() const { return m_statelessFragmentDefaultActionsHasBeenSet; } /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline void SetStatelessFragmentDefaultActions(const Aws::Vector& value) { m_statelessFragmentDefaultActionsHasBeenSet = true; m_statelessFragmentDefaultActions = value; } /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline void SetStatelessFragmentDefaultActions(Aws::Vector&& value) { m_statelessFragmentDefaultActionsHasBeenSet = true; m_statelessFragmentDefaultActions = std::move(value); } /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline NetworkFirewallPolicyDescription& WithStatelessFragmentDefaultActions(const Aws::Vector& value) { SetStatelessFragmentDefaultActions(value); return *this;} /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline NetworkFirewallPolicyDescription& WithStatelessFragmentDefaultActions(Aws::Vector&& value) { SetStatelessFragmentDefaultActions(std::move(value)); return *this;} /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline NetworkFirewallPolicyDescription& AddStatelessFragmentDefaultActions(const Aws::String& value) { m_statelessFragmentDefaultActionsHasBeenSet = true; m_statelessFragmentDefaultActions.push_back(value); return *this; } /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline NetworkFirewallPolicyDescription& AddStatelessFragmentDefaultActions(Aws::String&& value) { m_statelessFragmentDefaultActionsHasBeenSet = true; m_statelessFragmentDefaultActions.push_back(std::move(value)); return *this; } /** *

The actions to take on packet fragments that don't match any of the stateless * rule groups.

*/ inline NetworkFirewallPolicyDescription& AddStatelessFragmentDefaultActions(const char* value) { m_statelessFragmentDefaultActionsHasBeenSet = true; m_statelessFragmentDefaultActions.push_back(value); return *this; } /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline const Aws::Vector& GetStatelessCustomActions() const{ return m_statelessCustomActions; } /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline bool StatelessCustomActionsHasBeenSet() const { return m_statelessCustomActionsHasBeenSet; } /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline void SetStatelessCustomActions(const Aws::Vector& value) { m_statelessCustomActionsHasBeenSet = true; m_statelessCustomActions = value; } /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline void SetStatelessCustomActions(Aws::Vector&& value) { m_statelessCustomActionsHasBeenSet = true; m_statelessCustomActions = std::move(value); } /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline NetworkFirewallPolicyDescription& WithStatelessCustomActions(const Aws::Vector& value) { SetStatelessCustomActions(value); return *this;} /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline NetworkFirewallPolicyDescription& WithStatelessCustomActions(Aws::Vector&& value) { SetStatelessCustomActions(std::move(value)); return *this;} /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline NetworkFirewallPolicyDescription& AddStatelessCustomActions(const Aws::String& value) { m_statelessCustomActionsHasBeenSet = true; m_statelessCustomActions.push_back(value); return *this; } /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline NetworkFirewallPolicyDescription& AddStatelessCustomActions(Aws::String&& value) { m_statelessCustomActionsHasBeenSet = true; m_statelessCustomActions.push_back(std::move(value)); return *this; } /** *

Names of custom actions that are available for use in the stateless default * actions settings.

*/ inline NetworkFirewallPolicyDescription& AddStatelessCustomActions(const char* value) { m_statelessCustomActionsHasBeenSet = true; m_statelessCustomActions.push_back(value); return *this; } /** *

The stateful rule groups that are used in the Network Firewall firewall * policy.

*/ inline const Aws::Vector& GetStatefulRuleGroups() const{ return m_statefulRuleGroups; } /** *

The stateful rule groups that are used in the Network Firewall firewall * policy.

*/ inline bool StatefulRuleGroupsHasBeenSet() const { return m_statefulRuleGroupsHasBeenSet; } /** *

The stateful rule groups that are used in the Network Firewall firewall * policy.

*/ inline void SetStatefulRuleGroups(const Aws::Vector& value) { m_statefulRuleGroupsHasBeenSet = true; m_statefulRuleGroups = value; } /** *

The stateful rule groups that are used in the Network Firewall firewall * policy.

*/ inline void SetStatefulRuleGroups(Aws::Vector&& value) { m_statefulRuleGroupsHasBeenSet = true; m_statefulRuleGroups = std::move(value); } /** *

The stateful rule groups that are used in the Network Firewall firewall * policy.

*/ inline NetworkFirewallPolicyDescription& WithStatefulRuleGroups(const Aws::Vector& value) { SetStatefulRuleGroups(value); return *this;} /** *

The stateful rule groups that are used in the Network Firewall firewall * policy.

*/ inline NetworkFirewallPolicyDescription& WithStatefulRuleGroups(Aws::Vector&& value) { SetStatefulRuleGroups(std::move(value)); return *this;} /** *

The stateful rule groups that are used in the Network Firewall firewall * policy.

*/ inline NetworkFirewallPolicyDescription& AddStatefulRuleGroups(const StatefulRuleGroup& value) { m_statefulRuleGroupsHasBeenSet = true; m_statefulRuleGroups.push_back(value); return *this; } /** *

The stateful rule groups that are used in the Network Firewall firewall * policy.

*/ inline NetworkFirewallPolicyDescription& AddStatefulRuleGroups(StatefulRuleGroup&& value) { m_statefulRuleGroupsHasBeenSet = true; m_statefulRuleGroups.push_back(std::move(value)); return *this; } /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline const Aws::Vector& GetStatefulDefaultActions() const{ return m_statefulDefaultActions; } /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline bool StatefulDefaultActionsHasBeenSet() const { return m_statefulDefaultActionsHasBeenSet; } /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline void SetStatefulDefaultActions(const Aws::Vector& value) { m_statefulDefaultActionsHasBeenSet = true; m_statefulDefaultActions = value; } /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline void SetStatefulDefaultActions(Aws::Vector&& value) { m_statefulDefaultActionsHasBeenSet = true; m_statefulDefaultActions = std::move(value); } /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline NetworkFirewallPolicyDescription& WithStatefulDefaultActions(const Aws::Vector& value) { SetStatefulDefaultActions(value); return *this;} /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline NetworkFirewallPolicyDescription& WithStatefulDefaultActions(Aws::Vector&& value) { SetStatefulDefaultActions(std::move(value)); return *this;} /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline NetworkFirewallPolicyDescription& AddStatefulDefaultActions(const Aws::String& value) { m_statefulDefaultActionsHasBeenSet = true; m_statefulDefaultActions.push_back(value); return *this; } /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline NetworkFirewallPolicyDescription& AddStatefulDefaultActions(Aws::String&& value) { m_statefulDefaultActionsHasBeenSet = true; m_statefulDefaultActions.push_back(std::move(value)); return *this; } /** *

The default actions to take on a packet that doesn't match any stateful * rules. The stateful default action is optional, and is only valid when using the * strict rule order.

Valid values of the stateful default action:

*
  • aws:drop_strict

  • aws:drop_established

  • *
  • aws:alert_strict

  • aws:alert_established

*/ inline NetworkFirewallPolicyDescription& AddStatefulDefaultActions(const char* value) { m_statefulDefaultActionsHasBeenSet = true; m_statefulDefaultActions.push_back(value); return *this; } /** *

Additional options governing how Network Firewall handles stateful rules. The * stateful rule groups that you use in your policy must have stateful rule options * settings that are compatible with these settings.

*/ inline const StatefulEngineOptions& GetStatefulEngineOptions() const{ return m_statefulEngineOptions; } /** *

Additional options governing how Network Firewall handles stateful rules. The * stateful rule groups that you use in your policy must have stateful rule options * settings that are compatible with these settings.

*/ inline bool StatefulEngineOptionsHasBeenSet() const { return m_statefulEngineOptionsHasBeenSet; } /** *

Additional options governing how Network Firewall handles stateful rules. The * stateful rule groups that you use in your policy must have stateful rule options * settings that are compatible with these settings.

*/ inline void SetStatefulEngineOptions(const StatefulEngineOptions& value) { m_statefulEngineOptionsHasBeenSet = true; m_statefulEngineOptions = value; } /** *

Additional options governing how Network Firewall handles stateful rules. The * stateful rule groups that you use in your policy must have stateful rule options * settings that are compatible with these settings.

*/ inline void SetStatefulEngineOptions(StatefulEngineOptions&& value) { m_statefulEngineOptionsHasBeenSet = true; m_statefulEngineOptions = std::move(value); } /** *

Additional options governing how Network Firewall handles stateful rules. The * stateful rule groups that you use in your policy must have stateful rule options * settings that are compatible with these settings.

*/ inline NetworkFirewallPolicyDescription& WithStatefulEngineOptions(const StatefulEngineOptions& value) { SetStatefulEngineOptions(value); return *this;} /** *

Additional options governing how Network Firewall handles stateful rules. The * stateful rule groups that you use in your policy must have stateful rule options * settings that are compatible with these settings.

*/ inline NetworkFirewallPolicyDescription& WithStatefulEngineOptions(StatefulEngineOptions&& value) { SetStatefulEngineOptions(std::move(value)); return *this;} private: Aws::Vector m_statelessRuleGroups; bool m_statelessRuleGroupsHasBeenSet = false; Aws::Vector m_statelessDefaultActions; bool m_statelessDefaultActionsHasBeenSet = false; Aws::Vector m_statelessFragmentDefaultActions; bool m_statelessFragmentDefaultActionsHasBeenSet = false; Aws::Vector m_statelessCustomActions; bool m_statelessCustomActionsHasBeenSet = false; Aws::Vector m_statefulRuleGroups; bool m_statefulRuleGroupsHasBeenSet = false; Aws::Vector m_statefulDefaultActions; bool m_statefulDefaultActionsHasBeenSet = false; StatefulEngineOptions m_statefulEngineOptions; bool m_statefulEngineOptionsHasBeenSet = false; }; } // namespace Model } // namespace FMS } // namespace Aws