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

The object that defines the rules in a rule group. This, along with * RuleGroupResponse, define the rule group. You can retrieve all objects * for a rule group by calling DescribeRuleGroup.

Network Firewall * uses a rule group to inspect and control network traffic. You define stateless * rule groups to inspect individual packets and you define stateful rule groups to * inspect packets in the context of their traffic flow.

To use a rule * group, you include it by reference in an Network Firewall firewall policy, then * you use the policy in a firewall. You can reference a rule group from more than * one firewall policy, and you can use a firewall policy in more than one * firewall.

See Also:

AWS * API Reference

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

Settings that are available for use in the rules in the rule group. You can * only use these for stateful rule groups.

*/ inline const RuleVariables& GetRuleVariables() const{ return m_ruleVariables; } /** *

Settings that are available for use in the rules in the rule group. You can * only use these for stateful rule groups.

*/ inline bool RuleVariablesHasBeenSet() const { return m_ruleVariablesHasBeenSet; } /** *

Settings that are available for use in the rules in the rule group. You can * only use these for stateful rule groups.

*/ inline void SetRuleVariables(const RuleVariables& value) { m_ruleVariablesHasBeenSet = true; m_ruleVariables = value; } /** *

Settings that are available for use in the rules in the rule group. You can * only use these for stateful rule groups.

*/ inline void SetRuleVariables(RuleVariables&& value) { m_ruleVariablesHasBeenSet = true; m_ruleVariables = std::move(value); } /** *

Settings that are available for use in the rules in the rule group. You can * only use these for stateful rule groups.

*/ inline RuleGroup& WithRuleVariables(const RuleVariables& value) { SetRuleVariables(value); return *this;} /** *

Settings that are available for use in the rules in the rule group. You can * only use these for stateful rule groups.

*/ inline RuleGroup& WithRuleVariables(RuleVariables&& value) { SetRuleVariables(std::move(value)); return *this;} /** *

The list of a rule group's reference sets.

*/ inline const ReferenceSets& GetReferenceSets() const{ return m_referenceSets; } /** *

The list of a rule group's reference sets.

*/ inline bool ReferenceSetsHasBeenSet() const { return m_referenceSetsHasBeenSet; } /** *

The list of a rule group's reference sets.

*/ inline void SetReferenceSets(const ReferenceSets& value) { m_referenceSetsHasBeenSet = true; m_referenceSets = value; } /** *

The list of a rule group's reference sets.

*/ inline void SetReferenceSets(ReferenceSets&& value) { m_referenceSetsHasBeenSet = true; m_referenceSets = std::move(value); } /** *

The list of a rule group's reference sets.

*/ inline RuleGroup& WithReferenceSets(const ReferenceSets& value) { SetReferenceSets(value); return *this;} /** *

The list of a rule group's reference sets.

*/ inline RuleGroup& WithReferenceSets(ReferenceSets&& value) { SetReferenceSets(std::move(value)); return *this;} /** *

The stateful rules or stateless rules for the rule group.

*/ inline const RulesSource& GetRulesSource() const{ return m_rulesSource; } /** *

The stateful rules or stateless rules for the rule group.

*/ inline bool RulesSourceHasBeenSet() const { return m_rulesSourceHasBeenSet; } /** *

The stateful rules or stateless rules for the rule group.

*/ inline void SetRulesSource(const RulesSource& value) { m_rulesSourceHasBeenSet = true; m_rulesSource = value; } /** *

The stateful rules or stateless rules for the rule group.

*/ inline void SetRulesSource(RulesSource&& value) { m_rulesSourceHasBeenSet = true; m_rulesSource = std::move(value); } /** *

The stateful rules or stateless rules for the rule group.

*/ inline RuleGroup& WithRulesSource(const RulesSource& value) { SetRulesSource(value); return *this;} /** *

The stateful rules or stateless rules for the rule group.

*/ inline RuleGroup& WithRulesSource(RulesSource&& value) { SetRulesSource(std::move(value)); return *this;} /** *

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

*/ inline const StatefulRuleOptions& GetStatefulRuleOptions() const{ return m_statefulRuleOptions; } /** *

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

*/ inline bool StatefulRuleOptionsHasBeenSet() const { return m_statefulRuleOptionsHasBeenSet; } /** *

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

*/ inline void SetStatefulRuleOptions(const StatefulRuleOptions& value) { m_statefulRuleOptionsHasBeenSet = true; m_statefulRuleOptions = value; } /** *

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

*/ inline void SetStatefulRuleOptions(StatefulRuleOptions&& value) { m_statefulRuleOptionsHasBeenSet = true; m_statefulRuleOptions = std::move(value); } /** *

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

*/ inline RuleGroup& WithStatefulRuleOptions(const StatefulRuleOptions& value) { SetStatefulRuleOptions(value); return *this;} /** *

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

*/ inline RuleGroup& WithStatefulRuleOptions(StatefulRuleOptions&& value) { SetStatefulRuleOptions(std::move(value)); return *this;} private: RuleVariables m_ruleVariables; bool m_ruleVariablesHasBeenSet = false; ReferenceSets m_referenceSets; bool m_referenceSetsHasBeenSet = false; RulesSource m_rulesSource; bool m_rulesSourceHasBeenSet = false; StatefulRuleOptions m_statefulRuleOptions; bool m_statefulRuleOptionsHasBeenSet = false; }; } // namespace Model } // namespace NetworkFirewall } // namespace Aws