// *** 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 GetRouterRipng
    {
        /// <summary>
        /// Use this data source to get information on fortios router ripng
        /// </summary>
        public static Task<GetRouterRipngResult> InvokeAsync(GetRouterRipngArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetRouterRipngResult>("fortios:index/getRouterRipng:getRouterRipng", args ?? new GetRouterRipngArgs(), options.WithDefaults());

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


    public sealed class GetRouterRipngArgs : 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 GetRouterRipngArgs()
        {
        }
        public static new GetRouterRipngArgs Empty => new GetRouterRipngArgs();
    }

    public sealed class GetRouterRipngInvokeArgs : 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 GetRouterRipngInvokeArgs()
        {
        }
        public static new GetRouterRipngInvokeArgs Empty => new GetRouterRipngInvokeArgs();
    }


    [OutputType]
    public sealed class GetRouterRipngResult
    {
        /// <summary>
        /// Aggregate address. The structure of `aggregate_address` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngAggregateAddressResult> AggregateAddresses;
        /// <summary>
        /// Enable/disable generation of default route.
        /// </summary>
        public readonly string DefaultInformationOriginate;
        /// <summary>
        /// Default metric.
        /// </summary>
        public readonly int DefaultMetric;
        /// <summary>
        /// Distance (1 - 255).
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngDistanceResult> Distances;
        /// <summary>
        /// Distribute list. The structure of `distribute_list` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngDistributeListResult> DistributeLists;
        /// <summary>
        /// Garbage timer.
        /// </summary>
        public readonly int GarbageTimer;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Interface name.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngInterfaceResult> Interfaces;
        /// <summary>
        /// Maximum metric allowed to output(0 means 'not set').
        /// </summary>
        public readonly int MaxOutMetric;
        /// <summary>
        /// neighbor The structure of `neighbor` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngNeighborResult> Neighbors;
        /// <summary>
        /// Network. The structure of `network` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngNetworkResult> Networks;
        /// <summary>
        /// Offset list. The structure of `offset_list` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngOffsetListResult> OffsetLists;
        /// <summary>
        /// Passive interface configuration. The structure of `passive_interface` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngPassiveInterfaceResult> PassiveInterfaces;
        /// <summary>
        /// Redistribute configuration. The structure of `redistribute` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetRouterRipngRedistributeResult> Redistributes;
        /// <summary>
        /// Timeout timer.
        /// </summary>
        public readonly int TimeoutTimer;
        /// <summary>
        /// Update timer.
        /// </summary>
        public readonly int UpdateTimer;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetRouterRipngResult(
            ImmutableArray<Outputs.GetRouterRipngAggregateAddressResult> aggregateAddresses,

            string defaultInformationOriginate,

            int defaultMetric,

            ImmutableArray<Outputs.GetRouterRipngDistanceResult> distances,

            ImmutableArray<Outputs.GetRouterRipngDistributeListResult> distributeLists,

            int garbageTimer,

            string id,

            ImmutableArray<Outputs.GetRouterRipngInterfaceResult> interfaces,

            int maxOutMetric,

            ImmutableArray<Outputs.GetRouterRipngNeighborResult> neighbors,

            ImmutableArray<Outputs.GetRouterRipngNetworkResult> networks,

            ImmutableArray<Outputs.GetRouterRipngOffsetListResult> offsetLists,

            ImmutableArray<Outputs.GetRouterRipngPassiveInterfaceResult> passiveInterfaces,

            ImmutableArray<Outputs.GetRouterRipngRedistributeResult> redistributes,

            int timeoutTimer,

            int updateTimer,

            string? vdomparam)
        {
            AggregateAddresses = aggregateAddresses;
            DefaultInformationOriginate = defaultInformationOriginate;
            DefaultMetric = defaultMetric;
            Distances = distances;
            DistributeLists = distributeLists;
            GarbageTimer = garbageTimer;
            Id = id;
            Interfaces = interfaces;
            MaxOutMetric = maxOutMetric;
            Neighbors = neighbors;
            Networks = networks;
            OffsetLists = offsetLists;
            PassiveInterfaces = passiveInterfaces;
            Redistributes = redistributes;
            TimeoutTimer = timeoutTimer;
            UpdateTimer = updateTimer;
            Vdomparam = vdomparam;
        }
    }
}
