<filename>sdk/dotnet/GetRouterMulticast.cs// *** 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
{
    public static class GetRouterMulticast
    {
        /// <summary>
        /// Use this data source to get information on fortios router multicast
        /// </summary>
        public static Task<GetRouterMulticastResult> InvokeAsync(GetRouterMulticastArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetRouterMulticastResult>("fortios:index/getRouterMulticast:getRouterMulticast", args ?? new GetRouterMulticastArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on fortios router multicast
        /// </summary>
        public static Output<GetRouterMulticastResult> Invoke(GetRouterMulticastInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetRouterMulticastResult>("fortios:index/getRouterMulticast:getRouterMulticast", args ?? new GetRouterMulticastInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetRouterMulticastArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specifies the vdom to which the data source 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 string? Vdomparam { get; set; }

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

    public sealed class GetRouterMulticastInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specifies the vdom to which the data source 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; }

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


    [OutputType]
    public sealed class GetRouterMulticastResult
    {
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// PIM interfaces. The structure of `interface` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterMulticastInterfaceResult> Interfaces;
        /// <summary>
        /// Enable/disable IP multicast routing.
        /// </summary>
        public readonly string MulticastRouting;
        /// <summary>
        /// PIM sparse-mode global settings. The structure of `pim_sm_global` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterMulticastPimSmGlobalResult> PimSmGlobals;
        /// <summary>
        /// Maximum number of multicast routes.
        /// </summary>
        public readonly int RouteLimit;
        /// <summary>
        /// Generate warnings when the number of multicast routes exceeds this number, must not be greater than route-limit.
        /// </summary>
        public readonly int RouteThreshold;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetRouterMulticastResult(
            string id,

            ImmutableArray<Outputs.GetRouterMulticastInterfaceResult> interfaces,

            string multicastRouting,

            ImmutableArray<Outputs.GetRouterMulticastPimSmGlobalResult> pimSmGlobals,

            int routeLimit,

            int routeThreshold,

            string? vdomparam)
        {
            Id = id;
            Interfaces = interfaces;
            MulticastRouting = multicastRouting;
            PimSmGlobals = pimSmGlobals;
            RouteLimit = routeLimit;
            RouteThreshold = routeThreshold;
            Vdomparam = vdomparam;
        }
    }
}
