<reponame>pulumiverse/pulumi-fortios// *** 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.Outputs
{

    [OutputType]
    public sealed class SystemSdwanService
    {
        /// <summary>
        /// Address mode (IPv4 or IPv6). Valid values: `ipv4`, `ipv6`.
        /// </summary>
        public readonly string? AddrMode;
        /// <summary>
        /// Coefficient of reciprocal of available bidirectional bandwidth in the formula of custom-profile-1.
        /// </summary>
        public readonly int? BandwidthWeight;
        /// <summary>
        /// Enable/disable use of SD-WAN as default service. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? Default;
        /// <summary>
        /// Enable/disable forward traffic DSCP tag. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? DscpForward;
        /// <summary>
        /// Forward traffic DSCP tag.
        /// </summary>
        public readonly string? DscpForwardTag;
        /// <summary>
        /// Enable/disable reverse traffic DSCP tag. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? DscpReverse;
        /// <summary>
        /// Reverse traffic DSCP tag.
        /// </summary>
        public readonly string? DscpReverseTag;
        /// <summary>
        /// Destination address6 name. The structure of `dst6` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceDst6> Dst6s;
        /// <summary>
        /// Enable/disable negation of destination address match. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? DstNegate;
        /// <summary>
        /// Destination address name. The structure of `dst` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceDst> Dsts;
        /// <summary>
        /// End destination port number.
        /// </summary>
        public readonly int? EndPort;
        /// <summary>
        /// Enable/disable SD-WAN service gateway. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? Gateway;
        /// <summary>
        /// User groups. The structure of `groups` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceGroup> Groups;
        /// <summary>
        /// Hash algorithm for selected priority members for load balance mode. Valid values: `round-robin`, `source-ip-based`, `source-dest-ip-based`, `inbandwidth`, `outbandwidth`, `bibandwidth`.
        /// </summary>
        public readonly string? HashMode;
        /// <summary>
        /// Health check list. The structure of `health_check` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceHealthCheck> HealthChecks;
        /// <summary>
        /// Waiting period in seconds when switching from the back-up member to the primary member (0 - 10000000, default = 0).
        /// </summary>
        public readonly int? HoldDownTime;
        /// <summary>
        /// SD-WAN rule ID (1 - 4000).
        /// </summary>
        public readonly int? Id;
        /// <summary>
        /// Enable/disable negation of input device match. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? InputDeviceNegate;
        /// <summary>
        /// Source interface name. The structure of `input_device` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInputDevice> InputDevices;
        /// <summary>
        /// Source input-zone name. The structure of `input_zone` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInputZone> InputZones;
        /// <summary>
        /// Enable/disable use of Internet service for application-based load balancing. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? InternetService;
        /// <summary>
        /// IDs of one or more application control categories. The structure of `internet_service_app_ctrl_category` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInternetServiceAppCtrlCategory> InternetServiceAppCtrlCategories;
        /// <summary>
        /// Application control based Internet Service group list. The structure of `internet_service_app_ctrl_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInternetServiceAppCtrlGroup> InternetServiceAppCtrlGroups;
        /// <summary>
        /// Application control based Internet Service ID list. The structure of `internet_service_app_ctrl` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInternetServiceAppCtrl> InternetServiceAppCtrls;
        /// <summary>
        /// Custom Internet Service group list. The structure of `internet_service_custom_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInternetServiceCustomGroup> InternetServiceCustomGroups;
        /// <summary>
        /// Custom Internet service name list. The structure of `internet_service_custom` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInternetServiceCustom> InternetServiceCustoms;
        /// <summary>
        /// Internet Service group list. The structure of `internet_service_group` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInternetServiceGroup> InternetServiceGroups;
        /// <summary>
        /// Internet service name list. The structure of `internet_service_name` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceInternetServiceName> InternetServiceNames;
        /// <summary>
        /// Coefficient of jitter in the formula of custom-profile-1.
        /// </summary>
        public readonly int? JitterWeight;
        /// <summary>
        /// Coefficient of latency in the formula of custom-profile-1.
        /// </summary>
        public readonly int? LatencyWeight;
        /// <summary>
        /// Link cost factor. Valid values: `latency`, `jitter`, `packet-loss`, `inbandwidth`, `outbandwidth`, `bibandwidth`, `custom-profile-1`.
        /// </summary>
        public readonly string? LinkCostFactor;
        /// <summary>
        /// Percentage threshold change of link cost values that will result in policy route regeneration (0 - 10000000, default = 10).
        /// </summary>
        public readonly int? LinkCostThreshold;
        /// <summary>
        /// Minimum number of members which meet SLA.
        /// </summary>
        public readonly int? MinimumSlaMeetMembers;
        /// <summary>
        /// Control how the SD-WAN rule sets the priority of interfaces in the SD-WAN. Valid values: `auto`, `manual`, `priority`, `sla`, `load-balance`.
        /// </summary>
        public readonly string? Mode;
        /// <summary>
        /// Service and service group name.
        /// </summary>
        public readonly string? Name;
        /// <summary>
        /// Coefficient of packet-loss in the formula of custom-profile-1.
        /// </summary>
        public readonly int? PacketLossWeight;
        /// <summary>
        /// Enable/disable passive measurement based on the service criteria. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? PassiveMeasurement;
        /// <summary>
        /// Member sequence number list. The structure of `priority_members` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServicePriorityMember> PriorityMembers;
        /// <summary>
        /// Priority zone name list. The structure of `priority_zone` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServicePriorityZone> PriorityZones;
        /// <summary>
        /// Protocol number.
        /// </summary>
        public readonly int? Protocol;
        /// <summary>
        /// Quality grade.
        /// </summary>
        public readonly int? QualityLink;
        /// <summary>
        /// Service role to work with neighbor. Valid values: `standalone`, `primary`, `secondary`.
        /// </summary>
        public readonly string? Role;
        /// <summary>
        /// IPv4 route map route-tag.
        /// </summary>
        public readonly int? RouteTag;
        /// <summary>
        /// Method to compare SLA value for SLA mode. Valid values: `order`, `number`.
        /// </summary>
        public readonly string? SlaCompareMethod;
        /// <summary>
        /// Service level agreement (SLA). The structure of `sla` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceSla> Slas;
        /// <summary>
        /// Source address6 name. The structure of `src6` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceSrc6> Src6s;
        /// <summary>
        /// Enable/disable negation of source address match. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? SrcNegate;
        /// <summary>
        /// Source address name. The structure of `src` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceSrc> Srcs;
        /// <summary>
        /// Enable/disable service when selected neighbor role is standalone while service role is not standalone. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? StandaloneAction;
        /// <summary>
        /// Start destination port number.
        /// </summary>
        public readonly int? StartPort;
        /// <summary>
        /// Enable/disable SD-WAN service. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? Status;
        /// <summary>
        /// Method of selecting member if more than one meets the SLA.
        /// </summary>
        public readonly string? TieBreak;
        /// <summary>
        /// Type of service bit pattern.
        /// </summary>
        public readonly string? Tos;
        /// <summary>
        /// Type of service evaluated bits.
        /// </summary>
        public readonly string? TosMask;
        /// <summary>
        /// Enable/disable use of ADVPN shortcut for quality comparison. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? UseShortcutSla;
        /// <summary>
        /// User name. The structure of `users` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanServiceUser> Users;

        [OutputConstructor]
        private SystemSdwanService(
            string? addrMode,

            int? bandwidthWeight,

            string? @default,

            string? dscpForward,

            string? dscpForwardTag,

            string? dscpReverse,

            string? dscpReverseTag,

            ImmutableArray<Outputs.SystemSdwanServiceDst6> dst6s,

            string? dstNegate,

            ImmutableArray<Outputs.SystemSdwanServiceDst> dsts,

            int? endPort,

            string? gateway,

            ImmutableArray<Outputs.SystemSdwanServiceGroup> groups,

            string? hashMode,

            ImmutableArray<Outputs.SystemSdwanServiceHealthCheck> healthChecks,

            int? holdDownTime,

            int? id,

            string? inputDeviceNegate,

            ImmutableArray<Outputs.SystemSdwanServiceInputDevice> inputDevices,

            ImmutableArray<Outputs.SystemSdwanServiceInputZone> inputZones,

            string? internetService,

            ImmutableArray<Outputs.SystemSdwanServiceInternetServiceAppCtrlCategory> internetServiceAppCtrlCategories,

            ImmutableArray<Outputs.SystemSdwanServiceInternetServiceAppCtrlGroup> internetServiceAppCtrlGroups,

            ImmutableArray<Outputs.SystemSdwanServiceInternetServiceAppCtrl> internetServiceAppCtrls,

            ImmutableArray<Outputs.SystemSdwanServiceInternetServiceCustomGroup> internetServiceCustomGroups,

            ImmutableArray<Outputs.SystemSdwanServiceInternetServiceCustom> internetServiceCustoms,

            ImmutableArray<Outputs.SystemSdwanServiceInternetServiceGroup> internetServiceGroups,

            ImmutableArray<Outputs.SystemSdwanServiceInternetServiceName> internetServiceNames,

            int? jitterWeight,

            int? latencyWeight,

            string? linkCostFactor,

            int? linkCostThreshold,

            int? minimumSlaMeetMembers,

            string? mode,

            string? name,

            int? packetLossWeight,

            string? passiveMeasurement,

            ImmutableArray<Outputs.SystemSdwanServicePriorityMember> priorityMembers,

            ImmutableArray<Outputs.SystemSdwanServicePriorityZone> priorityZones,

            int? protocol,

            int? qualityLink,

            string? role,

            int? routeTag,

            string? slaCompareMethod,

            ImmutableArray<Outputs.SystemSdwanServiceSla> slas,

            ImmutableArray<Outputs.SystemSdwanServiceSrc6> src6s,

            string? srcNegate,

            ImmutableArray<Outputs.SystemSdwanServiceSrc> srcs,

            string? standaloneAction,

            int? startPort,

            string? status,

            string? tieBreak,

            string? tos,

            string? tosMask,

            string? useShortcutSla,

            ImmutableArray<Outputs.SystemSdwanServiceUser> users)
        {
            AddrMode = addrMode;
            BandwidthWeight = bandwidthWeight;
            Default = @default;
            DscpForward = dscpForward;
            DscpForwardTag = dscpForwardTag;
            DscpReverse = dscpReverse;
            DscpReverseTag = dscpReverseTag;
            Dst6s = dst6s;
            DstNegate = dstNegate;
            Dsts = dsts;
            EndPort = endPort;
            Gateway = gateway;
            Groups = groups;
            HashMode = hashMode;
            HealthChecks = healthChecks;
            HoldDownTime = holdDownTime;
            Id = id;
            InputDeviceNegate = inputDeviceNegate;
            InputDevices = inputDevices;
            InputZones = inputZones;
            InternetService = internetService;
            InternetServiceAppCtrlCategories = internetServiceAppCtrlCategories;
            InternetServiceAppCtrlGroups = internetServiceAppCtrlGroups;
            InternetServiceAppCtrls = internetServiceAppCtrls;
            InternetServiceCustomGroups = internetServiceCustomGroups;
            InternetServiceCustoms = internetServiceCustoms;
            InternetServiceGroups = internetServiceGroups;
            InternetServiceNames = internetServiceNames;
            JitterWeight = jitterWeight;
            LatencyWeight = latencyWeight;
            LinkCostFactor = linkCostFactor;
            LinkCostThreshold = linkCostThreshold;
            MinimumSlaMeetMembers = minimumSlaMeetMembers;
            Mode = mode;
            Name = name;
            PacketLossWeight = packetLossWeight;
            PassiveMeasurement = passiveMeasurement;
            PriorityMembers = priorityMembers;
            PriorityZones = priorityZones;
            Protocol = protocol;
            QualityLink = qualityLink;
            Role = role;
            RouteTag = routeTag;
            SlaCompareMethod = slaCompareMethod;
            Slas = slas;
            Src6s = src6s;
            SrcNegate = srcNegate;
            Srcs = srcs;
            StandaloneAction = standaloneAction;
            StartPort = startPort;
            Status = status;
            TieBreak = tieBreak;
            Tos = tos;
            TosMask = tosMask;
            UseShortcutSla = useShortcutSla;
            Users = users;
        }
    }
}
