// *** 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>
    /// ## # routeros.Iface.Bridge (Resource)
    /// 
    /// ***
    /// 
    /// #### This is an alias for backwards compatibility between plugin versions.
    /// Please see documentation for routeros.Iface.InterfaceBridge
    /// </summary>
    [RouterosResourceType("routeros:Iface/bridge:Bridge")]
    public partial class Bridge : 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 Bridge 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 Bridge(string name, BridgeArgs? args = null, CustomResourceOptions? options = null)
            : base("routeros:Iface/bridge:Bridge", name, args ?? new BridgeArgs(), MakeResourceOptions(options, ""))
        {
        }

        private Bridge(string name, Input<string> id, BridgeState? state = null, CustomResourceOptions? options = null)
            : base("routeros:Iface/bridge:Bridge", 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 Bridge 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 Bridge Get(string name, Input<string> id, BridgeState? state = null, CustomResourceOptions? options = null)
        {
            return new Bridge(name, id, state, options);
        }
    }

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

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