/** * 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 #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace EC2 { namespace Model { /** *

The tunnel options for a single VPN tunnel.

See Also:

AWS * API Reference

*/ class VpnTunnelOptionsSpecification { public: AWS_EC2_API VpnTunnelOptionsSpecification(); AWS_EC2_API VpnTunnelOptionsSpecification(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_EC2_API VpnTunnelOptionsSpecification& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_EC2_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; AWS_EC2_API void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

The range of inside IPv4 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same virtual private * gateway.

Constraints: A size /30 CIDR block from the * 169.254.0.0/16 range. The following CIDR blocks are reserved and * cannot be used:

  • 169.254.0.0/30

  • *

    169.254.1.0/30

  • 169.254.2.0/30 *

  • 169.254.3.0/30

  • * 169.254.4.0/30

  • 169.254.5.0/30

    *
  • 169.254.169.252/30

*/ inline const Aws::String& GetTunnelInsideCidr() const{ return m_tunnelInsideCidr; } /** *

The range of inside IPv4 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same virtual private * gateway.

Constraints: A size /30 CIDR block from the * 169.254.0.0/16 range. The following CIDR blocks are reserved and * cannot be used:

  • 169.254.0.0/30

  • *

    169.254.1.0/30

  • 169.254.2.0/30 *

  • 169.254.3.0/30

  • * 169.254.4.0/30

  • 169.254.5.0/30

    *
  • 169.254.169.252/30

*/ inline bool TunnelInsideCidrHasBeenSet() const { return m_tunnelInsideCidrHasBeenSet; } /** *

The range of inside IPv4 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same virtual private * gateway.

Constraints: A size /30 CIDR block from the * 169.254.0.0/16 range. The following CIDR blocks are reserved and * cannot be used:

  • 169.254.0.0/30

  • *

    169.254.1.0/30

  • 169.254.2.0/30 *

  • 169.254.3.0/30

  • * 169.254.4.0/30

  • 169.254.5.0/30

    *
  • 169.254.169.252/30

*/ inline void SetTunnelInsideCidr(const Aws::String& value) { m_tunnelInsideCidrHasBeenSet = true; m_tunnelInsideCidr = value; } /** *

The range of inside IPv4 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same virtual private * gateway.

Constraints: A size /30 CIDR block from the * 169.254.0.0/16 range. The following CIDR blocks are reserved and * cannot be used:

  • 169.254.0.0/30

  • *

    169.254.1.0/30

  • 169.254.2.0/30 *

  • 169.254.3.0/30

  • * 169.254.4.0/30

  • 169.254.5.0/30

    *
  • 169.254.169.252/30

*/ inline void SetTunnelInsideCidr(Aws::String&& value) { m_tunnelInsideCidrHasBeenSet = true; m_tunnelInsideCidr = std::move(value); } /** *

The range of inside IPv4 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same virtual private * gateway.

Constraints: A size /30 CIDR block from the * 169.254.0.0/16 range. The following CIDR blocks are reserved and * cannot be used:

  • 169.254.0.0/30

  • *

    169.254.1.0/30

  • 169.254.2.0/30 *

  • 169.254.3.0/30

  • * 169.254.4.0/30

  • 169.254.5.0/30

    *
  • 169.254.169.252/30

*/ inline void SetTunnelInsideCidr(const char* value) { m_tunnelInsideCidrHasBeenSet = true; m_tunnelInsideCidr.assign(value); } /** *

The range of inside IPv4 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same virtual private * gateway.

Constraints: A size /30 CIDR block from the * 169.254.0.0/16 range. The following CIDR blocks are reserved and * cannot be used:

  • 169.254.0.0/30

  • *

    169.254.1.0/30

  • 169.254.2.0/30 *

  • 169.254.3.0/30

  • * 169.254.4.0/30

  • 169.254.5.0/30

    *
  • 169.254.169.252/30

*/ inline VpnTunnelOptionsSpecification& WithTunnelInsideCidr(const Aws::String& value) { SetTunnelInsideCidr(value); return *this;} /** *

The range of inside IPv4 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same virtual private * gateway.

Constraints: A size /30 CIDR block from the * 169.254.0.0/16 range. The following CIDR blocks are reserved and * cannot be used:

  • 169.254.0.0/30

  • *

    169.254.1.0/30

  • 169.254.2.0/30 *

  • 169.254.3.0/30

  • * 169.254.4.0/30

  • 169.254.5.0/30

    *
  • 169.254.169.252/30

*/ inline VpnTunnelOptionsSpecification& WithTunnelInsideCidr(Aws::String&& value) { SetTunnelInsideCidr(std::move(value)); return *this;} /** *

The range of inside IPv4 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same virtual private * gateway.

Constraints: A size /30 CIDR block from the * 169.254.0.0/16 range. The following CIDR blocks are reserved and * cannot be used:

  • 169.254.0.0/30

  • *

    169.254.1.0/30

  • 169.254.2.0/30 *

  • 169.254.3.0/30

  • * 169.254.4.0/30

  • 169.254.5.0/30

    *
  • 169.254.169.252/30

*/ inline VpnTunnelOptionsSpecification& WithTunnelInsideCidr(const char* value) { SetTunnelInsideCidr(value); return *this;} /** *

The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same transit gateway.

*

Constraints: A size /126 CIDR block from the local fd00::/8 * range.

*/ inline const Aws::String& GetTunnelInsideIpv6Cidr() const{ return m_tunnelInsideIpv6Cidr; } /** *

The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same transit gateway.

*

Constraints: A size /126 CIDR block from the local fd00::/8 * range.

*/ inline bool TunnelInsideIpv6CidrHasBeenSet() const { return m_tunnelInsideIpv6CidrHasBeenSet; } /** *

The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same transit gateway.

*

Constraints: A size /126 CIDR block from the local fd00::/8 * range.

*/ inline void SetTunnelInsideIpv6Cidr(const Aws::String& value) { m_tunnelInsideIpv6CidrHasBeenSet = true; m_tunnelInsideIpv6Cidr = value; } /** *

The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same transit gateway.

*

Constraints: A size /126 CIDR block from the local fd00::/8 * range.

*/ inline void SetTunnelInsideIpv6Cidr(Aws::String&& value) { m_tunnelInsideIpv6CidrHasBeenSet = true; m_tunnelInsideIpv6Cidr = std::move(value); } /** *

The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same transit gateway.

*

Constraints: A size /126 CIDR block from the local fd00::/8 * range.

*/ inline void SetTunnelInsideIpv6Cidr(const char* value) { m_tunnelInsideIpv6CidrHasBeenSet = true; m_tunnelInsideIpv6Cidr.assign(value); } /** *

The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same transit gateway.

*

Constraints: A size /126 CIDR block from the local fd00::/8 * range.

*/ inline VpnTunnelOptionsSpecification& WithTunnelInsideIpv6Cidr(const Aws::String& value) { SetTunnelInsideIpv6Cidr(value); return *this;} /** *

The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same transit gateway.

*

Constraints: A size /126 CIDR block from the local fd00::/8 * range.

*/ inline VpnTunnelOptionsSpecification& WithTunnelInsideIpv6Cidr(Aws::String&& value) { SetTunnelInsideIpv6Cidr(std::move(value)); return *this;} /** *

The range of inside IPv6 addresses for the tunnel. Any specified CIDR blocks * must be unique across all VPN connections that use the same transit gateway.

*

Constraints: A size /126 CIDR block from the local fd00::/8 * range.

*/ inline VpnTunnelOptionsSpecification& WithTunnelInsideIpv6Cidr(const char* value) { SetTunnelInsideIpv6Cidr(value); return *this;} /** *

The pre-shared key (PSK) to establish initial authentication between the * virtual private gateway and customer gateway.

Constraints: Allowed * characters are alphanumeric characters, periods (.), and underscores (_). Must * be between 8 and 64 characters in length and cannot start with zero (0).

*/ inline const Aws::String& GetPreSharedKey() const{ return m_preSharedKey; } /** *

The pre-shared key (PSK) to establish initial authentication between the * virtual private gateway and customer gateway.

Constraints: Allowed * characters are alphanumeric characters, periods (.), and underscores (_). Must * be between 8 and 64 characters in length and cannot start with zero (0).

*/ inline bool PreSharedKeyHasBeenSet() const { return m_preSharedKeyHasBeenSet; } /** *

The pre-shared key (PSK) to establish initial authentication between the * virtual private gateway and customer gateway.

Constraints: Allowed * characters are alphanumeric characters, periods (.), and underscores (_). Must * be between 8 and 64 characters in length and cannot start with zero (0).

*/ inline void SetPreSharedKey(const Aws::String& value) { m_preSharedKeyHasBeenSet = true; m_preSharedKey = value; } /** *

The pre-shared key (PSK) to establish initial authentication between the * virtual private gateway and customer gateway.

Constraints: Allowed * characters are alphanumeric characters, periods (.), and underscores (_). Must * be between 8 and 64 characters in length and cannot start with zero (0).

*/ inline void SetPreSharedKey(Aws::String&& value) { m_preSharedKeyHasBeenSet = true; m_preSharedKey = std::move(value); } /** *

The pre-shared key (PSK) to establish initial authentication between the * virtual private gateway and customer gateway.

Constraints: Allowed * characters are alphanumeric characters, periods (.), and underscores (_). Must * be between 8 and 64 characters in length and cannot start with zero (0).

*/ inline void SetPreSharedKey(const char* value) { m_preSharedKeyHasBeenSet = true; m_preSharedKey.assign(value); } /** *

The pre-shared key (PSK) to establish initial authentication between the * virtual private gateway and customer gateway.

Constraints: Allowed * characters are alphanumeric characters, periods (.), and underscores (_). Must * be between 8 and 64 characters in length and cannot start with zero (0).

*/ inline VpnTunnelOptionsSpecification& WithPreSharedKey(const Aws::String& value) { SetPreSharedKey(value); return *this;} /** *

The pre-shared key (PSK) to establish initial authentication between the * virtual private gateway and customer gateway.

Constraints: Allowed * characters are alphanumeric characters, periods (.), and underscores (_). Must * be between 8 and 64 characters in length and cannot start with zero (0).

*/ inline VpnTunnelOptionsSpecification& WithPreSharedKey(Aws::String&& value) { SetPreSharedKey(std::move(value)); return *this;} /** *

The pre-shared key (PSK) to establish initial authentication between the * virtual private gateway and customer gateway.

Constraints: Allowed * characters are alphanumeric characters, periods (.), and underscores (_). Must * be between 8 and 64 characters in length and cannot start with zero (0).

*/ inline VpnTunnelOptionsSpecification& WithPreSharedKey(const char* value) { SetPreSharedKey(value); return *this;} /** *

The lifetime for phase 1 of the IKE negotiation, in seconds.

*

Constraints: A value between 900 and 28,800.

Default: * 28800

*/ inline int GetPhase1LifetimeSeconds() const{ return m_phase1LifetimeSeconds; } /** *

The lifetime for phase 1 of the IKE negotiation, in seconds.

*

Constraints: A value between 900 and 28,800.

Default: * 28800

*/ inline bool Phase1LifetimeSecondsHasBeenSet() const { return m_phase1LifetimeSecondsHasBeenSet; } /** *

The lifetime for phase 1 of the IKE negotiation, in seconds.

*

Constraints: A value between 900 and 28,800.

Default: * 28800

*/ inline void SetPhase1LifetimeSeconds(int value) { m_phase1LifetimeSecondsHasBeenSet = true; m_phase1LifetimeSeconds = value; } /** *

The lifetime for phase 1 of the IKE negotiation, in seconds.

*

Constraints: A value between 900 and 28,800.

Default: * 28800

*/ inline VpnTunnelOptionsSpecification& WithPhase1LifetimeSeconds(int value) { SetPhase1LifetimeSeconds(value); return *this;} /** *

The lifetime for phase 2 of the IKE negotiation, in seconds.

*

Constraints: A value between 900 and 3,600. The value must be less than the * value for Phase1LifetimeSeconds.

Default: 3600 *

*/ inline int GetPhase2LifetimeSeconds() const{ return m_phase2LifetimeSeconds; } /** *

The lifetime for phase 2 of the IKE negotiation, in seconds.

*

Constraints: A value between 900 and 3,600. The value must be less than the * value for Phase1LifetimeSeconds.

Default: 3600 *

*/ inline bool Phase2LifetimeSecondsHasBeenSet() const { return m_phase2LifetimeSecondsHasBeenSet; } /** *

The lifetime for phase 2 of the IKE negotiation, in seconds.

*

Constraints: A value between 900 and 3,600. The value must be less than the * value for Phase1LifetimeSeconds.

Default: 3600 *

*/ inline void SetPhase2LifetimeSeconds(int value) { m_phase2LifetimeSecondsHasBeenSet = true; m_phase2LifetimeSeconds = value; } /** *

The lifetime for phase 2 of the IKE negotiation, in seconds.

*

Constraints: A value between 900 and 3,600. The value must be less than the * value for Phase1LifetimeSeconds.

Default: 3600 *

*/ inline VpnTunnelOptionsSpecification& WithPhase2LifetimeSeconds(int value) { SetPhase2LifetimeSeconds(value); return *this;} /** *

The margin time, in seconds, before the phase 2 lifetime expires, during * which the Amazon Web Services side of the VPN connection performs an IKE rekey. * The exact time of the rekey is randomly selected based on the value for * RekeyFuzzPercentage.

Constraints: A value between 60 and * half of Phase2LifetimeSeconds.

Default: 540 *

*/ inline int GetRekeyMarginTimeSeconds() const{ return m_rekeyMarginTimeSeconds; } /** *

The margin time, in seconds, before the phase 2 lifetime expires, during * which the Amazon Web Services side of the VPN connection performs an IKE rekey. * The exact time of the rekey is randomly selected based on the value for * RekeyFuzzPercentage.

Constraints: A value between 60 and * half of Phase2LifetimeSeconds.

Default: 540 *

*/ inline bool RekeyMarginTimeSecondsHasBeenSet() const { return m_rekeyMarginTimeSecondsHasBeenSet; } /** *

The margin time, in seconds, before the phase 2 lifetime expires, during * which the Amazon Web Services side of the VPN connection performs an IKE rekey. * The exact time of the rekey is randomly selected based on the value for * RekeyFuzzPercentage.

Constraints: A value between 60 and * half of Phase2LifetimeSeconds.

Default: 540 *

*/ inline void SetRekeyMarginTimeSeconds(int value) { m_rekeyMarginTimeSecondsHasBeenSet = true; m_rekeyMarginTimeSeconds = value; } /** *

The margin time, in seconds, before the phase 2 lifetime expires, during * which the Amazon Web Services side of the VPN connection performs an IKE rekey. * The exact time of the rekey is randomly selected based on the value for * RekeyFuzzPercentage.

Constraints: A value between 60 and * half of Phase2LifetimeSeconds.

Default: 540 *

*/ inline VpnTunnelOptionsSpecification& WithRekeyMarginTimeSeconds(int value) { SetRekeyMarginTimeSeconds(value); return *this;} /** *

The percentage of the rekey window (determined by * RekeyMarginTimeSeconds) during which the rekey time is randomly * selected.

Constraints: A value between 0 and 100.

Default: * 100

*/ inline int GetRekeyFuzzPercentage() const{ return m_rekeyFuzzPercentage; } /** *

The percentage of the rekey window (determined by * RekeyMarginTimeSeconds) during which the rekey time is randomly * selected.

Constraints: A value between 0 and 100.

Default: * 100

*/ inline bool RekeyFuzzPercentageHasBeenSet() const { return m_rekeyFuzzPercentageHasBeenSet; } /** *

The percentage of the rekey window (determined by * RekeyMarginTimeSeconds) during which the rekey time is randomly * selected.

Constraints: A value between 0 and 100.

Default: * 100

*/ inline void SetRekeyFuzzPercentage(int value) { m_rekeyFuzzPercentageHasBeenSet = true; m_rekeyFuzzPercentage = value; } /** *

The percentage of the rekey window (determined by * RekeyMarginTimeSeconds) during which the rekey time is randomly * selected.

Constraints: A value between 0 and 100.

Default: * 100

*/ inline VpnTunnelOptionsSpecification& WithRekeyFuzzPercentage(int value) { SetRekeyFuzzPercentage(value); return *this;} /** *

The number of packets in an IKE replay window.

Constraints: A value * between 64 and 2048.

Default: 1024

*/ inline int GetReplayWindowSize() const{ return m_replayWindowSize; } /** *

The number of packets in an IKE replay window.

Constraints: A value * between 64 and 2048.

Default: 1024

*/ inline bool ReplayWindowSizeHasBeenSet() const { return m_replayWindowSizeHasBeenSet; } /** *

The number of packets in an IKE replay window.

Constraints: A value * between 64 and 2048.

Default: 1024

*/ inline void SetReplayWindowSize(int value) { m_replayWindowSizeHasBeenSet = true; m_replayWindowSize = value; } /** *

The number of packets in an IKE replay window.

Constraints: A value * between 64 and 2048.

Default: 1024

*/ inline VpnTunnelOptionsSpecification& WithReplayWindowSize(int value) { SetReplayWindowSize(value); return *this;} /** *

The number of seconds after which a DPD timeout occurs.

Constraints: A * value greater than or equal to 30.

Default: 30

*/ inline int GetDPDTimeoutSeconds() const{ return m_dPDTimeoutSeconds; } /** *

The number of seconds after which a DPD timeout occurs.

Constraints: A * value greater than or equal to 30.

Default: 30

*/ inline bool DPDTimeoutSecondsHasBeenSet() const { return m_dPDTimeoutSecondsHasBeenSet; } /** *

The number of seconds after which a DPD timeout occurs.

Constraints: A * value greater than or equal to 30.

Default: 30

*/ inline void SetDPDTimeoutSeconds(int value) { m_dPDTimeoutSecondsHasBeenSet = true; m_dPDTimeoutSeconds = value; } /** *

The number of seconds after which a DPD timeout occurs.

Constraints: A * value greater than or equal to 30.

Default: 30

*/ inline VpnTunnelOptionsSpecification& WithDPDTimeoutSeconds(int value) { SetDPDTimeoutSeconds(value); return *this;} /** *

The action to take after DPD timeout occurs. Specify restart to * restart the IKE initiation. Specify clear to end the IKE * session.

Valid Values: clear | none | * restart

Default: clear

*/ inline const Aws::String& GetDPDTimeoutAction() const{ return m_dPDTimeoutAction; } /** *

The action to take after DPD timeout occurs. Specify restart to * restart the IKE initiation. Specify clear to end the IKE * session.

Valid Values: clear | none | * restart

Default: clear

*/ inline bool DPDTimeoutActionHasBeenSet() const { return m_dPDTimeoutActionHasBeenSet; } /** *

The action to take after DPD timeout occurs. Specify restart to * restart the IKE initiation. Specify clear to end the IKE * session.

Valid Values: clear | none | * restart

Default: clear

*/ inline void SetDPDTimeoutAction(const Aws::String& value) { m_dPDTimeoutActionHasBeenSet = true; m_dPDTimeoutAction = value; } /** *

The action to take after DPD timeout occurs. Specify restart to * restart the IKE initiation. Specify clear to end the IKE * session.

Valid Values: clear | none | * restart

Default: clear

*/ inline void SetDPDTimeoutAction(Aws::String&& value) { m_dPDTimeoutActionHasBeenSet = true; m_dPDTimeoutAction = std::move(value); } /** *

The action to take after DPD timeout occurs. Specify restart to * restart the IKE initiation. Specify clear to end the IKE * session.

Valid Values: clear | none | * restart

Default: clear

*/ inline void SetDPDTimeoutAction(const char* value) { m_dPDTimeoutActionHasBeenSet = true; m_dPDTimeoutAction.assign(value); } /** *

The action to take after DPD timeout occurs. Specify restart to * restart the IKE initiation. Specify clear to end the IKE * session.

Valid Values: clear | none | * restart

Default: clear

*/ inline VpnTunnelOptionsSpecification& WithDPDTimeoutAction(const Aws::String& value) { SetDPDTimeoutAction(value); return *this;} /** *

The action to take after DPD timeout occurs. Specify restart to * restart the IKE initiation. Specify clear to end the IKE * session.

Valid Values: clear | none | * restart

Default: clear

*/ inline VpnTunnelOptionsSpecification& WithDPDTimeoutAction(Aws::String&& value) { SetDPDTimeoutAction(std::move(value)); return *this;} /** *

The action to take after DPD timeout occurs. Specify restart to * restart the IKE initiation. Specify clear to end the IKE * session.

Valid Values: clear | none | * restart

Default: clear

*/ inline VpnTunnelOptionsSpecification& WithDPDTimeoutAction(const char* value) { SetDPDTimeoutAction(value); return *this;} /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline const Aws::Vector& GetPhase1EncryptionAlgorithms() const{ return m_phase1EncryptionAlgorithms; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline bool Phase1EncryptionAlgorithmsHasBeenSet() const { return m_phase1EncryptionAlgorithmsHasBeenSet; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline void SetPhase1EncryptionAlgorithms(const Aws::Vector& value) { m_phase1EncryptionAlgorithmsHasBeenSet = true; m_phase1EncryptionAlgorithms = value; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline void SetPhase1EncryptionAlgorithms(Aws::Vector&& value) { m_phase1EncryptionAlgorithmsHasBeenSet = true; m_phase1EncryptionAlgorithms = std::move(value); } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline VpnTunnelOptionsSpecification& WithPhase1EncryptionAlgorithms(const Aws::Vector& value) { SetPhase1EncryptionAlgorithms(value); return *this;} /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline VpnTunnelOptionsSpecification& WithPhase1EncryptionAlgorithms(Aws::Vector&& value) { SetPhase1EncryptionAlgorithms(std::move(value)); return *this;} /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline VpnTunnelOptionsSpecification& AddPhase1EncryptionAlgorithms(const Phase1EncryptionAlgorithmsRequestListValue& value) { m_phase1EncryptionAlgorithmsHasBeenSet = true; m_phase1EncryptionAlgorithms.push_back(value); return *this; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline VpnTunnelOptionsSpecification& AddPhase1EncryptionAlgorithms(Phase1EncryptionAlgorithmsRequestListValue&& value) { m_phase1EncryptionAlgorithmsHasBeenSet = true; m_phase1EncryptionAlgorithms.push_back(std::move(value)); return *this; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline const Aws::Vector& GetPhase2EncryptionAlgorithms() const{ return m_phase2EncryptionAlgorithms; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline bool Phase2EncryptionAlgorithmsHasBeenSet() const { return m_phase2EncryptionAlgorithmsHasBeenSet; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline void SetPhase2EncryptionAlgorithms(const Aws::Vector& value) { m_phase2EncryptionAlgorithmsHasBeenSet = true; m_phase2EncryptionAlgorithms = value; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline void SetPhase2EncryptionAlgorithms(Aws::Vector&& value) { m_phase2EncryptionAlgorithmsHasBeenSet = true; m_phase2EncryptionAlgorithms = std::move(value); } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline VpnTunnelOptionsSpecification& WithPhase2EncryptionAlgorithms(const Aws::Vector& value) { SetPhase2EncryptionAlgorithms(value); return *this;} /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline VpnTunnelOptionsSpecification& WithPhase2EncryptionAlgorithms(Aws::Vector&& value) { SetPhase2EncryptionAlgorithms(std::move(value)); return *this;} /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline VpnTunnelOptionsSpecification& AddPhase2EncryptionAlgorithms(const Phase2EncryptionAlgorithmsRequestListValue& value) { m_phase2EncryptionAlgorithmsHasBeenSet = true; m_phase2EncryptionAlgorithms.push_back(value); return *this; } /** *

One or more encryption algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: AES128 | * AES256 | AES128-GCM-16 | AES256-GCM-16 *

*/ inline VpnTunnelOptionsSpecification& AddPhase2EncryptionAlgorithms(Phase2EncryptionAlgorithmsRequestListValue&& value) { m_phase2EncryptionAlgorithmsHasBeenSet = true; m_phase2EncryptionAlgorithms.push_back(std::move(value)); return *this; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline const Aws::Vector& GetPhase1IntegrityAlgorithms() const{ return m_phase1IntegrityAlgorithms; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline bool Phase1IntegrityAlgorithmsHasBeenSet() const { return m_phase1IntegrityAlgorithmsHasBeenSet; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline void SetPhase1IntegrityAlgorithms(const Aws::Vector& value) { m_phase1IntegrityAlgorithmsHasBeenSet = true; m_phase1IntegrityAlgorithms = value; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline void SetPhase1IntegrityAlgorithms(Aws::Vector&& value) { m_phase1IntegrityAlgorithmsHasBeenSet = true; m_phase1IntegrityAlgorithms = std::move(value); } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline VpnTunnelOptionsSpecification& WithPhase1IntegrityAlgorithms(const Aws::Vector& value) { SetPhase1IntegrityAlgorithms(value); return *this;} /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline VpnTunnelOptionsSpecification& WithPhase1IntegrityAlgorithms(Aws::Vector&& value) { SetPhase1IntegrityAlgorithms(std::move(value)); return *this;} /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline VpnTunnelOptionsSpecification& AddPhase1IntegrityAlgorithms(const Phase1IntegrityAlgorithmsRequestListValue& value) { m_phase1IntegrityAlgorithmsHasBeenSet = true; m_phase1IntegrityAlgorithms.push_back(value); return *this; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 1 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline VpnTunnelOptionsSpecification& AddPhase1IntegrityAlgorithms(Phase1IntegrityAlgorithmsRequestListValue&& value) { m_phase1IntegrityAlgorithmsHasBeenSet = true; m_phase1IntegrityAlgorithms.push_back(std::move(value)); return *this; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline const Aws::Vector& GetPhase2IntegrityAlgorithms() const{ return m_phase2IntegrityAlgorithms; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline bool Phase2IntegrityAlgorithmsHasBeenSet() const { return m_phase2IntegrityAlgorithmsHasBeenSet; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline void SetPhase2IntegrityAlgorithms(const Aws::Vector& value) { m_phase2IntegrityAlgorithmsHasBeenSet = true; m_phase2IntegrityAlgorithms = value; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline void SetPhase2IntegrityAlgorithms(Aws::Vector&& value) { m_phase2IntegrityAlgorithmsHasBeenSet = true; m_phase2IntegrityAlgorithms = std::move(value); } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline VpnTunnelOptionsSpecification& WithPhase2IntegrityAlgorithms(const Aws::Vector& value) { SetPhase2IntegrityAlgorithms(value); return *this;} /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline VpnTunnelOptionsSpecification& WithPhase2IntegrityAlgorithms(Aws::Vector&& value) { SetPhase2IntegrityAlgorithms(std::move(value)); return *this;} /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline VpnTunnelOptionsSpecification& AddPhase2IntegrityAlgorithms(const Phase2IntegrityAlgorithmsRequestListValue& value) { m_phase2IntegrityAlgorithmsHasBeenSet = true; m_phase2IntegrityAlgorithms.push_back(value); return *this; } /** *

One or more integrity algorithms that are permitted for the VPN tunnel for * phase 2 IKE negotiations.

Valid values: SHA1 | * SHA2-256 | SHA2-384 | SHA2-512

*/ inline VpnTunnelOptionsSpecification& AddPhase2IntegrityAlgorithms(Phase2IntegrityAlgorithmsRequestListValue&& value) { m_phase2IntegrityAlgorithmsHasBeenSet = true; m_phase2IntegrityAlgorithms.push_back(std::move(value)); return *this; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 1 IKE negotiations.

Valid values: 2 | * 14 | 15 | 16 | 17 | * 18 | 19 | 20 | 21 | * 22 | 23 | 24

*/ inline const Aws::Vector& GetPhase1DHGroupNumbers() const{ return m_phase1DHGroupNumbers; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 1 IKE negotiations.

Valid values: 2 | * 14 | 15 | 16 | 17 | * 18 | 19 | 20 | 21 | * 22 | 23 | 24

*/ inline bool Phase1DHGroupNumbersHasBeenSet() const { return m_phase1DHGroupNumbersHasBeenSet; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 1 IKE negotiations.

Valid values: 2 | * 14 | 15 | 16 | 17 | * 18 | 19 | 20 | 21 | * 22 | 23 | 24

*/ inline void SetPhase1DHGroupNumbers(const Aws::Vector& value) { m_phase1DHGroupNumbersHasBeenSet = true; m_phase1DHGroupNumbers = value; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 1 IKE negotiations.

Valid values: 2 | * 14 | 15 | 16 | 17 | * 18 | 19 | 20 | 21 | * 22 | 23 | 24

*/ inline void SetPhase1DHGroupNumbers(Aws::Vector&& value) { m_phase1DHGroupNumbersHasBeenSet = true; m_phase1DHGroupNumbers = std::move(value); } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 1 IKE negotiations.

Valid values: 2 | * 14 | 15 | 16 | 17 | * 18 | 19 | 20 | 21 | * 22 | 23 | 24

*/ inline VpnTunnelOptionsSpecification& WithPhase1DHGroupNumbers(const Aws::Vector& value) { SetPhase1DHGroupNumbers(value); return *this;} /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 1 IKE negotiations.

Valid values: 2 | * 14 | 15 | 16 | 17 | * 18 | 19 | 20 | 21 | * 22 | 23 | 24

*/ inline VpnTunnelOptionsSpecification& WithPhase1DHGroupNumbers(Aws::Vector&& value) { SetPhase1DHGroupNumbers(std::move(value)); return *this;} /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 1 IKE negotiations.

Valid values: 2 | * 14 | 15 | 16 | 17 | * 18 | 19 | 20 | 21 | * 22 | 23 | 24

*/ inline VpnTunnelOptionsSpecification& AddPhase1DHGroupNumbers(const Phase1DHGroupNumbersRequestListValue& value) { m_phase1DHGroupNumbersHasBeenSet = true; m_phase1DHGroupNumbers.push_back(value); return *this; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 1 IKE negotiations.

Valid values: 2 | * 14 | 15 | 16 | 17 | * 18 | 19 | 20 | 21 | * 22 | 23 | 24

*/ inline VpnTunnelOptionsSpecification& AddPhase1DHGroupNumbers(Phase1DHGroupNumbersRequestListValue&& value) { m_phase1DHGroupNumbersHasBeenSet = true; m_phase1DHGroupNumbers.push_back(std::move(value)); return *this; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 2 IKE negotiations.

Valid values: 2 | * 5 | 14 | 15 | 16 | * 17 | 18 | 19 | 20 | * 21 | 22 | 23 | 24

*/ inline const Aws::Vector& GetPhase2DHGroupNumbers() const{ return m_phase2DHGroupNumbers; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 2 IKE negotiations.

Valid values: 2 | * 5 | 14 | 15 | 16 | * 17 | 18 | 19 | 20 | * 21 | 22 | 23 | 24

*/ inline bool Phase2DHGroupNumbersHasBeenSet() const { return m_phase2DHGroupNumbersHasBeenSet; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 2 IKE negotiations.

Valid values: 2 | * 5 | 14 | 15 | 16 | * 17 | 18 | 19 | 20 | * 21 | 22 | 23 | 24

*/ inline void SetPhase2DHGroupNumbers(const Aws::Vector& value) { m_phase2DHGroupNumbersHasBeenSet = true; m_phase2DHGroupNumbers = value; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 2 IKE negotiations.

Valid values: 2 | * 5 | 14 | 15 | 16 | * 17 | 18 | 19 | 20 | * 21 | 22 | 23 | 24

*/ inline void SetPhase2DHGroupNumbers(Aws::Vector&& value) { m_phase2DHGroupNumbersHasBeenSet = true; m_phase2DHGroupNumbers = std::move(value); } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 2 IKE negotiations.

Valid values: 2 | * 5 | 14 | 15 | 16 | * 17 | 18 | 19 | 20 | * 21 | 22 | 23 | 24

*/ inline VpnTunnelOptionsSpecification& WithPhase2DHGroupNumbers(const Aws::Vector& value) { SetPhase2DHGroupNumbers(value); return *this;} /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 2 IKE negotiations.

Valid values: 2 | * 5 | 14 | 15 | 16 | * 17 | 18 | 19 | 20 | * 21 | 22 | 23 | 24

*/ inline VpnTunnelOptionsSpecification& WithPhase2DHGroupNumbers(Aws::Vector&& value) { SetPhase2DHGroupNumbers(std::move(value)); return *this;} /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 2 IKE negotiations.

Valid values: 2 | * 5 | 14 | 15 | 16 | * 17 | 18 | 19 | 20 | * 21 | 22 | 23 | 24

*/ inline VpnTunnelOptionsSpecification& AddPhase2DHGroupNumbers(const Phase2DHGroupNumbersRequestListValue& value) { m_phase2DHGroupNumbersHasBeenSet = true; m_phase2DHGroupNumbers.push_back(value); return *this; } /** *

One or more Diffie-Hellman group numbers that are permitted for the VPN * tunnel for phase 2 IKE negotiations.

Valid values: 2 | * 5 | 14 | 15 | 16 | * 17 | 18 | 19 | 20 | * 21 | 22 | 23 | 24

*/ inline VpnTunnelOptionsSpecification& AddPhase2DHGroupNumbers(Phase2DHGroupNumbersRequestListValue&& value) { m_phase2DHGroupNumbersHasBeenSet = true; m_phase2DHGroupNumbers.push_back(std::move(value)); return *this; } /** *

The IKE versions that are permitted for the VPN tunnel.

Valid values: * ikev1 | ikev2

*/ inline const Aws::Vector& GetIKEVersions() const{ return m_iKEVersions; } /** *

The IKE versions that are permitted for the VPN tunnel.

Valid values: * ikev1 | ikev2

*/ inline bool IKEVersionsHasBeenSet() const { return m_iKEVersionsHasBeenSet; } /** *

The IKE versions that are permitted for the VPN tunnel.

Valid values: * ikev1 | ikev2

*/ inline void SetIKEVersions(const Aws::Vector& value) { m_iKEVersionsHasBeenSet = true; m_iKEVersions = value; } /** *

The IKE versions that are permitted for the VPN tunnel.

Valid values: * ikev1 | ikev2

*/ inline void SetIKEVersions(Aws::Vector&& value) { m_iKEVersionsHasBeenSet = true; m_iKEVersions = std::move(value); } /** *

The IKE versions that are permitted for the VPN tunnel.

Valid values: * ikev1 | ikev2

*/ inline VpnTunnelOptionsSpecification& WithIKEVersions(const Aws::Vector& value) { SetIKEVersions(value); return *this;} /** *

The IKE versions that are permitted for the VPN tunnel.

Valid values: * ikev1 | ikev2

*/ inline VpnTunnelOptionsSpecification& WithIKEVersions(Aws::Vector&& value) { SetIKEVersions(std::move(value)); return *this;} /** *

The IKE versions that are permitted for the VPN tunnel.

Valid values: * ikev1 | ikev2

*/ inline VpnTunnelOptionsSpecification& AddIKEVersions(const IKEVersionsRequestListValue& value) { m_iKEVersionsHasBeenSet = true; m_iKEVersions.push_back(value); return *this; } /** *

The IKE versions that are permitted for the VPN tunnel.

Valid values: * ikev1 | ikev2

*/ inline VpnTunnelOptionsSpecification& AddIKEVersions(IKEVersionsRequestListValue&& value) { m_iKEVersionsHasBeenSet = true; m_iKEVersions.push_back(std::move(value)); return *this; } /** *

The action to take when the establishing the tunnel for the VPN connection. * By default, your customer gateway device must initiate the IKE negotiation and * bring up the tunnel. Specify start for Amazon Web Services to * initiate the IKE negotiation.

Valid Values: add | * start

Default: add

*/ inline const Aws::String& GetStartupAction() const{ return m_startupAction; } /** *

The action to take when the establishing the tunnel for the VPN connection. * By default, your customer gateway device must initiate the IKE negotiation and * bring up the tunnel. Specify start for Amazon Web Services to * initiate the IKE negotiation.

Valid Values: add | * start

Default: add

*/ inline bool StartupActionHasBeenSet() const { return m_startupActionHasBeenSet; } /** *

The action to take when the establishing the tunnel for the VPN connection. * By default, your customer gateway device must initiate the IKE negotiation and * bring up the tunnel. Specify start for Amazon Web Services to * initiate the IKE negotiation.

Valid Values: add | * start

Default: add

*/ inline void SetStartupAction(const Aws::String& value) { m_startupActionHasBeenSet = true; m_startupAction = value; } /** *

The action to take when the establishing the tunnel for the VPN connection. * By default, your customer gateway device must initiate the IKE negotiation and * bring up the tunnel. Specify start for Amazon Web Services to * initiate the IKE negotiation.

Valid Values: add | * start

Default: add

*/ inline void SetStartupAction(Aws::String&& value) { m_startupActionHasBeenSet = true; m_startupAction = std::move(value); } /** *

The action to take when the establishing the tunnel for the VPN connection. * By default, your customer gateway device must initiate the IKE negotiation and * bring up the tunnel. Specify start for Amazon Web Services to * initiate the IKE negotiation.

Valid Values: add | * start

Default: add

*/ inline void SetStartupAction(const char* value) { m_startupActionHasBeenSet = true; m_startupAction.assign(value); } /** *

The action to take when the establishing the tunnel for the VPN connection. * By default, your customer gateway device must initiate the IKE negotiation and * bring up the tunnel. Specify start for Amazon Web Services to * initiate the IKE negotiation.

Valid Values: add | * start

Default: add

*/ inline VpnTunnelOptionsSpecification& WithStartupAction(const Aws::String& value) { SetStartupAction(value); return *this;} /** *

The action to take when the establishing the tunnel for the VPN connection. * By default, your customer gateway device must initiate the IKE negotiation and * bring up the tunnel. Specify start for Amazon Web Services to * initiate the IKE negotiation.

Valid Values: add | * start

Default: add

*/ inline VpnTunnelOptionsSpecification& WithStartupAction(Aws::String&& value) { SetStartupAction(std::move(value)); return *this;} /** *

The action to take when the establishing the tunnel for the VPN connection. * By default, your customer gateway device must initiate the IKE negotiation and * bring up the tunnel. Specify start for Amazon Web Services to * initiate the IKE negotiation.

Valid Values: add | * start

Default: add

*/ inline VpnTunnelOptionsSpecification& WithStartupAction(const char* value) { SetStartupAction(value); return *this;} /** *

Options for logging VPN tunnel activity.

*/ inline const VpnTunnelLogOptionsSpecification& GetLogOptions() const{ return m_logOptions; } /** *

Options for logging VPN tunnel activity.

*/ inline bool LogOptionsHasBeenSet() const { return m_logOptionsHasBeenSet; } /** *

Options for logging VPN tunnel activity.

*/ inline void SetLogOptions(const VpnTunnelLogOptionsSpecification& value) { m_logOptionsHasBeenSet = true; m_logOptions = value; } /** *

Options for logging VPN tunnel activity.

*/ inline void SetLogOptions(VpnTunnelLogOptionsSpecification&& value) { m_logOptionsHasBeenSet = true; m_logOptions = std::move(value); } /** *

Options for logging VPN tunnel activity.

*/ inline VpnTunnelOptionsSpecification& WithLogOptions(const VpnTunnelLogOptionsSpecification& value) { SetLogOptions(value); return *this;} /** *

Options for logging VPN tunnel activity.

*/ inline VpnTunnelOptionsSpecification& WithLogOptions(VpnTunnelLogOptionsSpecification&& value) { SetLogOptions(std::move(value)); return *this;} /** *

Turn on or off tunnel endpoint lifecycle control feature.

*/ inline bool GetEnableTunnelLifecycleControl() const{ return m_enableTunnelLifecycleControl; } /** *

Turn on or off tunnel endpoint lifecycle control feature.

*/ inline bool EnableTunnelLifecycleControlHasBeenSet() const { return m_enableTunnelLifecycleControlHasBeenSet; } /** *

Turn on or off tunnel endpoint lifecycle control feature.

*/ inline void SetEnableTunnelLifecycleControl(bool value) { m_enableTunnelLifecycleControlHasBeenSet = true; m_enableTunnelLifecycleControl = value; } /** *

Turn on or off tunnel endpoint lifecycle control feature.

*/ inline VpnTunnelOptionsSpecification& WithEnableTunnelLifecycleControl(bool value) { SetEnableTunnelLifecycleControl(value); return *this;} private: Aws::String m_tunnelInsideCidr; bool m_tunnelInsideCidrHasBeenSet = false; Aws::String m_tunnelInsideIpv6Cidr; bool m_tunnelInsideIpv6CidrHasBeenSet = false; Aws::String m_preSharedKey; bool m_preSharedKeyHasBeenSet = false; int m_phase1LifetimeSeconds; bool m_phase1LifetimeSecondsHasBeenSet = false; int m_phase2LifetimeSeconds; bool m_phase2LifetimeSecondsHasBeenSet = false; int m_rekeyMarginTimeSeconds; bool m_rekeyMarginTimeSecondsHasBeenSet = false; int m_rekeyFuzzPercentage; bool m_rekeyFuzzPercentageHasBeenSet = false; int m_replayWindowSize; bool m_replayWindowSizeHasBeenSet = false; int m_dPDTimeoutSeconds; bool m_dPDTimeoutSecondsHasBeenSet = false; Aws::String m_dPDTimeoutAction; bool m_dPDTimeoutActionHasBeenSet = false; Aws::Vector m_phase1EncryptionAlgorithms; bool m_phase1EncryptionAlgorithmsHasBeenSet = false; Aws::Vector m_phase2EncryptionAlgorithms; bool m_phase2EncryptionAlgorithmsHasBeenSet = false; Aws::Vector m_phase1IntegrityAlgorithms; bool m_phase1IntegrityAlgorithmsHasBeenSet = false; Aws::Vector m_phase2IntegrityAlgorithms; bool m_phase2IntegrityAlgorithmsHasBeenSet = false; Aws::Vector m_phase1DHGroupNumbers; bool m_phase1DHGroupNumbersHasBeenSet = false; Aws::Vector m_phase2DHGroupNumbers; bool m_phase2DHGroupNumbersHasBeenSet = false; Aws::Vector m_iKEVersions; bool m_iKEVersionsHasBeenSet = false; Aws::String m_startupAction; bool m_startupActionHasBeenSet = false; VpnTunnelLogOptionsSpecification m_logOptions; bool m_logOptionsHasBeenSet = false; bool m_enableTunnelLifecycleControl; bool m_enableTunnelLifecycleControlHasBeenSet = false; }; } // namespace Model } // namespace EC2 } // namespace Aws