// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace Pulumiverse.Fortios
{
    /// <summary>
    /// Configure VDOM settings.
    /// 
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using System.Linq;
    /// using Pulumi;
    /// using Fortios = Pulumiverse.Fortios;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var trname = new Fortios.SystemSettings("trname", new()
    ///     {
    ///         AllowLinkdownPath = "disable",
    ///         GuiWebfilter = "enable",
    ///         Opmode = "nat",
    ///         SipSslPort = 5061,
    ///         Status = "enable",
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// System Settings can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/systemSettings:SystemSettings labelname SystemSettings
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/systemSettings:SystemSettings labelname SystemSettings
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/systemSettings:SystemSettings")]
    public partial class SystemSettings : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Enable/disable link down path. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("allowLinkdownPath")]
        public Output<string> AllowLinkdownPath { get; private set; } = null!;

        /// <summary>
        /// Enable/disable allowing interface subnets to use overlapping IP addresses. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("allowSubnetOverlap")]
        public Output<string> AllowSubnetOverlap { get; private set; } = null!;

        /// <summary>
        /// Enable/disable application bandwidth tracking. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("applicationBandwidthTracking")]
        public Output<string> ApplicationBandwidthTracking { get; private set; } = null!;

        /// <summary>
        /// Enable/disable IPv4 asymmetric routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("asymroute")]
        public Output<string> Asymroute { get; private set; } = null!;

        /// <summary>
        /// Enable/disable asymmetric IPv6 routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("asymroute6")]
        public Output<string> Asymroute6 { get; private set; } = null!;

        /// <summary>
        /// Enable/disable asymmetric ICMPv6 routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("asymroute6Icmp")]
        public Output<string> Asymroute6Icmp { get; private set; } = null!;

        /// <summary>
        /// Enable/disable ICMP asymmetric routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("asymrouteIcmp")]
        public Output<string> AsymrouteIcmp { get; private set; } = null!;

        /// <summary>
        /// Enable/disable auxiliary session. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("auxiliarySession")]
        public Output<string> AuxiliarySession { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Bi-directional Forwarding Detection (BFD) on all interfaces. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("bfd")]
        public Output<string> Bfd { get; private set; } = null!;

        /// <summary>
        /// BFD desired minimal transmit interval (1 - 100000 ms, default = 50).
        /// </summary>
        [Output("bfdDesiredMinTx")]
        public Output<int> BfdDesiredMinTx { get; private set; } = null!;

        /// <summary>
        /// BFD detection multiplier (1 - 50, default = 3).
        /// </summary>
        [Output("bfdDetectMult")]
        public Output<int> BfdDetectMult { get; private set; } = null!;

        /// <summary>
        /// Enable to not enforce verifying the source port of BFD Packets. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("bfdDontEnforceSrcPort")]
        public Output<string> BfdDontEnforceSrcPort { get; private set; } = null!;

        /// <summary>
        /// BFD required minimal receive interval (1 - 100000 ms, default = 50).
        /// </summary>
        [Output("bfdRequiredMinRx")]
        public Output<int> BfdRequiredMinRx { get; private set; } = null!;

        /// <summary>
        /// Enable/disable blocking of land attacks. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("blockLandAttack")]
        public Output<string> BlockLandAttack { get; private set; } = null!;

        /// <summary>
        /// Enable/disable central NAT. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("centralNat")]
        public Output<string> CentralNat { get; private set; } = null!;

        /// <summary>
        /// VDOM comments.
        /// </summary>
        [Output("comments")]
        public Output<string?> Comments { get; private set; } = null!;

        /// <summary>
        /// Enable/disable PCI DSS compliance checking. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("complianceCheck")]
        public Output<string> ComplianceCheck { get; private set; } = null!;

        /// <summary>
        /// Consolidated firewall mode.
        /// </summary>
        [Output("consolidatedFirewallMode")]
        public Output<string> ConsolidatedFirewallMode { get; private set; } = null!;

        /// <summary>
        /// Enable/disable policy service enforcement based on application default ports. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("defaultAppPortAsService")]
        public Output<string> DefaultAppPortAsService { get; private set; } = null!;

        /// <summary>
        /// Default policy expiry in days (0 - 365 days, default = 30).
        /// </summary>
        [Output("defaultPolicyExpiryDays")]
        public Output<int> DefaultPolicyExpiryDays { get; private set; } = null!;

        /// <summary>
        /// Configure how the FortiGate handles VoIP traffic when a policy that accepts the traffic doesn't include a VoIP profile. Valid values: `proxy-based`, `kernel-helper-based`.
        /// </summary>
        [Output("defaultVoipAlgMode")]
        public Output<string> DefaultVoipAlgMode { get; private set; } = null!;

        /// <summary>
        /// Enable/disable denying TCP by sending an ICMP communication prohibited packet. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("denyTcpWithIcmp")]
        public Output<string> DenyTcpWithIcmp { get; private set; } = null!;

        /// <summary>
        /// Interface to use for management access for NAT mode.
        /// </summary>
        [Output("device")]
        public Output<string> Device { get; private set; } = null!;

        /// <summary>
        /// DHCPv6 server IPv6 address.
        /// </summary>
        [Output("dhcp6ServerIp")]
        public Output<string> Dhcp6ServerIp { get; private set; } = null!;

        /// <summary>
        /// Enable/disable the DHCP Proxy. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("dhcpProxy")]
        public Output<string> DhcpProxy { get; private set; } = null!;

        /// <summary>
        /// Specify outgoing interface to reach server.
        /// </summary>
        [Output("dhcpProxyInterface")]
        public Output<string> DhcpProxyInterface { get; private set; } = null!;

        /// <summary>
        /// Specify how to select outgoing interface to reach server. Valid values: `auto`, `sdwan`, `specify`.
        /// </summary>
        [Output("dhcpProxyInterfaceSelectMethod")]
        public Output<string> DhcpProxyInterfaceSelectMethod { get; private set; } = null!;

        /// <summary>
        /// DHCP Server IPv4 address.
        /// </summary>
        [Output("dhcpServerIp")]
        public Output<string> DhcpServerIp { get; private set; } = null!;

        /// <summary>
        /// Timeout for discovered devices (1 - 365 days, default = 28).
        /// </summary>
        [Output("discoveredDeviceTimeout")]
        public Output<int> DiscoveredDeviceTimeout { get; private set; } = null!;

        /// <summary>
        /// Enable/disable dirty session check caused by dynamic address updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("dynAddrSessionCheck")]
        public Output<string> DynAddrSessionCheck { get; private set; } = null!;

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Output("dynamicSortSubtable")]
        public Output<string?> DynamicSortSubtable { get; private set; } = null!;

        /// <summary>
        /// Maximum number of Equal Cost Multi-Path (ECMP) next-hops. Set to 1 to disable ECMP routing (1 - 100, default = 10).
        /// </summary>
        [Output("ecmpMaxPaths")]
        public Output<int> EcmpMaxPaths { get; private set; } = null!;

        /// <summary>
        /// Enable/disable using DNS to validate email addresses collected by a captive portal. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("emailPortalCheckDns")]
        public Output<string> EmailPortalCheckDns { get; private set; } = null!;

        /// <summary>
        /// Enable/disable dirty session check caused by external resource updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("extResourceSessionCheck")]
        public Output<string> ExtResourceSessionCheck { get; private set; } = null!;

        /// <summary>
        /// Select how to manage sessions affected by firewall policy configuration changes. Valid values: `check-all`, `check-new`, `check-policy-option`.
        /// </summary>
        [Output("firewallSessionDirty")]
        public Output<string> FirewallSessionDirty { get; private set; } = null!;

        /// <summary>
        /// Enable/disable dirty session check caused by FQDN updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("fqdnSessionCheck")]
        public Output<string> FqdnSessionCheck { get; private set; } = null!;

        /// <summary>
        /// Enable/disable checking for a matching policy each time hairpin traffic goes through the FortiGate. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("fwSessionHairpin")]
        public Output<string> FwSessionHairpin { get; private set; } = null!;

        /// <summary>
        /// Transparent mode IPv4 default gateway IP address.
        /// </summary>
        [Output("gateway")]
        public Output<string> Gateway { get; private set; } = null!;

        /// <summary>
        /// Transparent mode IPv4 default gateway IP address.
        /// </summary>
        [Output("gateway6")]
        public Output<string> Gateway6 { get; private set; } = null!;

        /// <summary>
        /// Enable/disable advanced policy configuration on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiAdvancedPolicy")]
        public Output<string> GuiAdvancedPolicy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable advanced wireless features in GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiAdvancedWirelessFeatures")]
        public Output<string> GuiAdvancedWirelessFeatures { get; private set; } = null!;

        /// <summary>
        /// Enable/disable the requirement for policy naming on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiAllowUnnamedPolicy")]
        public Output<string> GuiAllowUnnamedPolicy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable AntiVirus on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiAntivirus")]
        public Output<string> GuiAntivirus { get; private set; } = null!;

        /// <summary>
        /// Enable/disable FortiAP profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiApProfile")]
        public Output<string> GuiApProfile { get; private set; } = null!;

        /// <summary>
        /// Enable/disable application control on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiApplicationControl")]
        public Output<string> GuiApplicationControl { get; private set; } = null!;

        /// <summary>
        /// Default columns to display for policy lists on GUI. The structure of `gui_default_policy_columns` block is documented below.
        /// </summary>
        [Output("guiDefaultPolicyColumns")]
        public Output<ImmutableArray<Outputs.SystemSettingsGuiDefaultPolicyColumn>> GuiDefaultPolicyColumns { get; private set; } = null!;

        /// <summary>
        /// Enable/disable advanced DHCP options on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiDhcpAdvanced")]
        public Output<string> GuiDhcpAdvanced { get; private set; } = null!;

        /// <summary>
        /// Enable/disable DLP on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiDlp")]
        public Output<string> GuiDlp { get; private set; } = null!;

        /// <summary>
        /// Enable/disable DNS database settings on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiDnsDatabase")]
        public Output<string> GuiDnsDatabase { get; private set; } = null!;

        /// <summary>
        /// Enable/disable DNS Filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiDnsfilter")]
        public Output<string> GuiDnsfilter { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Domain and IP Reputation on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiDomainIpReputation")]
        public Output<string> GuiDomainIpReputation { get; private set; } = null!;

        /// <summary>
        /// Enable/disable DoS policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiDosPolicy")]
        public Output<string> GuiDosPolicy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable RADIUS Single Sign On (RSSO) on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiDynamicProfileDisplay")]
        public Output<string> GuiDynamicProfileDisplay { get; private set; } = null!;

        /// <summary>
        /// Enable/disable dynamic routing on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiDynamicRouting")]
        public Output<string> GuiDynamicRouting { get; private set; } = null!;

        /// <summary>
        /// Enable/disable email collection on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiEmailCollection")]
        public Output<string> GuiEmailCollection { get; private set; } = null!;

        /// <summary>
        /// Enable/disable endpoint control on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiEndpointControl")]
        public Output<string> GuiEndpointControl { get; private set; } = null!;

        /// <summary>
        /// Enable/disable advanced endpoint control options on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiEndpointControlAdvanced")]
        public Output<string> GuiEndpointControlAdvanced { get; private set; } = null!;

        /// <summary>
        /// Enforce change summaries for select tables in the GUI. Valid values: `disable`, `require`, `optional`.
        /// </summary>
        [Output("guiEnforceChangeSummary")]
        public Output<string> GuiEnforceChangeSummary { get; private set; } = null!;

        /// <summary>
        /// Enable/disable the explicit proxy on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiExplicitProxy")]
        public Output<string> GuiExplicitProxy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable File-filter on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiFileFilter")]
        public Output<string> GuiFileFilter { get; private set; } = null!;

        /// <summary>
        /// Enable/disable FortiAP split tunneling on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiFortiapSplitTunneling")]
        public Output<string> GuiFortiapSplitTunneling { get; private set; } = null!;

        /// <summary>
        /// Enable/disable FortiExtender on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiFortiextenderController")]
        public Output<string> GuiFortiextenderController { get; private set; } = null!;

        /// <summary>
        /// Enable/disable ICAP on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiIcap")]
        public Output<string> GuiIcap { get; private set; } = null!;

        /// <summary>
        /// Enable/disable implicit firewall policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiImplicitPolicy")]
        public Output<string> GuiImplicitPolicy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable IPS on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiIps")]
        public Output<string> GuiIps { get; private set; } = null!;

        /// <summary>
        /// Enable/disable server load balancing on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiLoadBalance")]
        public Output<string> GuiLoadBalance { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Local-In policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiLocalInPolicy")]
        public Output<string> GuiLocalInPolicy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable local reports on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiLocalReports")]
        public Output<string> GuiLocalReports { get; private set; } = null!;

        /// <summary>
        /// Enable/disable multicast firewall policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiMulticastPolicy")]
        public Output<string> GuiMulticastPolicy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable adding multiple interfaces to a policy on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiMultipleInterfacePolicy")]
        public Output<string> GuiMultipleInterfacePolicy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable multiple UTM profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiMultipleUtmProfiles")]
        public Output<string> GuiMultipleUtmProfiles { get; private set; } = null!;

        /// <summary>
        /// Enable/disable NAT46 and NAT64 settings on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiNat4664")]
        public Output<string> GuiNat4664 { get; private set; } = null!;

        /// <summary>
        /// Enable/disable object colors on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiObjectColors")]
        public Output<string> GuiObjectColors { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Show Operational Technology Purdue Model. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiOt")]
        public Output<string> GuiOt { get; private set; } = null!;

        /// <summary>
        /// Enable/disable policy disclaimer on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiPerPolicyDisclaimer")]
        public Output<string> GuiPerPolicyDisclaimer { get; private set; } = null!;

        /// <summary>
        /// Enable/disable policy-based IPsec VPN on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiPolicyBasedIpsec")]
        public Output<string> GuiPolicyBasedIpsec { get; private set; } = null!;

        /// <summary>
        /// Enable/disable policy disclaimer on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiPolicyDisclaimer")]
        public Output<string> GuiPolicyDisclaimer { get; private set; } = null!;

        /// <summary>
        /// Enable/disable firewall policy learning mode on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiPolicyLearning")]
        public Output<string> GuiPolicyLearning { get; private set; } = null!;

        /// <summary>
        /// Enable/disable replacement message groups on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiReplacementMessageGroups")]
        public Output<string> GuiReplacementMessageGroups { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Security Profile Groups on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiSecurityProfileGroup")]
        public Output<string> GuiSecurityProfileGroup { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Antispam on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiSpamfilter")]
        public Output<string> GuiSpamfilter { get; private set; } = null!;

        /// <summary>
        /// Enable/disable SSL-VPN personal bookmark management on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiSslvpnPersonalBookmarks")]
        public Output<string> GuiSslvpnPersonalBookmarks { get; private set; } = null!;

        /// <summary>
        /// Enable/disable SSL-VPN realms on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiSslvpnRealms")]
        public Output<string> GuiSslvpnRealms { get; private set; } = null!;

        /// <summary>
        /// Enable/disable the switch controller on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiSwitchController")]
        public Output<string> GuiSwitchController { get; private set; } = null!;

        /// <summary>
        /// Enable/disable threat weight on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiThreatWeight")]
        public Output<string> GuiThreatWeight { get; private set; } = null!;

        /// <summary>
        /// Enable/disable traffic shaping on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiTrafficShaping")]
        public Output<string> GuiTrafficShaping { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Video filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiVideofilter")]
        public Output<string> GuiVideofilter { get; private set; } = null!;

        /// <summary>
        /// Enable/disable VoIP profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiVoipProfile")]
        public Output<string> GuiVoipProfile { get; private set; } = null!;

        /// <summary>
        /// Enable/disable VPN tunnels on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiVpn")]
        public Output<string> GuiVpn { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Web Application Firewall on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiWafProfile")]
        public Output<string> GuiWafProfile { get; private set; } = null!;

        /// <summary>
        /// Enable/disable SD-WAN on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiWanLoadBalancing")]
        public Output<string> GuiWanLoadBalancing { get; private set; } = null!;

        /// <summary>
        /// Enable/disable WAN Optimization and Web Caching on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiWanoptCache")]
        public Output<string> GuiWanoptCache { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Web filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiWebfilter")]
        public Output<string> GuiWebfilter { get; private set; } = null!;

        /// <summary>
        /// Enable/disable advanced web filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiWebfilterAdvanced")]
        public Output<string> GuiWebfilterAdvanced { get; private set; } = null!;

        /// <summary>
        /// Enable/disable the wireless controller on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiWirelessController")]
        public Output<string> GuiWirelessController { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Zero Trust Network Access features on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("guiZtna")]
        public Output<string> GuiZtna { get; private set; } = null!;

        /// <summary>
        /// Enable/disable H323 direct model. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("h323DirectModel")]
        public Output<string> H323DirectModel { get; private set; } = null!;

        /// <summary>
        /// Offload HTTP traffic to FortiWeb or FortiCache. Valid values: `fortiweb`, `forticache`.
        /// </summary>
        [Output("httpExternalDest")]
        public Output<string> HttpExternalDest { get; private set; } = null!;

        /// <summary>
        /// Configure IKE ASN.1 Distinguished Name format conventions. Valid values: `with-space`, `no-space`.
        /// </summary>
        [Output("ikeDnFormat")]
        public Output<string> IkeDnFormat { get; private set; } = null!;

        /// <summary>
        /// UDP port for IKE/IPsec traffic in NAT-T mode (default 4500).
        /// </summary>
        [Output("ikeNattPort")]
        public Output<int> IkeNattPort { get; private set; } = null!;

        /// <summary>
        /// Enable/disable IKE Policy Based Routing (PBR). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("ikePolicyRoute")]
        public Output<string> IkePolicyRoute { get; private set; } = null!;

        /// <summary>
        /// UDP port for IKE/IPsec traffic (default 500).
        /// </summary>
        [Output("ikePort")]
        public Output<int> IkePort { get; private set; } = null!;

        /// <summary>
        /// Enable/disable IKE quick crash detection (RFC 6290). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("ikeQuickCrashDetect")]
        public Output<string> IkeQuickCrashDetect { get; private set; } = null!;

        /// <summary>
        /// Enable/disable IKEv2 session resumption (RFC 5723). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("ikeSessionResume")]
        public Output<string> IkeSessionResume { get; private set; } = null!;

        /// <summary>
        /// Enable/disable implicitly allowing DNS traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("implicitAllowDns")]
        public Output<string> ImplicitAllowDns { get; private set; } = null!;

        /// <summary>
        /// Inspection mode (proxy-based or flow-based). Valid values: `proxy`, `flow`.
        /// </summary>
        [Output("inspectionMode")]
        public Output<string> InspectionMode { get; private set; } = null!;

        /// <summary>
        /// IP address and netmask.
        /// </summary>
        [Output("ip")]
        public Output<string> Ip { get; private set; } = null!;

        /// <summary>
        /// IPv6 address prefix for NAT mode.
        /// </summary>
        [Output("ip6")]
        public Output<string> Ip6 { get; private set; } = null!;

        /// <summary>
        /// Controller IP address or FQDN to connect.
        /// </summary>
        [Output("lanExtensionControllerAddr")]
        public Output<string> LanExtensionControllerAddr { get; private set; } = null!;

        /// <summary>
        /// Enable/disable link down access traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("linkDownAccess")]
        public Output<string> LinkDownAccess { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Link Layer Discovery Protocol (LLDP) reception for this VDOM or apply global settings to this VDOM. Valid values: `enable`, `disable`, `global`.
        /// </summary>
        [Output("lldpReception")]
        public Output<string> LldpReception { get; private set; } = null!;

        /// <summary>
        /// Enable/disable Link Layer Discovery Protocol (LLDP) transmission for this VDOM or apply global settings to this VDOM. Valid values: `enable`, `disable`, `global`.
        /// </summary>
        [Output("lldpTransmission")]
        public Output<string> LldpTransmission { get; private set; } = null!;

        /// <summary>
        /// Local location ID in the form of an IPv4 address.
        /// </summary>
        [Output("locationId")]
        public Output<string> LocationId { get; private set; } = null!;

        /// <summary>
        /// Duration of MAC addresses in Transparent mode (300 - 8640000 sec, default = 300).
        /// </summary>
        [Output("macTtl")]
        public Output<int> MacTtl { get; private set; } = null!;

        /// <summary>
        /// Transparent mode IPv4 management IP address and netmask.
        /// </summary>
        [Output("manageip")]
        public Output<string> Manageip { get; private set; } = null!;

        /// <summary>
        /// Transparent mode IPv6 management IP address and netmask.
        /// </summary>
        [Output("manageip6")]
        public Output<string> Manageip6 { get; private set; } = null!;

        /// <summary>
        /// Enable/disable multicast forwarding. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("multicastForward")]
        public Output<string> MulticastForward { get; private set; } = null!;

        /// <summary>
        /// Enable/disable allowing multicast traffic through the FortiGate without a policy check. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("multicastSkipPolicy")]
        public Output<string> MulticastSkipPolicy { get; private set; } = null!;

        /// <summary>
        /// Enable/disable preventing the FortiGate from changing the TTL for forwarded multicast packets. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("multicastTtlNotchange")]
        public Output<string> MulticastTtlNotchange { get; private set; } = null!;

        /// <summary>
        /// Enable/disable mandatory IPv4 packet forwarding in NAT46. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("nat46ForceIpv4PacketForwarding")]
        public Output<string> Nat46ForceIpv4PacketForwarding { get; private set; } = null!;

        /// <summary>
        /// Enable/disable NAT46 IPv6 fragment header generation. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("nat46GenerateIpv6FragmentHeader")]
        public Output<string> Nat46GenerateIpv6FragmentHeader { get; private set; } = null!;

        /// <summary>
        /// Enable/disable mandatory IPv6 packet forwarding in NAT64. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("nat64ForceIpv6PacketForwarding")]
        public Output<string> Nat64ForceIpv6PacketForwarding { get; private set; } = null!;

        /// <summary>
        /// Next Generation Firewall (NGFW) mode. Valid values: `profile-based`, `policy-based`.
        /// </summary>
        [Output("ngfwMode")]
        public Output<string> NgfwMode { get; private set; } = null!;

        /// <summary>
        /// Firewall operation mode (NAT or Transparent). Valid values: `nat`, `transparent`.
        /// </summary>
        [Output("opmode")]
        public Output<string> Opmode { get; private set; } = null!;

        /// <summary>
        /// Enable/disable action to take on PRP trailer. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("prpTrailerAction")]
        public Output<string> PrpTrailerAction { get; private set; } = null!;

        /// <summary>
        /// TCP port the SCCP proxy monitors for SCCP traffic (0 - 65535, default = 2000).
        /// </summary>
        [Output("sccpPort")]
        public Output<int> SccpPort { get; private set; } = null!;

        /// <summary>
        /// Enable/disable SCTP session creation without SCTP INIT. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("sctpSessionWithoutInit")]
        public Output<string> SctpSessionWithoutInit { get; private set; } = null!;

        /// <summary>
        /// Enable/disable including denied session in the session table. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("sesDeniedTraffic")]
        public Output<string> SesDeniedTraffic { get; private set; } = null!;

        /// <summary>
        /// Enable/disable the SIP kernel session helper to create an expectation for port 5060. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("sipExpectation")]
        public Output<string> SipExpectation { get; private set; } = null!;

        /// <summary>
        /// Enable/disable the SIP session helper to process SIP sessions unless SIP sessions are accepted by the SIP application layer gateway (ALG). Valid values: `enable`, `disable`.
        /// </summary>
        [Output("sipHelper")]
        public Output<string> SipHelper { get; private set; } = null!;

        /// <summary>
        /// Enable/disable recording the original SIP source IP address when NAT is used. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("sipNatTrace")]
        public Output<string> SipNatTrace { get; private set; } = null!;

        /// <summary>
        /// TCP port the SIP proxy monitors for SIP SSL/TLS traffic (0 - 65535, default = 5061).
        /// </summary>
        [Output("sipSslPort")]
        public Output<int> SipSslPort { get; private set; } = null!;

        /// <summary>
        /// TCP port the SIP proxy monitors for SIP traffic (0 - 65535, default = 5060).
        /// </summary>
        [Output("sipTcpPort")]
        public Output<int> SipTcpPort { get; private set; } = null!;

        /// <summary>
        /// UDP port the SIP proxy monitors for SIP traffic (0 - 65535, default = 5060).
        /// </summary>
        [Output("sipUdpPort")]
        public Output<int> SipUdpPort { get; private set; } = null!;

        /// <summary>
        /// Enable/disable source NAT (SNAT) for hairpin traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("snatHairpinTraffic")]
        public Output<string> SnatHairpinTraffic { get; private set; } = null!;

        /// <summary>
        /// Profile for SSL/SSH inspection.
        /// </summary>
        [Output("sslSshProfile")]
        public Output<string> SslSshProfile { get; private set; } = null!;

        /// <summary>
        /// Enable/disable this VDOM. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("status")]
        public Output<string> Status { get; private set; } = null!;

        /// <summary>
        /// Enable/disable strict source verification. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("strictSrcCheck")]
        public Output<string> StrictSrcCheck { get; private set; } = null!;

        /// <summary>
        /// Enable/disable allowing TCP session without SYN flags. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("tcpSessionWithoutSyn")]
        public Output<string> TcpSessionWithoutSyn { get; private set; } = null!;

        /// <summary>
        /// Enable/disable converting antispam tags to UTF-8 for better non-ASCII character support. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("utf8SpamTagging")]
        public Output<string> Utf8SpamTagging { get; private set; } = null!;

        /// <summary>
        /// IPv4 Equal-cost multi-path (ECMP) routing and load balancing mode. Valid values: `source-ip-based`, `weight-based`, `usage-based`, `source-dest-ip-based`.
        /// </summary>
        [Output("v4EcmpMode")]
        public Output<string> V4EcmpMode { get; private set; } = null!;

        /// <summary>
        /// VDOM type (traffic or admin).
        /// </summary>
        [Output("vdomType")]
        public Output<string> VdomType { get; private set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Output("vdomparam")]
        public Output<string?> Vdomparam { get; private set; } = null!;

        /// <summary>
        /// Enable/disable periodic VPN log statistics for one or more types of VPN. Separate names with a space. Valid values: `ipsec`, `pptp`, `l2tp`, `ssl`.
        /// </summary>
        [Output("vpnStatsLog")]
        public Output<string> VpnStatsLog { get; private set; } = null!;

        /// <summary>
        /// Period to send VPN log statistics (0 or 60 - 86400 sec).
        /// </summary>
        [Output("vpnStatsPeriod")]
        public Output<int> VpnStatsPeriod { get; private set; } = null!;

        /// <summary>
        /// Enable/disable WCCP cache engine. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("wccpCacheEngine")]
        public Output<string> WccpCacheEngine { get; private set; } = null!;


        /// <summary>
        /// Create a SystemSettings resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public SystemSettings(string name, SystemSettingsArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/systemSettings:SystemSettings", name, args ?? new SystemSettingsArgs(), MakeResourceOptions(options, ""))
        {
        }

        private SystemSettings(string name, Input<string> id, SystemSettingsState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/systemSettings:SystemSettings", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/pulumiverse/pulumi-fortios",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing SystemSettings resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static SystemSettings Get(string name, Input<string> id, SystemSettingsState? state = null, CustomResourceOptions? options = null)
        {
            return new SystemSettings(name, id, state, options);
        }
    }

    public sealed class SystemSettingsArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Enable/disable link down path. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("allowLinkdownPath")]
        public Input<string>? AllowLinkdownPath { get; set; }

        /// <summary>
        /// Enable/disable allowing interface subnets to use overlapping IP addresses. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("allowSubnetOverlap")]
        public Input<string>? AllowSubnetOverlap { get; set; }

        /// <summary>
        /// Enable/disable application bandwidth tracking. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("applicationBandwidthTracking")]
        public Input<string>? ApplicationBandwidthTracking { get; set; }

        /// <summary>
        /// Enable/disable IPv4 asymmetric routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asymroute")]
        public Input<string>? Asymroute { get; set; }

        /// <summary>
        /// Enable/disable asymmetric IPv6 routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asymroute6")]
        public Input<string>? Asymroute6 { get; set; }

        /// <summary>
        /// Enable/disable asymmetric ICMPv6 routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asymroute6Icmp")]
        public Input<string>? Asymroute6Icmp { get; set; }

        /// <summary>
        /// Enable/disable ICMP asymmetric routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asymrouteIcmp")]
        public Input<string>? AsymrouteIcmp { get; set; }

        /// <summary>
        /// Enable/disable auxiliary session. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("auxiliarySession")]
        public Input<string>? AuxiliarySession { get; set; }

        /// <summary>
        /// Enable/disable Bi-directional Forwarding Detection (BFD) on all interfaces. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("bfd")]
        public Input<string>? Bfd { get; set; }

        /// <summary>
        /// BFD desired minimal transmit interval (1 - 100000 ms, default = 50).
        /// </summary>
        [Input("bfdDesiredMinTx")]
        public Input<int>? BfdDesiredMinTx { get; set; }

        /// <summary>
        /// BFD detection multiplier (1 - 50, default = 3).
        /// </summary>
        [Input("bfdDetectMult")]
        public Input<int>? BfdDetectMult { get; set; }

        /// <summary>
        /// Enable to not enforce verifying the source port of BFD Packets. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("bfdDontEnforceSrcPort")]
        public Input<string>? BfdDontEnforceSrcPort { get; set; }

        /// <summary>
        /// BFD required minimal receive interval (1 - 100000 ms, default = 50).
        /// </summary>
        [Input("bfdRequiredMinRx")]
        public Input<int>? BfdRequiredMinRx { get; set; }

        /// <summary>
        /// Enable/disable blocking of land attacks. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("blockLandAttack")]
        public Input<string>? BlockLandAttack { get; set; }

        /// <summary>
        /// Enable/disable central NAT. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("centralNat")]
        public Input<string>? CentralNat { get; set; }

        /// <summary>
        /// VDOM comments.
        /// </summary>
        [Input("comments")]
        public Input<string>? Comments { get; set; }

        /// <summary>
        /// Enable/disable PCI DSS compliance checking. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("complianceCheck")]
        public Input<string>? ComplianceCheck { get; set; }

        /// <summary>
        /// Consolidated firewall mode.
        /// </summary>
        [Input("consolidatedFirewallMode")]
        public Input<string>? ConsolidatedFirewallMode { get; set; }

        /// <summary>
        /// Enable/disable policy service enforcement based on application default ports. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("defaultAppPortAsService")]
        public Input<string>? DefaultAppPortAsService { get; set; }

        /// <summary>
        /// Default policy expiry in days (0 - 365 days, default = 30).
        /// </summary>
        [Input("defaultPolicyExpiryDays")]
        public Input<int>? DefaultPolicyExpiryDays { get; set; }

        /// <summary>
        /// Configure how the FortiGate handles VoIP traffic when a policy that accepts the traffic doesn't include a VoIP profile. Valid values: `proxy-based`, `kernel-helper-based`.
        /// </summary>
        [Input("defaultVoipAlgMode")]
        public Input<string>? DefaultVoipAlgMode { get; set; }

        /// <summary>
        /// Enable/disable denying TCP by sending an ICMP communication prohibited packet. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("denyTcpWithIcmp")]
        public Input<string>? DenyTcpWithIcmp { get; set; }

        /// <summary>
        /// Interface to use for management access for NAT mode.
        /// </summary>
        [Input("device")]
        public Input<string>? Device { get; set; }

        /// <summary>
        /// DHCPv6 server IPv6 address.
        /// </summary>
        [Input("dhcp6ServerIp")]
        public Input<string>? Dhcp6ServerIp { get; set; }

        /// <summary>
        /// Enable/disable the DHCP Proxy. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dhcpProxy")]
        public Input<string>? DhcpProxy { get; set; }

        /// <summary>
        /// Specify outgoing interface to reach server.
        /// </summary>
        [Input("dhcpProxyInterface")]
        public Input<string>? DhcpProxyInterface { get; set; }

        /// <summary>
        /// Specify how to select outgoing interface to reach server. Valid values: `auto`, `sdwan`, `specify`.
        /// </summary>
        [Input("dhcpProxyInterfaceSelectMethod")]
        public Input<string>? DhcpProxyInterfaceSelectMethod { get; set; }

        /// <summary>
        /// DHCP Server IPv4 address.
        /// </summary>
        [Input("dhcpServerIp")]
        public Input<string>? DhcpServerIp { get; set; }

        /// <summary>
        /// Timeout for discovered devices (1 - 365 days, default = 28).
        /// </summary>
        [Input("discoveredDeviceTimeout")]
        public Input<int>? DiscoveredDeviceTimeout { get; set; }

        /// <summary>
        /// Enable/disable dirty session check caused by dynamic address updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dynAddrSessionCheck")]
        public Input<string>? DynAddrSessionCheck { get; set; }

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        /// <summary>
        /// Maximum number of Equal Cost Multi-Path (ECMP) next-hops. Set to 1 to disable ECMP routing (1 - 100, default = 10).
        /// </summary>
        [Input("ecmpMaxPaths")]
        public Input<int>? EcmpMaxPaths { get; set; }

        /// <summary>
        /// Enable/disable using DNS to validate email addresses collected by a captive portal. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("emailPortalCheckDns")]
        public Input<string>? EmailPortalCheckDns { get; set; }

        /// <summary>
        /// Enable/disable dirty session check caused by external resource updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("extResourceSessionCheck")]
        public Input<string>? ExtResourceSessionCheck { get; set; }

        /// <summary>
        /// Select how to manage sessions affected by firewall policy configuration changes. Valid values: `check-all`, `check-new`, `check-policy-option`.
        /// </summary>
        [Input("firewallSessionDirty")]
        public Input<string>? FirewallSessionDirty { get; set; }

        /// <summary>
        /// Enable/disable dirty session check caused by FQDN updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("fqdnSessionCheck")]
        public Input<string>? FqdnSessionCheck { get; set; }

        /// <summary>
        /// Enable/disable checking for a matching policy each time hairpin traffic goes through the FortiGate. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("fwSessionHairpin")]
        public Input<string>? FwSessionHairpin { get; set; }

        /// <summary>
        /// Transparent mode IPv4 default gateway IP address.
        /// </summary>
        [Input("gateway")]
        public Input<string>? Gateway { get; set; }

        /// <summary>
        /// Transparent mode IPv4 default gateway IP address.
        /// </summary>
        [Input("gateway6")]
        public Input<string>? Gateway6 { get; set; }

        /// <summary>
        /// Enable/disable advanced policy configuration on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiAdvancedPolicy")]
        public Input<string>? GuiAdvancedPolicy { get; set; }

        /// <summary>
        /// Enable/disable advanced wireless features in GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiAdvancedWirelessFeatures")]
        public Input<string>? GuiAdvancedWirelessFeatures { get; set; }

        /// <summary>
        /// Enable/disable the requirement for policy naming on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiAllowUnnamedPolicy")]
        public Input<string>? GuiAllowUnnamedPolicy { get; set; }

        /// <summary>
        /// Enable/disable AntiVirus on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiAntivirus")]
        public Input<string>? GuiAntivirus { get; set; }

        /// <summary>
        /// Enable/disable FortiAP profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiApProfile")]
        public Input<string>? GuiApProfile { get; set; }

        /// <summary>
        /// Enable/disable application control on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiApplicationControl")]
        public Input<string>? GuiApplicationControl { get; set; }

        [Input("guiDefaultPolicyColumns")]
        private InputList<Inputs.SystemSettingsGuiDefaultPolicyColumnArgs>? _guiDefaultPolicyColumns;

        /// <summary>
        /// Default columns to display for policy lists on GUI. The structure of `gui_default_policy_columns` block is documented below.
        /// </summary>
        public InputList<Inputs.SystemSettingsGuiDefaultPolicyColumnArgs> GuiDefaultPolicyColumns
        {
            get => _guiDefaultPolicyColumns ?? (_guiDefaultPolicyColumns = new InputList<Inputs.SystemSettingsGuiDefaultPolicyColumnArgs>());
            set => _guiDefaultPolicyColumns = value;
        }

        /// <summary>
        /// Enable/disable advanced DHCP options on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDhcpAdvanced")]
        public Input<string>? GuiDhcpAdvanced { get; set; }

        /// <summary>
        /// Enable/disable DLP on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDlp")]
        public Input<string>? GuiDlp { get; set; }

        /// <summary>
        /// Enable/disable DNS database settings on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDnsDatabase")]
        public Input<string>? GuiDnsDatabase { get; set; }

        /// <summary>
        /// Enable/disable DNS Filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDnsfilter")]
        public Input<string>? GuiDnsfilter { get; set; }

        /// <summary>
        /// Enable/disable Domain and IP Reputation on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDomainIpReputation")]
        public Input<string>? GuiDomainIpReputation { get; set; }

        /// <summary>
        /// Enable/disable DoS policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDosPolicy")]
        public Input<string>? GuiDosPolicy { get; set; }

        /// <summary>
        /// Enable/disable RADIUS Single Sign On (RSSO) on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDynamicProfileDisplay")]
        public Input<string>? GuiDynamicProfileDisplay { get; set; }

        /// <summary>
        /// Enable/disable dynamic routing on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDynamicRouting")]
        public Input<string>? GuiDynamicRouting { get; set; }

        /// <summary>
        /// Enable/disable email collection on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiEmailCollection")]
        public Input<string>? GuiEmailCollection { get; set; }

        /// <summary>
        /// Enable/disable endpoint control on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiEndpointControl")]
        public Input<string>? GuiEndpointControl { get; set; }

        /// <summary>
        /// Enable/disable advanced endpoint control options on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiEndpointControlAdvanced")]
        public Input<string>? GuiEndpointControlAdvanced { get; set; }

        /// <summary>
        /// Enforce change summaries for select tables in the GUI. Valid values: `disable`, `require`, `optional`.
        /// </summary>
        [Input("guiEnforceChangeSummary")]
        public Input<string>? GuiEnforceChangeSummary { get; set; }

        /// <summary>
        /// Enable/disable the explicit proxy on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiExplicitProxy")]
        public Input<string>? GuiExplicitProxy { get; set; }

        /// <summary>
        /// Enable/disable File-filter on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiFileFilter")]
        public Input<string>? GuiFileFilter { get; set; }

        /// <summary>
        /// Enable/disable FortiAP split tunneling on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiFortiapSplitTunneling")]
        public Input<string>? GuiFortiapSplitTunneling { get; set; }

        /// <summary>
        /// Enable/disable FortiExtender on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiFortiextenderController")]
        public Input<string>? GuiFortiextenderController { get; set; }

        /// <summary>
        /// Enable/disable ICAP on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiIcap")]
        public Input<string>? GuiIcap { get; set; }

        /// <summary>
        /// Enable/disable implicit firewall policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiImplicitPolicy")]
        public Input<string>? GuiImplicitPolicy { get; set; }

        /// <summary>
        /// Enable/disable IPS on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiIps")]
        public Input<string>? GuiIps { get; set; }

        /// <summary>
        /// Enable/disable server load balancing on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiLoadBalance")]
        public Input<string>? GuiLoadBalance { get; set; }

        /// <summary>
        /// Enable/disable Local-In policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiLocalInPolicy")]
        public Input<string>? GuiLocalInPolicy { get; set; }

        /// <summary>
        /// Enable/disable local reports on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiLocalReports")]
        public Input<string>? GuiLocalReports { get; set; }

        /// <summary>
        /// Enable/disable multicast firewall policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiMulticastPolicy")]
        public Input<string>? GuiMulticastPolicy { get; set; }

        /// <summary>
        /// Enable/disable adding multiple interfaces to a policy on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiMultipleInterfacePolicy")]
        public Input<string>? GuiMultipleInterfacePolicy { get; set; }

        /// <summary>
        /// Enable/disable multiple UTM profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiMultipleUtmProfiles")]
        public Input<string>? GuiMultipleUtmProfiles { get; set; }

        /// <summary>
        /// Enable/disable NAT46 and NAT64 settings on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiNat4664")]
        public Input<string>? GuiNat4664 { get; set; }

        /// <summary>
        /// Enable/disable object colors on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiObjectColors")]
        public Input<string>? GuiObjectColors { get; set; }

        /// <summary>
        /// Enable/disable Show Operational Technology Purdue Model. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiOt")]
        public Input<string>? GuiOt { get; set; }

        /// <summary>
        /// Enable/disable policy disclaimer on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiPerPolicyDisclaimer")]
        public Input<string>? GuiPerPolicyDisclaimer { get; set; }

        /// <summary>
        /// Enable/disable policy-based IPsec VPN on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiPolicyBasedIpsec")]
        public Input<string>? GuiPolicyBasedIpsec { get; set; }

        /// <summary>
        /// Enable/disable policy disclaimer on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiPolicyDisclaimer")]
        public Input<string>? GuiPolicyDisclaimer { get; set; }

        /// <summary>
        /// Enable/disable firewall policy learning mode on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiPolicyLearning")]
        public Input<string>? GuiPolicyLearning { get; set; }

        /// <summary>
        /// Enable/disable replacement message groups on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiReplacementMessageGroups")]
        public Input<string>? GuiReplacementMessageGroups { get; set; }

        /// <summary>
        /// Enable/disable Security Profile Groups on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSecurityProfileGroup")]
        public Input<string>? GuiSecurityProfileGroup { get; set; }

        /// <summary>
        /// Enable/disable Antispam on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSpamfilter")]
        public Input<string>? GuiSpamfilter { get; set; }

        /// <summary>
        /// Enable/disable SSL-VPN personal bookmark management on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSslvpnPersonalBookmarks")]
        public Input<string>? GuiSslvpnPersonalBookmarks { get; set; }

        /// <summary>
        /// Enable/disable SSL-VPN realms on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSslvpnRealms")]
        public Input<string>? GuiSslvpnRealms { get; set; }

        /// <summary>
        /// Enable/disable the switch controller on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSwitchController")]
        public Input<string>? GuiSwitchController { get; set; }

        /// <summary>
        /// Enable/disable threat weight on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiThreatWeight")]
        public Input<string>? GuiThreatWeight { get; set; }

        /// <summary>
        /// Enable/disable traffic shaping on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiTrafficShaping")]
        public Input<string>? GuiTrafficShaping { get; set; }

        /// <summary>
        /// Enable/disable Video filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiVideofilter")]
        public Input<string>? GuiVideofilter { get; set; }

        /// <summary>
        /// Enable/disable VoIP profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiVoipProfile")]
        public Input<string>? GuiVoipProfile { get; set; }

        /// <summary>
        /// Enable/disable VPN tunnels on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiVpn")]
        public Input<string>? GuiVpn { get; set; }

        /// <summary>
        /// Enable/disable Web Application Firewall on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWafProfile")]
        public Input<string>? GuiWafProfile { get; set; }

        /// <summary>
        /// Enable/disable SD-WAN on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWanLoadBalancing")]
        public Input<string>? GuiWanLoadBalancing { get; set; }

        /// <summary>
        /// Enable/disable WAN Optimization and Web Caching on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWanoptCache")]
        public Input<string>? GuiWanoptCache { get; set; }

        /// <summary>
        /// Enable/disable Web filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWebfilter")]
        public Input<string>? GuiWebfilter { get; set; }

        /// <summary>
        /// Enable/disable advanced web filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWebfilterAdvanced")]
        public Input<string>? GuiWebfilterAdvanced { get; set; }

        /// <summary>
        /// Enable/disable the wireless controller on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWirelessController")]
        public Input<string>? GuiWirelessController { get; set; }

        /// <summary>
        /// Enable/disable Zero Trust Network Access features on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiZtna")]
        public Input<string>? GuiZtna { get; set; }

        /// <summary>
        /// Enable/disable H323 direct model. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("h323DirectModel")]
        public Input<string>? H323DirectModel { get; set; }

        /// <summary>
        /// Offload HTTP traffic to FortiWeb or FortiCache. Valid values: `fortiweb`, `forticache`.
        /// </summary>
        [Input("httpExternalDest")]
        public Input<string>? HttpExternalDest { get; set; }

        /// <summary>
        /// Configure IKE ASN.1 Distinguished Name format conventions. Valid values: `with-space`, `no-space`.
        /// </summary>
        [Input("ikeDnFormat")]
        public Input<string>? IkeDnFormat { get; set; }

        /// <summary>
        /// UDP port for IKE/IPsec traffic in NAT-T mode (default 4500).
        /// </summary>
        [Input("ikeNattPort")]
        public Input<int>? IkeNattPort { get; set; }

        /// <summary>
        /// Enable/disable IKE Policy Based Routing (PBR). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ikePolicyRoute")]
        public Input<string>? IkePolicyRoute { get; set; }

        /// <summary>
        /// UDP port for IKE/IPsec traffic (default 500).
        /// </summary>
        [Input("ikePort")]
        public Input<int>? IkePort { get; set; }

        /// <summary>
        /// Enable/disable IKE quick crash detection (RFC 6290). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ikeQuickCrashDetect")]
        public Input<string>? IkeQuickCrashDetect { get; set; }

        /// <summary>
        /// Enable/disable IKEv2 session resumption (RFC 5723). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ikeSessionResume")]
        public Input<string>? IkeSessionResume { get; set; }

        /// <summary>
        /// Enable/disable implicitly allowing DNS traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("implicitAllowDns")]
        public Input<string>? ImplicitAllowDns { get; set; }

        /// <summary>
        /// Inspection mode (proxy-based or flow-based). Valid values: `proxy`, `flow`.
        /// </summary>
        [Input("inspectionMode")]
        public Input<string>? InspectionMode { get; set; }

        /// <summary>
        /// IP address and netmask.
        /// </summary>
        [Input("ip")]
        public Input<string>? Ip { get; set; }

        /// <summary>
        /// IPv6 address prefix for NAT mode.
        /// </summary>
        [Input("ip6")]
        public Input<string>? Ip6 { get; set; }

        /// <summary>
        /// Controller IP address or FQDN to connect.
        /// </summary>
        [Input("lanExtensionControllerAddr")]
        public Input<string>? LanExtensionControllerAddr { get; set; }

        /// <summary>
        /// Enable/disable link down access traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("linkDownAccess")]
        public Input<string>? LinkDownAccess { get; set; }

        /// <summary>
        /// Enable/disable Link Layer Discovery Protocol (LLDP) reception for this VDOM or apply global settings to this VDOM. Valid values: `enable`, `disable`, `global`.
        /// </summary>
        [Input("lldpReception")]
        public Input<string>? LldpReception { get; set; }

        /// <summary>
        /// Enable/disable Link Layer Discovery Protocol (LLDP) transmission for this VDOM or apply global settings to this VDOM. Valid values: `enable`, `disable`, `global`.
        /// </summary>
        [Input("lldpTransmission")]
        public Input<string>? LldpTransmission { get; set; }

        /// <summary>
        /// Local location ID in the form of an IPv4 address.
        /// </summary>
        [Input("locationId")]
        public Input<string>? LocationId { get; set; }

        /// <summary>
        /// Duration of MAC addresses in Transparent mode (300 - 8640000 sec, default = 300).
        /// </summary>
        [Input("macTtl")]
        public Input<int>? MacTtl { get; set; }

        /// <summary>
        /// Transparent mode IPv4 management IP address and netmask.
        /// </summary>
        [Input("manageip")]
        public Input<string>? Manageip { get; set; }

        /// <summary>
        /// Transparent mode IPv6 management IP address and netmask.
        /// </summary>
        [Input("manageip6")]
        public Input<string>? Manageip6 { get; set; }

        /// <summary>
        /// Enable/disable multicast forwarding. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("multicastForward")]
        public Input<string>? MulticastForward { get; set; }

        /// <summary>
        /// Enable/disable allowing multicast traffic through the FortiGate without a policy check. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("multicastSkipPolicy")]
        public Input<string>? MulticastSkipPolicy { get; set; }

        /// <summary>
        /// Enable/disable preventing the FortiGate from changing the TTL for forwarded multicast packets. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("multicastTtlNotchange")]
        public Input<string>? MulticastTtlNotchange { get; set; }

        /// <summary>
        /// Enable/disable mandatory IPv4 packet forwarding in NAT46. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("nat46ForceIpv4PacketForwarding")]
        public Input<string>? Nat46ForceIpv4PacketForwarding { get; set; }

        /// <summary>
        /// Enable/disable NAT46 IPv6 fragment header generation. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("nat46GenerateIpv6FragmentHeader")]
        public Input<string>? Nat46GenerateIpv6FragmentHeader { get; set; }

        /// <summary>
        /// Enable/disable mandatory IPv6 packet forwarding in NAT64. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("nat64ForceIpv6PacketForwarding")]
        public Input<string>? Nat64ForceIpv6PacketForwarding { get; set; }

        /// <summary>
        /// Next Generation Firewall (NGFW) mode. Valid values: `profile-based`, `policy-based`.
        /// </summary>
        [Input("ngfwMode")]
        public Input<string>? NgfwMode { get; set; }

        /// <summary>
        /// Firewall operation mode (NAT or Transparent). Valid values: `nat`, `transparent`.
        /// </summary>
        [Input("opmode")]
        public Input<string>? Opmode { get; set; }

        /// <summary>
        /// Enable/disable action to take on PRP trailer. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("prpTrailerAction")]
        public Input<string>? PrpTrailerAction { get; set; }

        /// <summary>
        /// TCP port the SCCP proxy monitors for SCCP traffic (0 - 65535, default = 2000).
        /// </summary>
        [Input("sccpPort")]
        public Input<int>? SccpPort { get; set; }

        /// <summary>
        /// Enable/disable SCTP session creation without SCTP INIT. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sctpSessionWithoutInit")]
        public Input<string>? SctpSessionWithoutInit { get; set; }

        /// <summary>
        /// Enable/disable including denied session in the session table. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sesDeniedTraffic")]
        public Input<string>? SesDeniedTraffic { get; set; }

        /// <summary>
        /// Enable/disable the SIP kernel session helper to create an expectation for port 5060. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sipExpectation")]
        public Input<string>? SipExpectation { get; set; }

        /// <summary>
        /// Enable/disable the SIP session helper to process SIP sessions unless SIP sessions are accepted by the SIP application layer gateway (ALG). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sipHelper")]
        public Input<string>? SipHelper { get; set; }

        /// <summary>
        /// Enable/disable recording the original SIP source IP address when NAT is used. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sipNatTrace")]
        public Input<string>? SipNatTrace { get; set; }

        /// <summary>
        /// TCP port the SIP proxy monitors for SIP SSL/TLS traffic (0 - 65535, default = 5061).
        /// </summary>
        [Input("sipSslPort")]
        public Input<int>? SipSslPort { get; set; }

        /// <summary>
        /// TCP port the SIP proxy monitors for SIP traffic (0 - 65535, default = 5060).
        /// </summary>
        [Input("sipTcpPort")]
        public Input<int>? SipTcpPort { get; set; }

        /// <summary>
        /// UDP port the SIP proxy monitors for SIP traffic (0 - 65535, default = 5060).
        /// </summary>
        [Input("sipUdpPort")]
        public Input<int>? SipUdpPort { get; set; }

        /// <summary>
        /// Enable/disable source NAT (SNAT) for hairpin traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("snatHairpinTraffic")]
        public Input<string>? SnatHairpinTraffic { get; set; }

        /// <summary>
        /// Profile for SSL/SSH inspection.
        /// </summary>
        [Input("sslSshProfile")]
        public Input<string>? SslSshProfile { get; set; }

        /// <summary>
        /// Enable/disable this VDOM. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Enable/disable strict source verification. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("strictSrcCheck")]
        public Input<string>? StrictSrcCheck { get; set; }

        /// <summary>
        /// Enable/disable allowing TCP session without SYN flags. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("tcpSessionWithoutSyn")]
        public Input<string>? TcpSessionWithoutSyn { get; set; }

        /// <summary>
        /// Enable/disable converting antispam tags to UTF-8 for better non-ASCII character support. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("utf8SpamTagging")]
        public Input<string>? Utf8SpamTagging { get; set; }

        /// <summary>
        /// IPv4 Equal-cost multi-path (ECMP) routing and load balancing mode. Valid values: `source-ip-based`, `weight-based`, `usage-based`, `source-dest-ip-based`.
        /// </summary>
        [Input("v4EcmpMode")]
        public Input<string>? V4EcmpMode { get; set; }

        /// <summary>
        /// VDOM type (traffic or admin).
        /// </summary>
        [Input("vdomType")]
        public Input<string>? VdomType { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        /// <summary>
        /// Enable/disable periodic VPN log statistics for one or more types of VPN. Separate names with a space. Valid values: `ipsec`, `pptp`, `l2tp`, `ssl`.
        /// </summary>
        [Input("vpnStatsLog")]
        public Input<string>? VpnStatsLog { get; set; }

        /// <summary>
        /// Period to send VPN log statistics (0 or 60 - 86400 sec).
        /// </summary>
        [Input("vpnStatsPeriod")]
        public Input<int>? VpnStatsPeriod { get; set; }

        /// <summary>
        /// Enable/disable WCCP cache engine. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("wccpCacheEngine")]
        public Input<string>? WccpCacheEngine { get; set; }

        public SystemSettingsArgs()
        {
        }
        public static new SystemSettingsArgs Empty => new SystemSettingsArgs();
    }

    public sealed class SystemSettingsState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Enable/disable link down path. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("allowLinkdownPath")]
        public Input<string>? AllowLinkdownPath { get; set; }

        /// <summary>
        /// Enable/disable allowing interface subnets to use overlapping IP addresses. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("allowSubnetOverlap")]
        public Input<string>? AllowSubnetOverlap { get; set; }

        /// <summary>
        /// Enable/disable application bandwidth tracking. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("applicationBandwidthTracking")]
        public Input<string>? ApplicationBandwidthTracking { get; set; }

        /// <summary>
        /// Enable/disable IPv4 asymmetric routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asymroute")]
        public Input<string>? Asymroute { get; set; }

        /// <summary>
        /// Enable/disable asymmetric IPv6 routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asymroute6")]
        public Input<string>? Asymroute6 { get; set; }

        /// <summary>
        /// Enable/disable asymmetric ICMPv6 routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asymroute6Icmp")]
        public Input<string>? Asymroute6Icmp { get; set; }

        /// <summary>
        /// Enable/disable ICMP asymmetric routing. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("asymrouteIcmp")]
        public Input<string>? AsymrouteIcmp { get; set; }

        /// <summary>
        /// Enable/disable auxiliary session. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("auxiliarySession")]
        public Input<string>? AuxiliarySession { get; set; }

        /// <summary>
        /// Enable/disable Bi-directional Forwarding Detection (BFD) on all interfaces. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("bfd")]
        public Input<string>? Bfd { get; set; }

        /// <summary>
        /// BFD desired minimal transmit interval (1 - 100000 ms, default = 50).
        /// </summary>
        [Input("bfdDesiredMinTx")]
        public Input<int>? BfdDesiredMinTx { get; set; }

        /// <summary>
        /// BFD detection multiplier (1 - 50, default = 3).
        /// </summary>
        [Input("bfdDetectMult")]
        public Input<int>? BfdDetectMult { get; set; }

        /// <summary>
        /// Enable to not enforce verifying the source port of BFD Packets. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("bfdDontEnforceSrcPort")]
        public Input<string>? BfdDontEnforceSrcPort { get; set; }

        /// <summary>
        /// BFD required minimal receive interval (1 - 100000 ms, default = 50).
        /// </summary>
        [Input("bfdRequiredMinRx")]
        public Input<int>? BfdRequiredMinRx { get; set; }

        /// <summary>
        /// Enable/disable blocking of land attacks. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("blockLandAttack")]
        public Input<string>? BlockLandAttack { get; set; }

        /// <summary>
        /// Enable/disable central NAT. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("centralNat")]
        public Input<string>? CentralNat { get; set; }

        /// <summary>
        /// VDOM comments.
        /// </summary>
        [Input("comments")]
        public Input<string>? Comments { get; set; }

        /// <summary>
        /// Enable/disable PCI DSS compliance checking. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("complianceCheck")]
        public Input<string>? ComplianceCheck { get; set; }

        /// <summary>
        /// Consolidated firewall mode.
        /// </summary>
        [Input("consolidatedFirewallMode")]
        public Input<string>? ConsolidatedFirewallMode { get; set; }

        /// <summary>
        /// Enable/disable policy service enforcement based on application default ports. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("defaultAppPortAsService")]
        public Input<string>? DefaultAppPortAsService { get; set; }

        /// <summary>
        /// Default policy expiry in days (0 - 365 days, default = 30).
        /// </summary>
        [Input("defaultPolicyExpiryDays")]
        public Input<int>? DefaultPolicyExpiryDays { get; set; }

        /// <summary>
        /// Configure how the FortiGate handles VoIP traffic when a policy that accepts the traffic doesn't include a VoIP profile. Valid values: `proxy-based`, `kernel-helper-based`.
        /// </summary>
        [Input("defaultVoipAlgMode")]
        public Input<string>? DefaultVoipAlgMode { get; set; }

        /// <summary>
        /// Enable/disable denying TCP by sending an ICMP communication prohibited packet. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("denyTcpWithIcmp")]
        public Input<string>? DenyTcpWithIcmp { get; set; }

        /// <summary>
        /// Interface to use for management access for NAT mode.
        /// </summary>
        [Input("device")]
        public Input<string>? Device { get; set; }

        /// <summary>
        /// DHCPv6 server IPv6 address.
        /// </summary>
        [Input("dhcp6ServerIp")]
        public Input<string>? Dhcp6ServerIp { get; set; }

        /// <summary>
        /// Enable/disable the DHCP Proxy. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dhcpProxy")]
        public Input<string>? DhcpProxy { get; set; }

        /// <summary>
        /// Specify outgoing interface to reach server.
        /// </summary>
        [Input("dhcpProxyInterface")]
        public Input<string>? DhcpProxyInterface { get; set; }

        /// <summary>
        /// Specify how to select outgoing interface to reach server. Valid values: `auto`, `sdwan`, `specify`.
        /// </summary>
        [Input("dhcpProxyInterfaceSelectMethod")]
        public Input<string>? DhcpProxyInterfaceSelectMethod { get; set; }

        /// <summary>
        /// DHCP Server IPv4 address.
        /// </summary>
        [Input("dhcpServerIp")]
        public Input<string>? DhcpServerIp { get; set; }

        /// <summary>
        /// Timeout for discovered devices (1 - 365 days, default = 28).
        /// </summary>
        [Input("discoveredDeviceTimeout")]
        public Input<int>? DiscoveredDeviceTimeout { get; set; }

        /// <summary>
        /// Enable/disable dirty session check caused by dynamic address updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("dynAddrSessionCheck")]
        public Input<string>? DynAddrSessionCheck { get; set; }

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        /// <summary>
        /// Maximum number of Equal Cost Multi-Path (ECMP) next-hops. Set to 1 to disable ECMP routing (1 - 100, default = 10).
        /// </summary>
        [Input("ecmpMaxPaths")]
        public Input<int>? EcmpMaxPaths { get; set; }

        /// <summary>
        /// Enable/disable using DNS to validate email addresses collected by a captive portal. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("emailPortalCheckDns")]
        public Input<string>? EmailPortalCheckDns { get; set; }

        /// <summary>
        /// Enable/disable dirty session check caused by external resource updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("extResourceSessionCheck")]
        public Input<string>? ExtResourceSessionCheck { get; set; }

        /// <summary>
        /// Select how to manage sessions affected by firewall policy configuration changes. Valid values: `check-all`, `check-new`, `check-policy-option`.
        /// </summary>
        [Input("firewallSessionDirty")]
        public Input<string>? FirewallSessionDirty { get; set; }

        /// <summary>
        /// Enable/disable dirty session check caused by FQDN updates. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("fqdnSessionCheck")]
        public Input<string>? FqdnSessionCheck { get; set; }

        /// <summary>
        /// Enable/disable checking for a matching policy each time hairpin traffic goes through the FortiGate. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("fwSessionHairpin")]
        public Input<string>? FwSessionHairpin { get; set; }

        /// <summary>
        /// Transparent mode IPv4 default gateway IP address.
        /// </summary>
        [Input("gateway")]
        public Input<string>? Gateway { get; set; }

        /// <summary>
        /// Transparent mode IPv4 default gateway IP address.
        /// </summary>
        [Input("gateway6")]
        public Input<string>? Gateway6 { get; set; }

        /// <summary>
        /// Enable/disable advanced policy configuration on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiAdvancedPolicy")]
        public Input<string>? GuiAdvancedPolicy { get; set; }

        /// <summary>
        /// Enable/disable advanced wireless features in GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiAdvancedWirelessFeatures")]
        public Input<string>? GuiAdvancedWirelessFeatures { get; set; }

        /// <summary>
        /// Enable/disable the requirement for policy naming on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiAllowUnnamedPolicy")]
        public Input<string>? GuiAllowUnnamedPolicy { get; set; }

        /// <summary>
        /// Enable/disable AntiVirus on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiAntivirus")]
        public Input<string>? GuiAntivirus { get; set; }

        /// <summary>
        /// Enable/disable FortiAP profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiApProfile")]
        public Input<string>? GuiApProfile { get; set; }

        /// <summary>
        /// Enable/disable application control on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiApplicationControl")]
        public Input<string>? GuiApplicationControl { get; set; }

        [Input("guiDefaultPolicyColumns")]
        private InputList<Inputs.SystemSettingsGuiDefaultPolicyColumnGetArgs>? _guiDefaultPolicyColumns;

        /// <summary>
        /// Default columns to display for policy lists on GUI. The structure of `gui_default_policy_columns` block is documented below.
        /// </summary>
        public InputList<Inputs.SystemSettingsGuiDefaultPolicyColumnGetArgs> GuiDefaultPolicyColumns
        {
            get => _guiDefaultPolicyColumns ?? (_guiDefaultPolicyColumns = new InputList<Inputs.SystemSettingsGuiDefaultPolicyColumnGetArgs>());
            set => _guiDefaultPolicyColumns = value;
        }

        /// <summary>
        /// Enable/disable advanced DHCP options on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDhcpAdvanced")]
        public Input<string>? GuiDhcpAdvanced { get; set; }

        /// <summary>
        /// Enable/disable DLP on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDlp")]
        public Input<string>? GuiDlp { get; set; }

        /// <summary>
        /// Enable/disable DNS database settings on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDnsDatabase")]
        public Input<string>? GuiDnsDatabase { get; set; }

        /// <summary>
        /// Enable/disable DNS Filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDnsfilter")]
        public Input<string>? GuiDnsfilter { get; set; }

        /// <summary>
        /// Enable/disable Domain and IP Reputation on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDomainIpReputation")]
        public Input<string>? GuiDomainIpReputation { get; set; }

        /// <summary>
        /// Enable/disable DoS policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDosPolicy")]
        public Input<string>? GuiDosPolicy { get; set; }

        /// <summary>
        /// Enable/disable RADIUS Single Sign On (RSSO) on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDynamicProfileDisplay")]
        public Input<string>? GuiDynamicProfileDisplay { get; set; }

        /// <summary>
        /// Enable/disable dynamic routing on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiDynamicRouting")]
        public Input<string>? GuiDynamicRouting { get; set; }

        /// <summary>
        /// Enable/disable email collection on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiEmailCollection")]
        public Input<string>? GuiEmailCollection { get; set; }

        /// <summary>
        /// Enable/disable endpoint control on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiEndpointControl")]
        public Input<string>? GuiEndpointControl { get; set; }

        /// <summary>
        /// Enable/disable advanced endpoint control options on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiEndpointControlAdvanced")]
        public Input<string>? GuiEndpointControlAdvanced { get; set; }

        /// <summary>
        /// Enforce change summaries for select tables in the GUI. Valid values: `disable`, `require`, `optional`.
        /// </summary>
        [Input("guiEnforceChangeSummary")]
        public Input<string>? GuiEnforceChangeSummary { get; set; }

        /// <summary>
        /// Enable/disable the explicit proxy on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiExplicitProxy")]
        public Input<string>? GuiExplicitProxy { get; set; }

        /// <summary>
        /// Enable/disable File-filter on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiFileFilter")]
        public Input<string>? GuiFileFilter { get; set; }

        /// <summary>
        /// Enable/disable FortiAP split tunneling on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiFortiapSplitTunneling")]
        public Input<string>? GuiFortiapSplitTunneling { get; set; }

        /// <summary>
        /// Enable/disable FortiExtender on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiFortiextenderController")]
        public Input<string>? GuiFortiextenderController { get; set; }

        /// <summary>
        /// Enable/disable ICAP on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiIcap")]
        public Input<string>? GuiIcap { get; set; }

        /// <summary>
        /// Enable/disable implicit firewall policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiImplicitPolicy")]
        public Input<string>? GuiImplicitPolicy { get; set; }

        /// <summary>
        /// Enable/disable IPS on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiIps")]
        public Input<string>? GuiIps { get; set; }

        /// <summary>
        /// Enable/disable server load balancing on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiLoadBalance")]
        public Input<string>? GuiLoadBalance { get; set; }

        /// <summary>
        /// Enable/disable Local-In policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiLocalInPolicy")]
        public Input<string>? GuiLocalInPolicy { get; set; }

        /// <summary>
        /// Enable/disable local reports on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiLocalReports")]
        public Input<string>? GuiLocalReports { get; set; }

        /// <summary>
        /// Enable/disable multicast firewall policies on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiMulticastPolicy")]
        public Input<string>? GuiMulticastPolicy { get; set; }

        /// <summary>
        /// Enable/disable adding multiple interfaces to a policy on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiMultipleInterfacePolicy")]
        public Input<string>? GuiMultipleInterfacePolicy { get; set; }

        /// <summary>
        /// Enable/disable multiple UTM profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiMultipleUtmProfiles")]
        public Input<string>? GuiMultipleUtmProfiles { get; set; }

        /// <summary>
        /// Enable/disable NAT46 and NAT64 settings on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiNat4664")]
        public Input<string>? GuiNat4664 { get; set; }

        /// <summary>
        /// Enable/disable object colors on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiObjectColors")]
        public Input<string>? GuiObjectColors { get; set; }

        /// <summary>
        /// Enable/disable Show Operational Technology Purdue Model. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiOt")]
        public Input<string>? GuiOt { get; set; }

        /// <summary>
        /// Enable/disable policy disclaimer on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiPerPolicyDisclaimer")]
        public Input<string>? GuiPerPolicyDisclaimer { get; set; }

        /// <summary>
        /// Enable/disable policy-based IPsec VPN on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiPolicyBasedIpsec")]
        public Input<string>? GuiPolicyBasedIpsec { get; set; }

        /// <summary>
        /// Enable/disable policy disclaimer on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiPolicyDisclaimer")]
        public Input<string>? GuiPolicyDisclaimer { get; set; }

        /// <summary>
        /// Enable/disable firewall policy learning mode on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiPolicyLearning")]
        public Input<string>? GuiPolicyLearning { get; set; }

        /// <summary>
        /// Enable/disable replacement message groups on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiReplacementMessageGroups")]
        public Input<string>? GuiReplacementMessageGroups { get; set; }

        /// <summary>
        /// Enable/disable Security Profile Groups on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSecurityProfileGroup")]
        public Input<string>? GuiSecurityProfileGroup { get; set; }

        /// <summary>
        /// Enable/disable Antispam on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSpamfilter")]
        public Input<string>? GuiSpamfilter { get; set; }

        /// <summary>
        /// Enable/disable SSL-VPN personal bookmark management on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSslvpnPersonalBookmarks")]
        public Input<string>? GuiSslvpnPersonalBookmarks { get; set; }

        /// <summary>
        /// Enable/disable SSL-VPN realms on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSslvpnRealms")]
        public Input<string>? GuiSslvpnRealms { get; set; }

        /// <summary>
        /// Enable/disable the switch controller on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiSwitchController")]
        public Input<string>? GuiSwitchController { get; set; }

        /// <summary>
        /// Enable/disable threat weight on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiThreatWeight")]
        public Input<string>? GuiThreatWeight { get; set; }

        /// <summary>
        /// Enable/disable traffic shaping on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiTrafficShaping")]
        public Input<string>? GuiTrafficShaping { get; set; }

        /// <summary>
        /// Enable/disable Video filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiVideofilter")]
        public Input<string>? GuiVideofilter { get; set; }

        /// <summary>
        /// Enable/disable VoIP profiles on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiVoipProfile")]
        public Input<string>? GuiVoipProfile { get; set; }

        /// <summary>
        /// Enable/disable VPN tunnels on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiVpn")]
        public Input<string>? GuiVpn { get; set; }

        /// <summary>
        /// Enable/disable Web Application Firewall on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWafProfile")]
        public Input<string>? GuiWafProfile { get; set; }

        /// <summary>
        /// Enable/disable SD-WAN on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWanLoadBalancing")]
        public Input<string>? GuiWanLoadBalancing { get; set; }

        /// <summary>
        /// Enable/disable WAN Optimization and Web Caching on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWanoptCache")]
        public Input<string>? GuiWanoptCache { get; set; }

        /// <summary>
        /// Enable/disable Web filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWebfilter")]
        public Input<string>? GuiWebfilter { get; set; }

        /// <summary>
        /// Enable/disable advanced web filtering on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWebfilterAdvanced")]
        public Input<string>? GuiWebfilterAdvanced { get; set; }

        /// <summary>
        /// Enable/disable the wireless controller on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiWirelessController")]
        public Input<string>? GuiWirelessController { get; set; }

        /// <summary>
        /// Enable/disable Zero Trust Network Access features on the GUI. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("guiZtna")]
        public Input<string>? GuiZtna { get; set; }

        /// <summary>
        /// Enable/disable H323 direct model. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("h323DirectModel")]
        public Input<string>? H323DirectModel { get; set; }

        /// <summary>
        /// Offload HTTP traffic to FortiWeb or FortiCache. Valid values: `fortiweb`, `forticache`.
        /// </summary>
        [Input("httpExternalDest")]
        public Input<string>? HttpExternalDest { get; set; }

        /// <summary>
        /// Configure IKE ASN.1 Distinguished Name format conventions. Valid values: `with-space`, `no-space`.
        /// </summary>
        [Input("ikeDnFormat")]
        public Input<string>? IkeDnFormat { get; set; }

        /// <summary>
        /// UDP port for IKE/IPsec traffic in NAT-T mode (default 4500).
        /// </summary>
        [Input("ikeNattPort")]
        public Input<int>? IkeNattPort { get; set; }

        /// <summary>
        /// Enable/disable IKE Policy Based Routing (PBR). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ikePolicyRoute")]
        public Input<string>? IkePolicyRoute { get; set; }

        /// <summary>
        /// UDP port for IKE/IPsec traffic (default 500).
        /// </summary>
        [Input("ikePort")]
        public Input<int>? IkePort { get; set; }

        /// <summary>
        /// Enable/disable IKE quick crash detection (RFC 6290). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ikeQuickCrashDetect")]
        public Input<string>? IkeQuickCrashDetect { get; set; }

        /// <summary>
        /// Enable/disable IKEv2 session resumption (RFC 5723). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ikeSessionResume")]
        public Input<string>? IkeSessionResume { get; set; }

        /// <summary>
        /// Enable/disable implicitly allowing DNS traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("implicitAllowDns")]
        public Input<string>? ImplicitAllowDns { get; set; }

        /// <summary>
        /// Inspection mode (proxy-based or flow-based). Valid values: `proxy`, `flow`.
        /// </summary>
        [Input("inspectionMode")]
        public Input<string>? InspectionMode { get; set; }

        /// <summary>
        /// IP address and netmask.
        /// </summary>
        [Input("ip")]
        public Input<string>? Ip { get; set; }

        /// <summary>
        /// IPv6 address prefix for NAT mode.
        /// </summary>
        [Input("ip6")]
        public Input<string>? Ip6 { get; set; }

        /// <summary>
        /// Controller IP address or FQDN to connect.
        /// </summary>
        [Input("lanExtensionControllerAddr")]
        public Input<string>? LanExtensionControllerAddr { get; set; }

        /// <summary>
        /// Enable/disable link down access traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("linkDownAccess")]
        public Input<string>? LinkDownAccess { get; set; }

        /// <summary>
        /// Enable/disable Link Layer Discovery Protocol (LLDP) reception for this VDOM or apply global settings to this VDOM. Valid values: `enable`, `disable`, `global`.
        /// </summary>
        [Input("lldpReception")]
        public Input<string>? LldpReception { get; set; }

        /// <summary>
        /// Enable/disable Link Layer Discovery Protocol (LLDP) transmission for this VDOM or apply global settings to this VDOM. Valid values: `enable`, `disable`, `global`.
        /// </summary>
        [Input("lldpTransmission")]
        public Input<string>? LldpTransmission { get; set; }

        /// <summary>
        /// Local location ID in the form of an IPv4 address.
        /// </summary>
        [Input("locationId")]
        public Input<string>? LocationId { get; set; }

        /// <summary>
        /// Duration of MAC addresses in Transparent mode (300 - 8640000 sec, default = 300).
        /// </summary>
        [Input("macTtl")]
        public Input<int>? MacTtl { get; set; }

        /// <summary>
        /// Transparent mode IPv4 management IP address and netmask.
        /// </summary>
        [Input("manageip")]
        public Input<string>? Manageip { get; set; }

        /// <summary>
        /// Transparent mode IPv6 management IP address and netmask.
        /// </summary>
        [Input("manageip6")]
        public Input<string>? Manageip6 { get; set; }

        /// <summary>
        /// Enable/disable multicast forwarding. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("multicastForward")]
        public Input<string>? MulticastForward { get; set; }

        /// <summary>
        /// Enable/disable allowing multicast traffic through the FortiGate without a policy check. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("multicastSkipPolicy")]
        public Input<string>? MulticastSkipPolicy { get; set; }

        /// <summary>
        /// Enable/disable preventing the FortiGate from changing the TTL for forwarded multicast packets. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("multicastTtlNotchange")]
        public Input<string>? MulticastTtlNotchange { get; set; }

        /// <summary>
        /// Enable/disable mandatory IPv4 packet forwarding in NAT46. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("nat46ForceIpv4PacketForwarding")]
        public Input<string>? Nat46ForceIpv4PacketForwarding { get; set; }

        /// <summary>
        /// Enable/disable NAT46 IPv6 fragment header generation. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("nat46GenerateIpv6FragmentHeader")]
        public Input<string>? Nat46GenerateIpv6FragmentHeader { get; set; }

        /// <summary>
        /// Enable/disable mandatory IPv6 packet forwarding in NAT64. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("nat64ForceIpv6PacketForwarding")]
        public Input<string>? Nat64ForceIpv6PacketForwarding { get; set; }

        /// <summary>
        /// Next Generation Firewall (NGFW) mode. Valid values: `profile-based`, `policy-based`.
        /// </summary>
        [Input("ngfwMode")]
        public Input<string>? NgfwMode { get; set; }

        /// <summary>
        /// Firewall operation mode (NAT or Transparent). Valid values: `nat`, `transparent`.
        /// </summary>
        [Input("opmode")]
        public Input<string>? Opmode { get; set; }

        /// <summary>
        /// Enable/disable action to take on PRP trailer. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("prpTrailerAction")]
        public Input<string>? PrpTrailerAction { get; set; }

        /// <summary>
        /// TCP port the SCCP proxy monitors for SCCP traffic (0 - 65535, default = 2000).
        /// </summary>
        [Input("sccpPort")]
        public Input<int>? SccpPort { get; set; }

        /// <summary>
        /// Enable/disable SCTP session creation without SCTP INIT. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sctpSessionWithoutInit")]
        public Input<string>? SctpSessionWithoutInit { get; set; }

        /// <summary>
        /// Enable/disable including denied session in the session table. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sesDeniedTraffic")]
        public Input<string>? SesDeniedTraffic { get; set; }

        /// <summary>
        /// Enable/disable the SIP kernel session helper to create an expectation for port 5060. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sipExpectation")]
        public Input<string>? SipExpectation { get; set; }

        /// <summary>
        /// Enable/disable the SIP session helper to process SIP sessions unless SIP sessions are accepted by the SIP application layer gateway (ALG). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sipHelper")]
        public Input<string>? SipHelper { get; set; }

        /// <summary>
        /// Enable/disable recording the original SIP source IP address when NAT is used. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sipNatTrace")]
        public Input<string>? SipNatTrace { get; set; }

        /// <summary>
        /// TCP port the SIP proxy monitors for SIP SSL/TLS traffic (0 - 65535, default = 5061).
        /// </summary>
        [Input("sipSslPort")]
        public Input<int>? SipSslPort { get; set; }

        /// <summary>
        /// TCP port the SIP proxy monitors for SIP traffic (0 - 65535, default = 5060).
        /// </summary>
        [Input("sipTcpPort")]
        public Input<int>? SipTcpPort { get; set; }

        /// <summary>
        /// UDP port the SIP proxy monitors for SIP traffic (0 - 65535, default = 5060).
        /// </summary>
        [Input("sipUdpPort")]
        public Input<int>? SipUdpPort { get; set; }

        /// <summary>
        /// Enable/disable source NAT (SNAT) for hairpin traffic. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("snatHairpinTraffic")]
        public Input<string>? SnatHairpinTraffic { get; set; }

        /// <summary>
        /// Profile for SSL/SSH inspection.
        /// </summary>
        [Input("sslSshProfile")]
        public Input<string>? SslSshProfile { get; set; }

        /// <summary>
        /// Enable/disable this VDOM. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Enable/disable strict source verification. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("strictSrcCheck")]
        public Input<string>? StrictSrcCheck { get; set; }

        /// <summary>
        /// Enable/disable allowing TCP session without SYN flags. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("tcpSessionWithoutSyn")]
        public Input<string>? TcpSessionWithoutSyn { get; set; }

        /// <summary>
        /// Enable/disable converting antispam tags to UTF-8 for better non-ASCII character support. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("utf8SpamTagging")]
        public Input<string>? Utf8SpamTagging { get; set; }

        /// <summary>
        /// IPv4 Equal-cost multi-path (ECMP) routing and load balancing mode. Valid values: `source-ip-based`, `weight-based`, `usage-based`, `source-dest-ip-based`.
        /// </summary>
        [Input("v4EcmpMode")]
        public Input<string>? V4EcmpMode { get; set; }

        /// <summary>
        /// VDOM type (traffic or admin).
        /// </summary>
        [Input("vdomType")]
        public Input<string>? VdomType { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        /// <summary>
        /// Enable/disable periodic VPN log statistics for one or more types of VPN. Separate names with a space. Valid values: `ipsec`, `pptp`, `l2tp`, `ssl`.
        /// </summary>
        [Input("vpnStatsLog")]
        public Input<string>? VpnStatsLog { get; set; }

        /// <summary>
        /// Period to send VPN log statistics (0 or 60 - 86400 sec).
        /// </summary>
        [Input("vpnStatsPeriod")]
        public Input<int>? VpnStatsPeriod { get; set; }

        /// <summary>
        /// Enable/disable WCCP cache engine. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("wccpCacheEngine")]
        public Input<string>? WccpCacheEngine { get; set; }

        public SystemSettingsState()
        {
        }
        public static new SystemSettingsState Empty => new SystemSettingsState();
    }
}
