<gh_stars>0// *** 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
{
    /// <summary>
    /// OSPF interface configuration.
    /// 
    /// &gt; The provider supports the definition of Ospf-Interface in Router Ospf `fortios.RouterOspf`, and also allows the definition of separate Ospf-Interface resources `fortios.RouterospfOspfinterface`, but do not use a `fortios.RouterOspf` with in-line Ospf-Interface in conjunction with any `fortios.RouterospfOspfinterface` resources, otherwise conflicts and overwrite will occur.
    /// 
    /// ## Import
    /// 
    /// Routerospf OspfInterface can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/routerospfOspfinterface:RouterospfOspfinterface labelname {{name}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/routerospfOspfinterface:RouterospfOspfinterface labelname {{name}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/routerospfOspfinterface:RouterospfOspfinterface")]
    public partial class RouterospfOspfinterface : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Authentication type.
        /// </summary>
        [Output("authentication")]
        public Output<string> Authentication { get; private set; } = null!;

        /// <summary>
        /// Authentication key.
        /// </summary>
        [Output("authenticationKey")]
        public Output<string?> AuthenticationKey { get; private set; } = null!;

        /// <summary>
        /// Bidirectional Forwarding Detection (BFD). Valid values: `global`, `enable`, `disable`.
        /// </summary>
        [Output("bfd")]
        public Output<string> Bfd { get; private set; } = null!;

        /// <summary>
        /// Comment.
        /// </summary>
        [Output("comments")]
        public Output<string?> Comments { get; private set; } = null!;

        /// <summary>
        /// Cost of the interface, value range from 0 to 65535, 0 means auto-cost.
        /// </summary>
        [Output("cost")]
        public Output<int> Cost { get; private set; } = null!;

        /// <summary>
        /// Enable/disable control of flooding out LSAs. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("databaseFilterOut")]
        public Output<string> DatabaseFilterOut { get; private set; } = null!;

        /// <summary>
        /// Dead interval.
        /// </summary>
        [Output("deadInterval")]
        public Output<int> DeadInterval { get; private set; } = null!;

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Output("dynamicSortSubtable")]
        public Output<string?> DynamicSortSubtable { get; private set; } = null!;

        /// <summary>
        /// Hello interval.
        /// </summary>
        [Output("helloInterval")]
        public Output<int> HelloInterval { get; private set; } = null!;

        /// <summary>
        /// Number of hello packets within dead interval.
        /// </summary>
        [Output("helloMultiplier")]
        public Output<int> HelloMultiplier { get; private set; } = null!;

        /// <summary>
        /// Configuration interface name.
        /// </summary>
        [Output("interface")]
        public Output<string> Interface { get; private set; } = null!;

        /// <summary>
        /// IP address.
        /// </summary>
        [Output("ip")]
        public Output<string> Ip { get; private set; } = null!;

        /// <summary>
        /// Message-digest key-chain name.
        /// </summary>
        [Output("keychain")]
        public Output<string> Keychain { get; private set; } = null!;

        /// <summary>
        /// MD5 key.
        /// </summary>
        [Output("md5Key")]
        public Output<string> Md5Key { get; private set; } = null!;

        /// <summary>
        /// Authentication MD5 key-chain name.
        /// </summary>
        [Output("md5Keychain")]
        public Output<string> Md5Keychain { get; private set; } = null!;

        /// <summary>
        /// MD5 key. The structure of `md5_keys` block is documented below.
        /// </summary>
        [Output("md5Keys")]
        public Output<ImmutableArray<Outputs.RouterospfOspfinterfaceMd5Key>> Md5Keys { get; private set; } = null!;

        /// <summary>
        /// MTU for database description packets.
        /// </summary>
        [Output("mtu")]
        public Output<int> Mtu { get; private set; } = null!;

        /// <summary>
        /// Enable/disable ignore MTU. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("mtuIgnore")]
        public Output<string> MtuIgnore { get; private set; } = null!;

        /// <summary>
        /// Interface entry name.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// Network type. Valid values: `broadcast`, `non-broadcast`, `point-to-point`, `point-to-multipoint`, `point-to-multipoint-non-broadcast`.
        /// </summary>
        [Output("networkType")]
        public Output<string> NetworkType { get; private set; } = null!;

        /// <summary>
        /// Prefix length.
        /// </summary>
        [Output("prefixLength")]
        public Output<int> PrefixLength { get; private set; } = null!;

        /// <summary>
        /// Priority.
        /// </summary>
        [Output("priority")]
        public Output<int> Priority { get; private set; } = null!;

        /// <summary>
        /// Graceful restart neighbor resynchronization timeout.
        /// </summary>
        [Output("resyncTimeout")]
        public Output<int> ResyncTimeout { get; private set; } = null!;

        /// <summary>
        /// Retransmit interval.
        /// </summary>
        [Output("retransmitInterval")]
        public Output<int> RetransmitInterval { get; private set; } = null!;

        /// <summary>
        /// Enable/disable status. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("status")]
        public Output<string> Status { get; private set; } = null!;

        /// <summary>
        /// Transmit delay.
        /// </summary>
        [Output("transmitDelay")]
        public Output<int> TransmitDelay { get; private set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the resource 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.
        /// 
        /// The `md5_keys` block supports:
        /// </summary>
        [Output("vdomparam")]
        public Output<string?> Vdomparam { get; private set; } = null!;


        /// <summary>
        /// Create a RouterospfOspfinterface resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public RouterospfOspfinterface(string name, RouterospfOspfinterfaceArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/routerospfOspfinterface:RouterospfOspfinterface", name, args ?? new RouterospfOspfinterfaceArgs(), MakeResourceOptions(options, ""))
        {
        }

        private RouterospfOspfinterface(string name, Input<string> id, RouterospfOspfinterfaceState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/routerospfOspfinterface:RouterospfOspfinterface", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/pulumiverse/pulumi-fortios",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing RouterospfOspfinterface resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static RouterospfOspfinterface Get(string name, Input<string> id, RouterospfOspfinterfaceState? state = null, CustomResourceOptions? options = null)
        {
            return new RouterospfOspfinterface(name, id, state, options);
        }
    }

    public sealed class RouterospfOspfinterfaceArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Authentication type.
        /// </summary>
        [Input("authentication")]
        public Input<string>? Authentication { get; set; }

        /// <summary>
        /// Authentication key.
        /// </summary>
        [Input("authenticationKey")]
        public Input<string>? AuthenticationKey { get; set; }

        /// <summary>
        /// Bidirectional Forwarding Detection (BFD). Valid values: `global`, `enable`, `disable`.
        /// </summary>
        [Input("bfd")]
        public Input<string>? Bfd { get; set; }

        /// <summary>
        /// Comment.
        /// </summary>
        [Input("comments")]
        public Input<string>? Comments { get; set; }

        /// <summary>
        /// Cost of the interface, value range from 0 to 65535, 0 means auto-cost.
        /// </summary>
        [Input("cost")]
        public Input<int>? Cost { get; set; }

        /// <summary>
        /// Enable/disable control of flooding out LSAs. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("databaseFilterOut")]
        public Input<string>? DatabaseFilterOut { get; set; }

        /// <summary>
        /// Dead interval.
        /// </summary>
        [Input("deadInterval")]
        public Input<int>? DeadInterval { get; set; }

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        /// <summary>
        /// Hello interval.
        /// </summary>
        [Input("helloInterval")]
        public Input<int>? HelloInterval { get; set; }

        /// <summary>
        /// Number of hello packets within dead interval.
        /// </summary>
        [Input("helloMultiplier")]
        public Input<int>? HelloMultiplier { get; set; }

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

        /// <summary>
        /// IP address.
        /// </summary>
        [Input("ip")]
        public Input<string>? Ip { get; set; }

        /// <summary>
        /// Message-digest key-chain name.
        /// </summary>
        [Input("keychain")]
        public Input<string>? Keychain { get; set; }

        /// <summary>
        /// MD5 key.
        /// </summary>
        [Input("md5Key")]
        public Input<string>? Md5Key { get; set; }

        /// <summary>
        /// Authentication MD5 key-chain name.
        /// </summary>
        [Input("md5Keychain")]
        public Input<string>? Md5Keychain { get; set; }

        [Input("md5Keys")]
        private InputList<Inputs.RouterospfOspfinterfaceMd5KeyArgs>? _md5Keys;

        /// <summary>
        /// MD5 key. The structure of `md5_keys` block is documented below.
        /// </summary>
        public InputList<Inputs.RouterospfOspfinterfaceMd5KeyArgs> Md5Keys
        {
            get => _md5Keys ?? (_md5Keys = new InputList<Inputs.RouterospfOspfinterfaceMd5KeyArgs>());
            set => _md5Keys = value;
        }

        /// <summary>
        /// MTU for database description packets.
        /// </summary>
        [Input("mtu")]
        public Input<int>? Mtu { get; set; }

        /// <summary>
        /// Enable/disable ignore MTU. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("mtuIgnore")]
        public Input<string>? MtuIgnore { get; set; }

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

        /// <summary>
        /// Network type. Valid values: `broadcast`, `non-broadcast`, `point-to-point`, `point-to-multipoint`, `point-to-multipoint-non-broadcast`.
        /// </summary>
        [Input("networkType")]
        public Input<string>? NetworkType { get; set; }

        /// <summary>
        /// Prefix length.
        /// </summary>
        [Input("prefixLength")]
        public Input<int>? PrefixLength { get; set; }

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

        /// <summary>
        /// Graceful restart neighbor resynchronization timeout.
        /// </summary>
        [Input("resyncTimeout")]
        public Input<int>? ResyncTimeout { get; set; }

        /// <summary>
        /// Retransmit interval.
        /// </summary>
        [Input("retransmitInterval")]
        public Input<int>? RetransmitInterval { get; set; }

        /// <summary>
        /// Enable/disable status. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Transmit delay.
        /// </summary>
        [Input("transmitDelay")]
        public Input<int>? TransmitDelay { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource 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.
        /// 
        /// The `md5_keys` block supports:
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

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

    public sealed class RouterospfOspfinterfaceState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Authentication type.
        /// </summary>
        [Input("authentication")]
        public Input<string>? Authentication { get; set; }

        /// <summary>
        /// Authentication key.
        /// </summary>
        [Input("authenticationKey")]
        public Input<string>? AuthenticationKey { get; set; }

        /// <summary>
        /// Bidirectional Forwarding Detection (BFD). Valid values: `global`, `enable`, `disable`.
        /// </summary>
        [Input("bfd")]
        public Input<string>? Bfd { get; set; }

        /// <summary>
        /// Comment.
        /// </summary>
        [Input("comments")]
        public Input<string>? Comments { get; set; }

        /// <summary>
        /// Cost of the interface, value range from 0 to 65535, 0 means auto-cost.
        /// </summary>
        [Input("cost")]
        public Input<int>? Cost { get; set; }

        /// <summary>
        /// Enable/disable control of flooding out LSAs. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("databaseFilterOut")]
        public Input<string>? DatabaseFilterOut { get; set; }

        /// <summary>
        /// Dead interval.
        /// </summary>
        [Input("deadInterval")]
        public Input<int>? DeadInterval { get; set; }

        /// <summary>
        /// Sort sub-tables, please do not set this parameter when configuring static sub-tables. Options: [ false, true, natural, alphabetical ]. false: Default value, do not sort tables; true/natural: sort tables in natural order. For example: [ a10, a2 ] -&gt; [ a2, a10 ]; alphabetical: sort tables in alphabetical order. For example: [ a10, a2 ] -&gt; [ a10, a2 ].
        /// </summary>
        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        /// <summary>
        /// Hello interval.
        /// </summary>
        [Input("helloInterval")]
        public Input<int>? HelloInterval { get; set; }

        /// <summary>
        /// Number of hello packets within dead interval.
        /// </summary>
        [Input("helloMultiplier")]
        public Input<int>? HelloMultiplier { get; set; }

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

        /// <summary>
        /// IP address.
        /// </summary>
        [Input("ip")]
        public Input<string>? Ip { get; set; }

        /// <summary>
        /// Message-digest key-chain name.
        /// </summary>
        [Input("keychain")]
        public Input<string>? Keychain { get; set; }

        /// <summary>
        /// MD5 key.
        /// </summary>
        [Input("md5Key")]
        public Input<string>? Md5Key { get; set; }

        /// <summary>
        /// Authentication MD5 key-chain name.
        /// </summary>
        [Input("md5Keychain")]
        public Input<string>? Md5Keychain { get; set; }

        [Input("md5Keys")]
        private InputList<Inputs.RouterospfOspfinterfaceMd5KeyGetArgs>? _md5Keys;

        /// <summary>
        /// MD5 key. The structure of `md5_keys` block is documented below.
        /// </summary>
        public InputList<Inputs.RouterospfOspfinterfaceMd5KeyGetArgs> Md5Keys
        {
            get => _md5Keys ?? (_md5Keys = new InputList<Inputs.RouterospfOspfinterfaceMd5KeyGetArgs>());
            set => _md5Keys = value;
        }

        /// <summary>
        /// MTU for database description packets.
        /// </summary>
        [Input("mtu")]
        public Input<int>? Mtu { get; set; }

        /// <summary>
        /// Enable/disable ignore MTU. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("mtuIgnore")]
        public Input<string>? MtuIgnore { get; set; }

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

        /// <summary>
        /// Network type. Valid values: `broadcast`, `non-broadcast`, `point-to-point`, `point-to-multipoint`, `point-to-multipoint-non-broadcast`.
        /// </summary>
        [Input("networkType")]
        public Input<string>? NetworkType { get; set; }

        /// <summary>
        /// Prefix length.
        /// </summary>
        [Input("prefixLength")]
        public Input<int>? PrefixLength { get; set; }

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

        /// <summary>
        /// Graceful restart neighbor resynchronization timeout.
        /// </summary>
        [Input("resyncTimeout")]
        public Input<int>? ResyncTimeout { get; set; }

        /// <summary>
        /// Retransmit interval.
        /// </summary>
        [Input("retransmitInterval")]
        public Input<int>? RetransmitInterval { get; set; }

        /// <summary>
        /// Enable/disable status. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("status")]
        public Input<string>? Status { get; set; }

        /// <summary>
        /// Transmit delay.
        /// </summary>
        [Input("transmitDelay")]
        public Input<int>? TransmitDelay { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource 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.
        /// 
        /// The `md5_keys` block supports:
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

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