// *** 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 SystemSdwanDuplication
    {
        /// <summary>
        /// Destination address6 or address6 group names. The structure of `dstaddr6` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanDuplicationDstaddr6> Dstaddr6s;
        /// <summary>
        /// Destination address or address group names. The structure of `dstaddr` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanDuplicationDstaddr> Dstaddrs;
        /// <summary>
        /// Outgoing (egress) interfaces or zones. The structure of `dstintf` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanDuplicationDstintf> Dstintfs;
        /// <summary>
        /// Duplication rule ID (1 - 255).
        /// </summary>
        public readonly int? Id;
        /// <summary>
        /// Enable/disable discarding of packets that have been duplicated. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? PacketDeDuplication;
        /// <summary>
        /// Configure packet duplication method. Valid values: `disable`, `force`, `on-demand`.
        /// </summary>
        public readonly string? PacketDuplication;
        /// <summary>
        /// SD-WAN service rule ID list. The structure of `service_id` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanDuplicationServiceId> ServiceIds;
        /// <summary>
        /// Service and service group name. The structure of `service` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanDuplicationService> Services;
        /// <summary>
        /// Enable/disable packet duplication matching health-check SLAs in service rule. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? SlaMatchService;
        /// <summary>
        /// Source address6 or address6 group names. The structure of `srcaddr6` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanDuplicationSrcaddr6> Srcaddr6s;
        /// <summary>
        /// Source address or address group names. The structure of `srcaddr` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanDuplicationSrcaddr> Srcaddrs;
        /// <summary>
        /// Incoming (ingress) interfaces or zones. The structure of `srcintf` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemSdwanDuplicationSrcintf> Srcintfs;

        [OutputConstructor]
        private SystemSdwanDuplication(
            ImmutableArray<Outputs.SystemSdwanDuplicationDstaddr6> dstaddr6s,

            ImmutableArray<Outputs.SystemSdwanDuplicationDstaddr> dstaddrs,

            ImmutableArray<Outputs.SystemSdwanDuplicationDstintf> dstintfs,

            int? id,

            string? packetDeDuplication,

            string? packetDuplication,

            ImmutableArray<Outputs.SystemSdwanDuplicationServiceId> serviceIds,

            ImmutableArray<Outputs.SystemSdwanDuplicationService> services,

            string? slaMatchService,

            ImmutableArray<Outputs.SystemSdwanDuplicationSrcaddr6> srcaddr6s,

            ImmutableArray<Outputs.SystemSdwanDuplicationSrcaddr> srcaddrs,

            ImmutableArray<Outputs.SystemSdwanDuplicationSrcintf> srcintfs)
        {
            Dstaddr6s = dstaddr6s;
            Dstaddrs = dstaddrs;
            Dstintfs = dstintfs;
            Id = id;
            PacketDeDuplication = packetDeDuplication;
            PacketDuplication = packetDuplication;
            ServiceIds = serviceIds;
            Services = services;
            SlaMatchService = slaMatchService;
            Srcaddr6s = srcaddr6s;
            Srcaddrs = srcaddrs;
            Srcintfs = srcintfs;
        }
    }
}
