// *** 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;

namespace Pulumi.Routeros.Iface
{
    /// <summary>
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using System.Linq;
    /// using Pulumi;
    /// using Routeros = Pulumi.Routeros;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var bridge = new Routeros.Iface.InterfaceBridge("bridge", new()
    ///     {
    ///         VlanFiltering = true,
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// Import with the name of the bridge in case of the example use bridge
    /// 
    /// ```sh
    ///  $ pulumi import routeros:Iface/interfaceBridge:InterfaceBridge bridge bridge
    /// ```
    /// </summary>
    [RouterosResourceType("routeros:Iface/interfaceBridge:InterfaceBridge")]
    public partial class InterfaceBridge : global::Pulumi.CustomResource
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Output("___id_")]
        public Output<int?> ___id_ { get; private set; } = null!;

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Output("___path_")]
        public Output<string?> ___path_ { get; private set; } = null!;

        [Output("actualMtu")]
        public Output<int> ActualMtu { get; private set; } = null!;

        /// <summary>
        /// Whether to add DHCP Option-82 information (Agent Remote ID and Agent Circuit ID) to DHCP packets. Can be used together with Option-82 capable DHCP server to assign IP addresses and implement policies. This property only has effect when dhcp-snooping is set to yes.
        /// </summary>
        [Output("addDhcpOption82")]
        public Output<bool?> AddDhcpOption82 { get; private set; } = null!;

        /// <summary>
        /// Static MAC address of the bridge. This property only has effect when auto-mac is set to no.
        /// </summary>
        [Output("adminMac")]
        public Output<string> AdminMac { get; private set; } = null!;

        /// <summary>
        /// How long a host's information will be kept in the bridge database.
        /// </summary>
        [Output("ageingTime")]
        public Output<string?> AgeingTime { get; private set; } = null!;

        /// <summary>
        /// ARP resolution protocol mode.
        /// </summary>
        [Output("arp")]
        public Output<string?> Arp { get; private set; } = null!;

        /// <summary>
        /// ARP timeout is time how long ARP record is kept in ARP table after no packets are received from IP. Value auto equals to the value of arp-timeout in IP/Settings, default is 30s. Can use postfix ms, s, M, h, d for milliseconds, seconds, minutes, hours or days. If no postfix is set then seconds (s) is used.
        /// </summary>
        [Output("arpTimeout")]
        public Output<string?> ArpTimeout { get; private set; } = null!;

        /// <summary>
        /// Automatically select one MAC address of bridge ports as a bridge MAC address, bridge MAC will be chosen from the first added bridge port. After a device reboot, the bridge MAC can change depending on the port-number.
        /// </summary>
        [Output("autoMac")]
        public Output<bool?> AutoMac { get; private set; } = null!;

        [Output("comment")]
        public Output<string?> Comment { get; private set; } = null!;

        [Output("dhcpSnooping")]
        public Output<bool?> DhcpSnooping { get; private set; } = null!;

        [Output("disabled")]
        public Output<bool?> Disabled { get; private set; } = null!;

        /// <summary>
        /// This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Output("etherType")]
        public Output<string?> EtherType { get; private set; } = null!;

        [Output("fastForward")]
        public Output<bool> FastForward { get; private set; } = null!;

        /// <summary>
        /// Time which is spent during the initialization phase of the bridge interface (i.e., after router startup or enabling the interface) in listening/learning state before the bridge will start functioning normally.
        /// </summary>
        [Output("forwardDelay")]
        public Output<string?> ForwardDelay { get; private set; } = null!;

        /// <summary>
        /// Specifies allowed frame types on a bridge port. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Output("frameTypes")]
        public Output<string?> FrameTypes { get; private set; } = null!;

        /// <summary>
        /// Enables multicast group and port learning to prevent multicast traffic from flooding all interfaces in a bridge.
        /// </summary>
        [Output("igmpSnooping")]
        public Output<bool?> IgmpSnooping { get; private set; } = null!;

        /// <summary>
        /// Selects the IGMP version in which IGMP general membership queries will be generated. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Output("igmpVersion")]
        public Output<int> IgmpVersion { get; private set; } = null!;

        /// <summary>
        /// Enables or disables VLAN ingress filtering, which checks if the ingress port is a member of the received VLAN ID in the bridge VLAN table. Should be used with frame-types to specify if the ingress traffic should be tagged or untagged. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Output("ingressFiltering")]
        public Output<bool?> IngressFiltering { get; private set; } = null!;

        /// <summary>
        /// Layer2 Maximum transmission unit.
        /// </summary>
        [Output("l2mtu")]
        public Output<int> L2mtu { get; private set; } = null!;

        /// <summary>
        /// If a port has fast-leave set to no and a bridge port receives a IGMP Leave message, then a IGMP Snooping enabled bridge will send a IGMP query to make sure that no devices has subscribed to a certain multicast stream on a bridge port.
        /// </summary>
        [Output("lastMemberInterval")]
        public Output<string> LastMemberInterval { get; private set; } = null!;

        /// <summary>
        /// How many times should last-member-interval pass until a IGMP Snooping bridge will stop forwarding a certain multicast stream. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Output("lastMemberQueryCount")]
        public Output<int> LastMemberQueryCount { get; private set; } = null!;

        [Output("macAddress")]
        public Output<string> MacAddress { get; private set; } = null!;

        /// <summary>
        /// Bridge count which BPDU can pass in a MSTP enabled network in the same region before BPDU is being ignored. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Output("maxHops")]
        public Output<int> MaxHops { get; private set; } = null!;

        /// <summary>
        /// Changes the Max Age value in BPDU packets, which is transmitted by the root bridge. This property only has effect when protocol-mode is set to stp or rstp. Value: 6s..40s
        /// </summary>
        [Output("maxMessageAge")]
        public Output<string?> MaxMessageAge { get; private set; } = null!;

        /// <summary>
        /// Amount of time after an entry in the Multicast Database (MDB) is removed if a IGMP membership report is not received on a certain port. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Output("membershipInterval")]
        public Output<string> MembershipInterval { get; private set; } = null!;

        /// <summary>
        /// Selects the MLD version. Version 2 adds support for source-specific multicast. This property only has effect when RouterOS IPv6 package is enabled and igmp-snooping is set to yes.
        /// </summary>
        [Output("mldVersion")]
        public Output<int> MldVersion { get; private set; } = null!;

        /// <summary>
        /// The default bridge MTU value without any bridge ports added is 1500. The MTU value can be set manually, but it cannot exceed the bridge L2MTU or the lowest bridge port L2MTU. If a new bridge port is added with L2MTU which is smaller than the actual-mtu of the bridge (set by the mtu property), then manually set value will be ignored and the bridge will act as if mtu=auto is set.
        /// </summary>
        [Output("mtu")]
        public Output<string?> Mtu { get; private set; } = null!;

        /// <summary>
        /// Multicast querier generates IGMP general membership queries to which all IGMP capable devices respond with an IGMP membership report, usually a PIM (multicast) router or IGMP proxy generates these queries. This property only has an effect when igmp-snooping is set to yes. Additionally, the igmp-snooping should be disabled/enabled after changing multicast-querier property.
        /// </summary>
        [Output("multicastQuerier")]
        public Output<bool?> MulticastQuerier { get; private set; } = null!;

        /// <summary>
        /// A multicast router port is a port where a multicast router or querier is connected. On this port, unregistered multicast streams and IGMP/MLD membership reports will be sent. This setting changes the state of the multicast router for a bridge interface itself. This property can be used to send IGMP/MLD membership reports and multicast traffic to the bridge interface for further multicast routing or proxying. This property only has an effect when igmp-snooping is set to yes.
        /// </summary>
        [Output("multicastRouter")]
        public Output<string> MulticastRouter { get; private set; } = null!;

        /// <summary>
        /// Changing the name of this resource will force it to be recreated. &gt; The links of other configuration properties to this
        /// resource may be lost! &gt; Changing the name of the resource outside of a Terraform will result in a loss of control
        /// integrity for that resource!
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// Bridge priority, used by STP to determine root bridge, used by MSTP to determine CIST and IST regional root bridge. This property has no effect when protocol-mode is set to none.
        /// </summary>
        [Output("priority")]
        public Output<string?> Priority { get; private set; } = null!;

        /// <summary>
        /// Select Spanning tree protocol (STP) or Rapid spanning tree protocol (RSTP) to ensure a loop-free topology for any bridged LAN.
        /// </summary>
        [Output("protocolMode")]
        public Output<string?> ProtocolMode { get; private set; } = null!;

        /// <summary>
        /// Port VLAN ID (pvid) specifies which VLAN the untagged ingress traffic is assigned to. It applies e.g. to frames sent from bridge IP and destined to a bridge port. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Output("pvid")]
        public Output<int?> Pvid { get; private set; } = null!;

        /// <summary>
        /// Used to change the interval how often a bridge checks if it is the active multicast querier. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Output("querierInterval")]
        public Output<string> QuerierInterval { get; private set; } = null!;

        /// <summary>
        /// Used to change the interval how often IGMP general membership queries are sent out. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Output("queryInterval")]
        public Output<string> QueryInterval { get; private set; } = null!;

        /// <summary>
        /// Interval in which a IGMP capable device must reply to a IGMP query with a IGMP membership report. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Output("queryResponseInterval")]
        public Output<string> QueryResponseInterval { get; private set; } = null!;

        /// <summary>
        /// MSTP region name. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Output("regionName")]
        public Output<string?> RegionName { get; private set; } = null!;

        /// <summary>
        /// MSTP configuration revision number. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Output("regionRevision")]
        public Output<int?> RegionRevision { get; private set; } = null!;

        [Output("running")]
        public Output<bool> Running { get; private set; } = null!;

        /// <summary>
        /// Specifies how many times must startup-query-interval pass until the bridge starts sending out IGMP general membership queries periodically. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Output("startupQueryCount")]
        public Output<int> StartupQueryCount { get; private set; } = null!;

        /// <summary>
        /// Used to change the amount of time after a bridge starts sending out IGMP general membership queries after the bridge is enabled. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Output("startupQueryInterval")]
        public Output<string> StartupQueryInterval { get; private set; } = null!;

        /// <summary>
        /// The Transmit Hold Count used by the Port Transmit state machine to limit transmission rate.
        /// </summary>
        [Output("transmitHoldCount")]
        public Output<int?> TransmitHoldCount { get; private set; } = null!;

        /// <summary>
        /// Globally enables or disables VLAN functionality for bridge.
        /// </summary>
        [Output("vlanFiltering")]
        public Output<bool?> VlanFiltering { get; private set; } = null!;


        /// <summary>
        /// Create a InterfaceBridge 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 InterfaceBridge(string name, InterfaceBridgeArgs? args = null, CustomResourceOptions? options = null)
            : base("routeros:Iface/interfaceBridge:InterfaceBridge", name, args ?? new InterfaceBridgeArgs(), MakeResourceOptions(options, ""))
        {
        }

        private InterfaceBridge(string name, Input<string> id, InterfaceBridgeState? state = null, CustomResourceOptions? options = null)
            : base("routeros:Iface/interfaceBridge:InterfaceBridge", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
            };
            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 InterfaceBridge 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 InterfaceBridge Get(string name, Input<string> id, InterfaceBridgeState? state = null, CustomResourceOptions? options = null)
        {
            return new InterfaceBridge(name, id, state, options);
        }
    }

    public sealed class InterfaceBridgeArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___id_")]
        public Input<int>? ___id_ { get; set; }

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___path_")]
        public Input<string>? ___path_ { get; set; }

        /// <summary>
        /// Whether to add DHCP Option-82 information (Agent Remote ID and Agent Circuit ID) to DHCP packets. Can be used together with Option-82 capable DHCP server to assign IP addresses and implement policies. This property only has effect when dhcp-snooping is set to yes.
        /// </summary>
        [Input("addDhcpOption82")]
        public Input<bool>? AddDhcpOption82 { get; set; }

        /// <summary>
        /// Static MAC address of the bridge. This property only has effect when auto-mac is set to no.
        /// </summary>
        [Input("adminMac")]
        public Input<string>? AdminMac { get; set; }

        /// <summary>
        /// How long a host's information will be kept in the bridge database.
        /// </summary>
        [Input("ageingTime")]
        public Input<string>? AgeingTime { get; set; }

        /// <summary>
        /// ARP resolution protocol mode.
        /// </summary>
        [Input("arp")]
        public Input<string>? Arp { get; set; }

        /// <summary>
        /// ARP timeout is time how long ARP record is kept in ARP table after no packets are received from IP. Value auto equals to the value of arp-timeout in IP/Settings, default is 30s. Can use postfix ms, s, M, h, d for milliseconds, seconds, minutes, hours or days. If no postfix is set then seconds (s) is used.
        /// </summary>
        [Input("arpTimeout")]
        public Input<string>? ArpTimeout { get; set; }

        /// <summary>
        /// Automatically select one MAC address of bridge ports as a bridge MAC address, bridge MAC will be chosen from the first added bridge port. After a device reboot, the bridge MAC can change depending on the port-number.
        /// </summary>
        [Input("autoMac")]
        public Input<bool>? AutoMac { get; set; }

        [Input("comment")]
        public Input<string>? Comment { get; set; }

        [Input("dhcpSnooping")]
        public Input<bool>? DhcpSnooping { get; set; }

        [Input("disabled")]
        public Input<bool>? Disabled { get; set; }

        /// <summary>
        /// This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Input("etherType")]
        public Input<string>? EtherType { get; set; }

        [Input("fastForward")]
        public Input<bool>? FastForward { get; set; }

        /// <summary>
        /// Time which is spent during the initialization phase of the bridge interface (i.e., after router startup or enabling the interface) in listening/learning state before the bridge will start functioning normally.
        /// </summary>
        [Input("forwardDelay")]
        public Input<string>? ForwardDelay { get; set; }

        /// <summary>
        /// Specifies allowed frame types on a bridge port. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Input("frameTypes")]
        public Input<string>? FrameTypes { get; set; }

        /// <summary>
        /// Enables multicast group and port learning to prevent multicast traffic from flooding all interfaces in a bridge.
        /// </summary>
        [Input("igmpSnooping")]
        public Input<bool>? IgmpSnooping { get; set; }

        /// <summary>
        /// Selects the IGMP version in which IGMP general membership queries will be generated. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Input("igmpVersion")]
        public Input<int>? IgmpVersion { get; set; }

        /// <summary>
        /// Enables or disables VLAN ingress filtering, which checks if the ingress port is a member of the received VLAN ID in the bridge VLAN table. Should be used with frame-types to specify if the ingress traffic should be tagged or untagged. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Input("ingressFiltering")]
        public Input<bool>? IngressFiltering { get; set; }

        /// <summary>
        /// If a port has fast-leave set to no and a bridge port receives a IGMP Leave message, then a IGMP Snooping enabled bridge will send a IGMP query to make sure that no devices has subscribed to a certain multicast stream on a bridge port.
        /// </summary>
        [Input("lastMemberInterval")]
        public Input<string>? LastMemberInterval { get; set; }

        /// <summary>
        /// How many times should last-member-interval pass until a IGMP Snooping bridge will stop forwarding a certain multicast stream. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Input("lastMemberQueryCount")]
        public Input<int>? LastMemberQueryCount { get; set; }

        /// <summary>
        /// Bridge count which BPDU can pass in a MSTP enabled network in the same region before BPDU is being ignored. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Input("maxHops")]
        public Input<int>? MaxHops { get; set; }

        /// <summary>
        /// Changes the Max Age value in BPDU packets, which is transmitted by the root bridge. This property only has effect when protocol-mode is set to stp or rstp. Value: 6s..40s
        /// </summary>
        [Input("maxMessageAge")]
        public Input<string>? MaxMessageAge { get; set; }

        /// <summary>
        /// Amount of time after an entry in the Multicast Database (MDB) is removed if a IGMP membership report is not received on a certain port. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Input("membershipInterval")]
        public Input<string>? MembershipInterval { get; set; }

        /// <summary>
        /// Selects the MLD version. Version 2 adds support for source-specific multicast. This property only has effect when RouterOS IPv6 package is enabled and igmp-snooping is set to yes.
        /// </summary>
        [Input("mldVersion")]
        public Input<int>? MldVersion { get; set; }

        /// <summary>
        /// The default bridge MTU value without any bridge ports added is 1500. The MTU value can be set manually, but it cannot exceed the bridge L2MTU or the lowest bridge port L2MTU. If a new bridge port is added with L2MTU which is smaller than the actual-mtu of the bridge (set by the mtu property), then manually set value will be ignored and the bridge will act as if mtu=auto is set.
        /// </summary>
        [Input("mtu")]
        public Input<string>? Mtu { get; set; }

        /// <summary>
        /// Multicast querier generates IGMP general membership queries to which all IGMP capable devices respond with an IGMP membership report, usually a PIM (multicast) router or IGMP proxy generates these queries. This property only has an effect when igmp-snooping is set to yes. Additionally, the igmp-snooping should be disabled/enabled after changing multicast-querier property.
        /// </summary>
        [Input("multicastQuerier")]
        public Input<bool>? MulticastQuerier { get; set; }

        /// <summary>
        /// A multicast router port is a port where a multicast router or querier is connected. On this port, unregistered multicast streams and IGMP/MLD membership reports will be sent. This setting changes the state of the multicast router for a bridge interface itself. This property can be used to send IGMP/MLD membership reports and multicast traffic to the bridge interface for further multicast routing or proxying. This property only has an effect when igmp-snooping is set to yes.
        /// </summary>
        [Input("multicastRouter")]
        public Input<string>? MulticastRouter { get; set; }

        /// <summary>
        /// Changing the name of this resource will force it to be recreated. &gt; The links of other configuration properties to this
        /// resource may be lost! &gt; Changing the name of the resource outside of a Terraform will result in a loss of control
        /// integrity for that resource!
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Bridge priority, used by STP to determine root bridge, used by MSTP to determine CIST and IST regional root bridge. This property has no effect when protocol-mode is set to none.
        /// </summary>
        [Input("priority")]
        public Input<string>? Priority { get; set; }

        /// <summary>
        /// Select Spanning tree protocol (STP) or Rapid spanning tree protocol (RSTP) to ensure a loop-free topology for any bridged LAN.
        /// </summary>
        [Input("protocolMode")]
        public Input<string>? ProtocolMode { get; set; }

        /// <summary>
        /// Port VLAN ID (pvid) specifies which VLAN the untagged ingress traffic is assigned to. It applies e.g. to frames sent from bridge IP and destined to a bridge port. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Input("pvid")]
        public Input<int>? Pvid { get; set; }

        /// <summary>
        /// Used to change the interval how often a bridge checks if it is the active multicast querier. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("querierInterval")]
        public Input<string>? QuerierInterval { get; set; }

        /// <summary>
        /// Used to change the interval how often IGMP general membership queries are sent out. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("queryInterval")]
        public Input<string>? QueryInterval { get; set; }

        /// <summary>
        /// Interval in which a IGMP capable device must reply to a IGMP query with a IGMP membership report. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("queryResponseInterval")]
        public Input<string>? QueryResponseInterval { get; set; }

        /// <summary>
        /// MSTP region name. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Input("regionName")]
        public Input<string>? RegionName { get; set; }

        /// <summary>
        /// MSTP configuration revision number. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Input("regionRevision")]
        public Input<int>? RegionRevision { get; set; }

        /// <summary>
        /// Specifies how many times must startup-query-interval pass until the bridge starts sending out IGMP general membership queries periodically. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("startupQueryCount")]
        public Input<int>? StartupQueryCount { get; set; }

        /// <summary>
        /// Used to change the amount of time after a bridge starts sending out IGMP general membership queries after the bridge is enabled. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("startupQueryInterval")]
        public Input<string>? StartupQueryInterval { get; set; }

        /// <summary>
        /// The Transmit Hold Count used by the Port Transmit state machine to limit transmission rate.
        /// </summary>
        [Input("transmitHoldCount")]
        public Input<int>? TransmitHoldCount { get; set; }

        /// <summary>
        /// Globally enables or disables VLAN functionality for bridge.
        /// </summary>
        [Input("vlanFiltering")]
        public Input<bool>? VlanFiltering { get; set; }

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

    public sealed class InterfaceBridgeState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// &lt;em&gt;Resource ID type (.id / name). This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___id_")]
        public Input<int>? ___id_ { get; set; }

        /// <summary>
        /// &lt;em&gt;Resource path for CRUD operations. This is an internal service field, setting a value is not required.&lt;/em&gt;
        /// </summary>
        [Input("___path_")]
        public Input<string>? ___path_ { get; set; }

        [Input("actualMtu")]
        public Input<int>? ActualMtu { get; set; }

        /// <summary>
        /// Whether to add DHCP Option-82 information (Agent Remote ID and Agent Circuit ID) to DHCP packets. Can be used together with Option-82 capable DHCP server to assign IP addresses and implement policies. This property only has effect when dhcp-snooping is set to yes.
        /// </summary>
        [Input("addDhcpOption82")]
        public Input<bool>? AddDhcpOption82 { get; set; }

        /// <summary>
        /// Static MAC address of the bridge. This property only has effect when auto-mac is set to no.
        /// </summary>
        [Input("adminMac")]
        public Input<string>? AdminMac { get; set; }

        /// <summary>
        /// How long a host's information will be kept in the bridge database.
        /// </summary>
        [Input("ageingTime")]
        public Input<string>? AgeingTime { get; set; }

        /// <summary>
        /// ARP resolution protocol mode.
        /// </summary>
        [Input("arp")]
        public Input<string>? Arp { get; set; }

        /// <summary>
        /// ARP timeout is time how long ARP record is kept in ARP table after no packets are received from IP. Value auto equals to the value of arp-timeout in IP/Settings, default is 30s. Can use postfix ms, s, M, h, d for milliseconds, seconds, minutes, hours or days. If no postfix is set then seconds (s) is used.
        /// </summary>
        [Input("arpTimeout")]
        public Input<string>? ArpTimeout { get; set; }

        /// <summary>
        /// Automatically select one MAC address of bridge ports as a bridge MAC address, bridge MAC will be chosen from the first added bridge port. After a device reboot, the bridge MAC can change depending on the port-number.
        /// </summary>
        [Input("autoMac")]
        public Input<bool>? AutoMac { get; set; }

        [Input("comment")]
        public Input<string>? Comment { get; set; }

        [Input("dhcpSnooping")]
        public Input<bool>? DhcpSnooping { get; set; }

        [Input("disabled")]
        public Input<bool>? Disabled { get; set; }

        /// <summary>
        /// This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Input("etherType")]
        public Input<string>? EtherType { get; set; }

        [Input("fastForward")]
        public Input<bool>? FastForward { get; set; }

        /// <summary>
        /// Time which is spent during the initialization phase of the bridge interface (i.e., after router startup or enabling the interface) in listening/learning state before the bridge will start functioning normally.
        /// </summary>
        [Input("forwardDelay")]
        public Input<string>? ForwardDelay { get; set; }

        /// <summary>
        /// Specifies allowed frame types on a bridge port. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Input("frameTypes")]
        public Input<string>? FrameTypes { get; set; }

        /// <summary>
        /// Enables multicast group and port learning to prevent multicast traffic from flooding all interfaces in a bridge.
        /// </summary>
        [Input("igmpSnooping")]
        public Input<bool>? IgmpSnooping { get; set; }

        /// <summary>
        /// Selects the IGMP version in which IGMP general membership queries will be generated. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Input("igmpVersion")]
        public Input<int>? IgmpVersion { get; set; }

        /// <summary>
        /// Enables or disables VLAN ingress filtering, which checks if the ingress port is a member of the received VLAN ID in the bridge VLAN table. Should be used with frame-types to specify if the ingress traffic should be tagged or untagged. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Input("ingressFiltering")]
        public Input<bool>? IngressFiltering { get; set; }

        /// <summary>
        /// Layer2 Maximum transmission unit.
        /// </summary>
        [Input("l2mtu")]
        public Input<int>? L2mtu { get; set; }

        /// <summary>
        /// If a port has fast-leave set to no and a bridge port receives a IGMP Leave message, then a IGMP Snooping enabled bridge will send a IGMP query to make sure that no devices has subscribed to a certain multicast stream on a bridge port.
        /// </summary>
        [Input("lastMemberInterval")]
        public Input<string>? LastMemberInterval { get; set; }

        /// <summary>
        /// How many times should last-member-interval pass until a IGMP Snooping bridge will stop forwarding a certain multicast stream. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Input("lastMemberQueryCount")]
        public Input<int>? LastMemberQueryCount { get; set; }

        [Input("macAddress")]
        public Input<string>? MacAddress { get; set; }

        /// <summary>
        /// Bridge count which BPDU can pass in a MSTP enabled network in the same region before BPDU is being ignored. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Input("maxHops")]
        public Input<int>? MaxHops { get; set; }

        /// <summary>
        /// Changes the Max Age value in BPDU packets, which is transmitted by the root bridge. This property only has effect when protocol-mode is set to stp or rstp. Value: 6s..40s
        /// </summary>
        [Input("maxMessageAge")]
        public Input<string>? MaxMessageAge { get; set; }

        /// <summary>
        /// Amount of time after an entry in the Multicast Database (MDB) is removed if a IGMP membership report is not received on a certain port. This property only has effect when igmp-snooping is set to yes.
        /// </summary>
        [Input("membershipInterval")]
        public Input<string>? MembershipInterval { get; set; }

        /// <summary>
        /// Selects the MLD version. Version 2 adds support for source-specific multicast. This property only has effect when RouterOS IPv6 package is enabled and igmp-snooping is set to yes.
        /// </summary>
        [Input("mldVersion")]
        public Input<int>? MldVersion { get; set; }

        /// <summary>
        /// The default bridge MTU value without any bridge ports added is 1500. The MTU value can be set manually, but it cannot exceed the bridge L2MTU or the lowest bridge port L2MTU. If a new bridge port is added with L2MTU which is smaller than the actual-mtu of the bridge (set by the mtu property), then manually set value will be ignored and the bridge will act as if mtu=auto is set.
        /// </summary>
        [Input("mtu")]
        public Input<string>? Mtu { get; set; }

        /// <summary>
        /// Multicast querier generates IGMP general membership queries to which all IGMP capable devices respond with an IGMP membership report, usually a PIM (multicast) router or IGMP proxy generates these queries. This property only has an effect when igmp-snooping is set to yes. Additionally, the igmp-snooping should be disabled/enabled after changing multicast-querier property.
        /// </summary>
        [Input("multicastQuerier")]
        public Input<bool>? MulticastQuerier { get; set; }

        /// <summary>
        /// A multicast router port is a port where a multicast router or querier is connected. On this port, unregistered multicast streams and IGMP/MLD membership reports will be sent. This setting changes the state of the multicast router for a bridge interface itself. This property can be used to send IGMP/MLD membership reports and multicast traffic to the bridge interface for further multicast routing or proxying. This property only has an effect when igmp-snooping is set to yes.
        /// </summary>
        [Input("multicastRouter")]
        public Input<string>? MulticastRouter { get; set; }

        /// <summary>
        /// Changing the name of this resource will force it to be recreated. &gt; The links of other configuration properties to this
        /// resource may be lost! &gt; Changing the name of the resource outside of a Terraform will result in a loss of control
        /// integrity for that resource!
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Bridge priority, used by STP to determine root bridge, used by MSTP to determine CIST and IST regional root bridge. This property has no effect when protocol-mode is set to none.
        /// </summary>
        [Input("priority")]
        public Input<string>? Priority { get; set; }

        /// <summary>
        /// Select Spanning tree protocol (STP) or Rapid spanning tree protocol (RSTP) to ensure a loop-free topology for any bridged LAN.
        /// </summary>
        [Input("protocolMode")]
        public Input<string>? ProtocolMode { get; set; }

        /// <summary>
        /// Port VLAN ID (pvid) specifies which VLAN the untagged ingress traffic is assigned to. It applies e.g. to frames sent from bridge IP and destined to a bridge port. This property only has effect when vlan-filtering is set to yes.
        /// </summary>
        [Input("pvid")]
        public Input<int>? Pvid { get; set; }

        /// <summary>
        /// Used to change the interval how often a bridge checks if it is the active multicast querier. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("querierInterval")]
        public Input<string>? QuerierInterval { get; set; }

        /// <summary>
        /// Used to change the interval how often IGMP general membership queries are sent out. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("queryInterval")]
        public Input<string>? QueryInterval { get; set; }

        /// <summary>
        /// Interval in which a IGMP capable device must reply to a IGMP query with a IGMP membership report. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("queryResponseInterval")]
        public Input<string>? QueryResponseInterval { get; set; }

        /// <summary>
        /// MSTP region name. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Input("regionName")]
        public Input<string>? RegionName { get; set; }

        /// <summary>
        /// MSTP configuration revision number. This property only has effect when protocol-mode is set to mstp.
        /// </summary>
        [Input("regionRevision")]
        public Input<int>? RegionRevision { get; set; }

        [Input("running")]
        public Input<bool>? Running { get; set; }

        /// <summary>
        /// Specifies how many times must startup-query-interval pass until the bridge starts sending out IGMP general membership queries periodically. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("startupQueryCount")]
        public Input<int>? StartupQueryCount { get; set; }

        /// <summary>
        /// Used to change the amount of time after a bridge starts sending out IGMP general membership queries after the bridge is enabled. This property only has effect when igmp-snooping and multicast-querier is set to yes.
        /// </summary>
        [Input("startupQueryInterval")]
        public Input<string>? StartupQueryInterval { get; set; }

        /// <summary>
        /// The Transmit Hold Count used by the Port Transmit state machine to limit transmission rate.
        /// </summary>
        [Input("transmitHoldCount")]
        public Input<int>? TransmitHoldCount { get; set; }

        /// <summary>
        /// Globally enables or disables VLAN functionality for bridge.
        /// </summary>
        [Input("vlanFiltering")]
        public Input<bool>? VlanFiltering { get; set; }

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