// *** 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 RouterMulticastPimSmGlobalArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Sources allowed to register packets with this Rendezvous Point (RP).
        /// </summary>
        [Input("acceptRegisterList")]
        public Input<string>? AcceptRegisterList { get; set; }

        /// <summary>
        /// Sources allowed to send multicast traffic.
        /// </summary>
        [Input("acceptSourceList")]
        public Input<string>? AcceptSourceList { get; set; }

        /// <summary>
        /// Enable/disable accept BSR quick refresh packets from neighbors. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("bsrAllowQuickRefresh")]
        public Input<string>? BsrAllowQuickRefresh { get; set; }

        /// <summary>
        /// Enable/disable allowing this router to become a bootstrap router (BSR). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("bsrCandidate")]
        public Input<string>? BsrCandidate { get; set; }

        /// <summary>
        /// BSR hash length (0 - 32, default = 10).
        /// </summary>
        [Input("bsrHash")]
        public Input<int>? BsrHash { get; set; }

        /// <summary>
        /// Interface to advertise as candidate BSR.
        /// </summary>
        [Input("bsrInterface")]
        public Input<string>? BsrInterface { get; set; }

        /// <summary>
        /// BSR priority (0 - 255, default = 0).
        /// </summary>
        [Input("bsrPriority")]
        public Input<int>? BsrPriority { get; set; }

        /// <summary>
        /// Enable/disable making candidate RP compatible with old Cisco IOS. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ciscoCrpPrefix")]
        public Input<string>? CiscoCrpPrefix { get; set; }

        /// <summary>
        /// Use only hash for RP selection (compatibility with old Cisco IOS). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ciscoIgnoreRpSetPriority")]
        public Input<string>? CiscoIgnoreRpSetPriority { get; set; }

        /// <summary>
        /// Checksum entire register packet(for old Cisco IOS compatibility). Valid values: `enable`, `disable`.
        /// </summary>
        [Input("ciscoRegisterChecksum")]
        public Input<string>? CiscoRegisterChecksum { get; set; }

        /// <summary>
        /// Cisco register checksum only these groups.
        /// </summary>
        [Input("ciscoRegisterChecksumGroup")]
        public Input<string>? CiscoRegisterChecksumGroup { get; set; }

        /// <summary>
        /// Join/prune holdtime (1 - 65535, default = 210).
        /// </summary>
        [Input("joinPruneHoldtime")]
        public Input<int>? JoinPruneHoldtime { get; set; }

        /// <summary>
        /// Period of time between sending periodic PIM join/prune messages in seconds (1 - 65535, default = 60).
        /// </summary>
        [Input("messageInterval")]
        public Input<int>? MessageInterval { get; set; }

        /// <summary>
        /// Maximum retries of null register (1 - 20, default = 1).
        /// </summary>
        [Input("nullRegisterRetries")]
        public Input<int>? NullRegisterRetries { get; set; }

        /// <summary>
        /// Limit of packets/sec per source registered through this RP (0 - 65535, default = 0 which means unlimited).
        /// </summary>
        [Input("registerRateLimit")]
        public Input<int>? RegisterRateLimit { get; set; }

        /// <summary>
        /// Enable/disable check RP is reachable before registering packets. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("registerRpReachability")]
        public Input<string>? RegisterRpReachability { get; set; }

        /// <summary>
        /// Override source address in register packets. Valid values: `disable`, `interface`, `ip-address`.
        /// </summary>
        [Input("registerSource")]
        public Input<string>? RegisterSource { get; set; }

        /// <summary>
        /// Override with primary interface address.
        /// </summary>
        [Input("registerSourceInterface")]
        public Input<string>? RegisterSourceInterface { get; set; }

        /// <summary>
        /// Override with local IP address.
        /// </summary>
        [Input("registerSourceIp")]
        public Input<string>? RegisterSourceIp { get; set; }

        /// <summary>
        /// Period of time to honor register-stop message (1 - 65535 sec, default = 60).
        /// </summary>
        [Input("registerSupression")]
        public Input<int>? RegisterSupression { get; set; }

        [Input("rpAddresses")]
        private InputList<Inputs.RouterMulticastPimSmGlobalRpAddressArgs>? _rpAddresses;

        /// <summary>
        /// Statically configure RP addresses. The structure of `rp_address` block is documented below.
        /// </summary>
        public InputList<Inputs.RouterMulticastPimSmGlobalRpAddressArgs> RpAddresses
        {
            get => _rpAddresses ?? (_rpAddresses = new InputList<Inputs.RouterMulticastPimSmGlobalRpAddressArgs>());
            set => _rpAddresses = value;
        }

        /// <summary>
        /// Timeout for RP receiving data on (S,G) tree (1 - 65535 sec, default = 185).
        /// </summary>
        [Input("rpRegisterKeepalive")]
        public Input<int>? RpRegisterKeepalive { get; set; }

        /// <summary>
        /// Enable/disable switching to source specific trees. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("sptThreshold")]
        public Input<string>? SptThreshold { get; set; }

        /// <summary>
        /// Groups allowed to switch to source tree.
        /// </summary>
        [Input("sptThresholdGroup")]
        public Input<string>? SptThresholdGroup { get; set; }

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

        /// <summary>
        /// Groups allowed to source specific multicast.
        /// </summary>
        [Input("ssmRange")]
        public Input<string>? SsmRange { get; set; }

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