// *** 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.Inputs
{

    public sealed class RouterMulticastInterfaceArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Enable/disable Protocol Independent Multicast (PIM) Bidirectional Forwarding Detection (BFD). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("bfd")]
        public Input<string>? Bfd { get; set; }

        /// <summary>
        /// Exclude GenID from hello packets (compatibility with old Cisco IOS). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ciscoExcludeGenid")]
        public Input<string>? CiscoExcludeGenid { get; set; }

        /// <summary>
        /// DR election priority.
        /// </summary>
        [Input("drPriority")]
        public Input<int>? DrPriority { get; set; }

        /// <summary>
        /// Time before old neighbor information expires (0 - 65535 sec, default = 105).
        /// </summary>
        [Input("helloHoldtime")]
        public Input<int>? HelloHoldtime { get; set; }

        /// <summary>
        /// Interval between sending PIM hello messages (0 - 65535 sec, default = 30).
        /// </summary>
        [Input("helloInterval")]
        public Input<int>? HelloInterval { get; set; }

        /// <summary>
        /// IGMP configuration options. The structure of `igmp` block is documented below.
        /// </summary>
        [Input("igmp")]
        public Input<Inputs.RouterMulticastInterfaceIgmpArgs>? Igmp { get; set; }

        [Input("joinGroups")]
        private InputList<Inputs.RouterMulticastInterfaceJoinGroupArgs>? _joinGroups;

        /// <summary>
        /// Join multicast groups. The structure of `join_group` block is documented below.
        /// </summary>
        public InputList<Inputs.RouterMulticastInterfaceJoinGroupArgs> JoinGroups
        {
            get => _joinGroups ?? (_joinGroups = new InputList<Inputs.RouterMulticastInterfaceJoinGroupArgs>());
            set => _joinGroups = value;
        }

        /// <summary>
        /// Acceptable source for multicast group.
        /// </summary>
        [Input("multicastFlow")]
        public Input<string>? MulticastFlow { get; set; }

        /// <summary>
        /// Interface name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Routers acknowledged as neighbor routers.
        /// </summary>
        [Input("neighbourFilter")]
        public Input<string>? NeighbourFilter { get; set; }

        /// <summary>
        /// Enable/disable listening to IGMP but not participating in PIM. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("passive")]
        public Input<string>? Passive { get; set; }

        /// <summary>
        /// PIM operation mode. Valid values: `sparse-mode`, `dense-mode`.
        /// </summary>
        [Input("pimMode")]
        public Input<string>? PimMode { get; set; }

        /// <summary>
        /// Delay flooding packets on this interface (100 - 5000 msec, default = 500).
        /// </summary>
        [Input("propagationDelay")]
        public Input<int>? PropagationDelay { get; set; }

        /// <summary>
        /// Enable/disable compete to become RP in elections. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("rpCandidate")]
        public Input<string>? RpCandidate { get; set; }

        /// <summary>
        /// Multicast groups managed by this RP.
        /// </summary>
        [Input("rpCandidateGroup")]
        public Input<string>? RpCandidateGroup { get; set; }

        /// <summary>
        /// RP candidate advertisement interval (1 - 16383 sec, default = 60).
        /// </summary>
        [Input("rpCandidateInterval")]
        public Input<int>? RpCandidateInterval { get; set; }

        /// <summary>
        /// Router's priority as RP.
        /// </summary>
        [Input("rpCandidatePriority")]
        public Input<int>? RpCandidatePriority { get; set; }

        /// <summary>
        /// Enable/disable fail back for RPF neighbor query. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("rpfNbrFailBack")]
        public Input<string>? RpfNbrFailBack { get; set; }

        /// <summary>
        /// Filter for fail back RPF neighbors.
        /// </summary>
        [Input("rpfNbrFailBackFilter")]
        public Input<string>? RpfNbrFailBackFilter { get; set; }

        /// <summary>
        /// Interval between sending state-refresh packets (1 - 100 sec, default = 60).
        /// </summary>
        [Input("stateRefreshInterval")]
        public Input<int>? StateRefreshInterval { get; set; }

        /// <summary>
        /// Statically set multicast groups to forward out.
        /// </summary>
        [Input("staticGroup")]
        public Input<string>? StaticGroup { get; set; }

        /// <summary>
        /// Minimum TTL of multicast packets that will be forwarded (applied only to new multicast routes) (1 - 255, default = 1).
        /// </summary>
        [Input("ttlThreshold")]
        public Input<int>? TtlThreshold { get; set; }

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