netconfcentral logo

ieee802-dot1q-bridge@2017-09-07



  module ieee802-dot1q-bridge {

    yang-version 1;

    namespace
      "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge";

    prefix dot1q;

    import ieee802-types {
      prefix ieee;
    }
    import ietf-yang-types {
      prefix yang;
    }
    import ietf-interfaces {
      prefix if;
    }
    import iana-if-type {
      prefix ianaif;
    }
    import ieee802-dot1q-types {
      prefix dot1qtypes;
    }

    organization
      "Institute of Electrical and Electronics Engineers";

    contact
      "WG-URL: http://grouper.ieee.org/groups/802/1/
    WG-EMail: stds-802-1@ieee.org

    Contact: IEEE 802.1 Working Group Chair
    Postal: C/O IEEE 802.1 Working Group
            IEEE Standards Association
            445 Hoes Lane
            P.O. Box 1331
            Piscataway
            NJ 08855-1331
            USA
 	
    E-mail: STDS-802-1-L@LISTSERV.IEEE.ORG";

    description
      "This YANG module describes the bridge configuration model for
    the following IEEE 802.1Q Bridges:
      1. Two Port MAC Relay Bridges
      2. Customer VLAN Bridges
      3. Provider Bridges.";

    revision "2017-09-07" {
      description
        "Updates based upon comment resolution on draft
      D1.2 of P802.1Qcp.";
      reference
        "IEEE 802.1Q-2017, Media Access Control (MAC) Bridges and
        Virtual Bridged Local Area Networks.";

    }


    identity type-of-bridge {
      base 
      description
        "Represents the configured Bridge type.";
    }

    identity customer-vlan-bridge {
      base type-of-bridge;
      description
        "Base identity for a Customer VLAN Bridge.";
    }

    identity provider-bridge {
      base type-of-bridge;
      description
        "Base identity for a Provider Bridge (PB).";
    }

    identity provider-edge-bridge {
      base type-of-bridge;
      description
        "Base identity fro a Provider Edge Bridge (PEB).";
    }

    identity two-port-mac-relay-bridge {
      base type-of-bridge;
      description
        "Base identity for a Tow Port MAC Relay (TPMR) Bridge.";
    }

    identity type-of-component {
      base 
      description
        "Represents the type of Component.";
    }

    identity c-vlan-component {
      base type-of-component;
      description
        "Base identity for a C-VLAN component.";
    }

    identity s-vlan-component {
      base type-of-component;
      description
        "Base identity for a S-VLAN component.";
    }

    identity d-bridge-component {
      base type-of-component;
      description
        "Base identity for a VLAN unaware component.";
    }

    identity edge-relay-component {
      base type-of-component;
      description
        "Base identity for an EVB station ER component.";
    }

    identity type-of-port {
      base 
      description
        "Represents the type of Bridge port.";
    }

    identity c-vlan-bridge-port {
      base type-of-port;
      description
        "Indicates the port can be a C-TAG aware port of an enterprise
      VLAN aware Bridge.";
    }

    identity provider-network-port {
      base type-of-port;
      description
        "Indicates the port can be an S-TAG aware port of a Provider
      Bridge or Backbone Edge Bridge used for connections within a
      PBN (Provider Bridged Network) or PBBN (Provider Backbone
    	Bridged Network).";
    }

    identity customer-network-port {
      base type-of-port;
      description
        "Indicates the port can be an S-TAG aware port of a Provider
      Bridge or Backbone Edge Bridge used for connections to the
      exterior of a PBN (Provider Bridged Network) or PBBN (Provider
    	Backbone Bridged Network).";
    }

    identity customer-edge-port {
      base type-of-port;
      description
        "Indicates the port can be a C-TAG aware port of a Provider
      Bridge used for connections to the exterior of a PBN
    	(Provider Bridged Network) or PBBN (Provider Backbone Bridged
    	Network).";
    }

    identity d-bridge-port {
      base type-of-port;
      description
        "Indicates the port can be a VLAN-unaware member of an 802.1Q
      Bridge.";
    }

    identity remote-customer-access-port {
      base type-of-port;
      description
        "Indicates the port can be an S-TAG aware port of a Provider
      Bridge capable of providing Remote Customer Service
      Interfaces.";
    }

    identity bridge-interface {
      base 
      description
        "Generic interface property that represents any interface that
      can be associated with an IEEE 802.1Q compliant Bridge
      component. Any new Interface types would derive from this
      identity to automatically pick up Bridge related configuration
      or operational data.";
    }

    feature ingress-filtering {
      description
        "Each Port may support an Enable Ingress Filtering parameter.
      A frame received on a Port that is not in the member set
      (8.8.10) associated with the frames VID shall be discarded if
      this parameter is set. The default value for this parameter is
      reset, i.e., Disable Ingress Filtering, for all Ports. Any
      Port that supports setting this parameter shall also support
      resetting it. The parameter may be configured by the
      management operations defined in Clause 12.";
      reference
        "IEEE 802.1Q-2017 Clause 8.6.2";

    }

    feature extended-filtering-services {
      description
        "Extended Filtering Services support the filtering behavior
      required for regions of a network in which potential recipients
      of multicast frames exist, and where both the potential
      recipients of frames and the Bridges are able to support
      dynamic configuration of filtering information for group MAC
      addresses. In order to integrate this extended filtering
      behavior with the needs of regions of the network that support
      only Basic Filtering Services, Bridges that support Extended
      Filtering Services can be statically and dynamically configured
      to modify their filtering behavior on a per-group MAC address
      basis, and also on the basis of the overall filtering service
      provided by each outbound Port with regard to multicast
      frames. The latter capability permits configuration of the
      Ports default forwarding or filtering behavior with regard to
      group MAC addresses for which no specific static or dynamic
      filtering information has been configured.";
      reference
        "IEEE 802.1Q-2017 Clause 8.8.4, Clause 10";

    }

    feature port-and-protocol-based-vlan {
      description
        "A VLAN-aware bridge component implementation in conformance to
      the provisions of this standard for Port-and-Protocol-based
      VLAN classification (5.4.1) shall 1) Support one or more of
      the following Protocol Classifications and Protocol Template
      formats: Ethernet, RFC_1042, SNAP_8021H, SNAP_Other, or
      LLC_Other (6.12); and may 2) Support configuration of the
      contents of the Protocol Group Database.";
      reference
        "IEEE 802.1Q-2017 Clause 5.4.1.2";

    }

    feature flow-filtering {
      description
        "Flow filtering support enables Bridges to distinguish frames
      belonging to different client flows and to use this
      information in the forwarding process. Information related to
      client flows may be used at the boundary of an SPT Domain to
      generate a flow hash value. The flow hash, carried in an F-TAG,
      serves to distinguish frames belonging to different flows and
      can be used in the forwarding process to distribute frames
      over equal cost paths. This provides for finer granularity
      load spreading while maintaining frame order for each client
      flow.";
      reference
        "IEEE 802.1Q-2017 Clause 44.2";

    }

    feature simple-bridge-port {
      description
        "A simple bridge port allows underlying (MAC) layers to share
      the same Interface as the Bridge Port.";
    }

    feature flexible-bridge-port {
      description
        "A flexible bridge port supports an Interface that is a Bridge
      Port to be a separate Interface from the underlying (MAC)
      layer.";
    }

    container bridges {
      description
        "Contains the Bridge(s) configuration information.";
      list bridge {
        key "name";
        unique "address";
        description
          "Provides configuration data in support of the Bridge
        Configuration resources. There is a single bridge data node
        per Bridge.";
        leaf name {
          type dot1qtypes:name-type;
          description
            "A text string associated with the Bridge, of locally
          determined significance.";
          reference
            "IEEE 802.1Q-2017 Clause 12.4";

        }

        leaf address {
          type ieee:mac-address;
          mandatory true;
          description
            "The MAC address for the Bridge from which the Bridge
          Identifiers used by the STP, RSTP, and MSTP are derived.";
          reference
            "IEEE 802.1Q-2017 Clause 12.4";

        }

        leaf bridge-type {
          type identityref {
            base type-of-bridge;
          }
          mandatory true;
          description "The type of Bridge.";
        }

        leaf ports {
          type uint16 {
            range "1..4095";
          }
          config false;
          description
            "The number of Bridge Ports (MAC Entities)";
          reference
            "IEEE 802.1Q-2017 Clause 12.4";

        }

        leaf up-time {
          type yang:zero-based-counter32;
          units "seconds";
          config false;
          description
            "The count in seconds of the time elapsed since the Bridge
	        was last reset or initialized.";
          reference
            "IEEE 802.1Q-2017 Clause 12.4";

        }

        leaf components {
          type uint32;
          config false;
          description
            "The number of components associated with the Bridge.";
        }

        list component {
          key "name";
          description
            "The set of components associated with a given Bridge.
          For example,
             - A TPMR Bridge is associated with a single VLAN
               unaware component.
             - A Customer VLAN Bridge is associated with a single
               VLAN aware component.
             - A Provider Bridge is associated with a single S-VLAN
               component and zero or more C-VLAN components.";
          reference
            "IEEE 802.1Q-2017 Clause 12.3";

          leaf name {
            type string;
            description
              "The name of the Component.";
          }

          leaf id {
            type uint32;
            description
              "Unique identifier for a particular Bridge component
            within the system.";
            reference
              "IEEE 802.1Q-2017 Clause 12.3 l)";

          }

          leaf type {
            type identityref {
              base type-of-component;
            }
            mandatory true;
            description
              "The type of component used to classify a particular
            Bridge component within a Bridge system comprising
            multiple components.";
            reference
              "IEEE 802.1Q-2017 Clause 12.3 m)";

          }

          leaf address {
            type ieee:mac-address;
            description
              "Unique EUI-48 Universally Administered MAC address
            assigned to a Bridge component.";
            reference
              "IEEE 802.1Q-2017 Clause 8.13.8, 13.24";

          }

          leaf traffic-class-enabled {
            type boolean;
            default "true";
            description
              "Indication of Traffic Classes enablement associated
            with the Bridge Component. A value of True indicates
            that Traffic Classes are enabled on this Bridge
            Component. A value of False indicates that the Bridge
            Component operates with a single priority level for all
            traffic.";
            reference
              "IEEE 802.1Q-2017 Clause 12.4.1.5.1";

          }

          leaf ports {
            type uint16 {
              range "1..4095";
            }
            config false;
            description
              "The number of Bridge Ports associated with the Bridge
            Component.";
            reference
              "IEEE 802.1Q-2017 Clause 12.4.1.1.3 c)";

          }

          leaf-list bridge-port {
            type if:interface-ref;
            config false;
            description
              "List of bridge-port references.";
          }

          container capabilities {
            config false;
            description
              "Array of Boolean values of the feature capabilities
            associated with a given Bridge Component.";
            reference
              "IEEE 802.1Q-2017 Clause 12.4.1.5.2, 12.10.1.1.3 b)";

            leaf extended-filtering {
              type boolean;
              default "false";
              description
                "Can perform filtering on individual multicast
              addresses controlled by MMRP.";
              reference
                "IEEE 802.1Q-2017 Clause 12.4.1.5.2";

            }

            leaf traffic-classes {
              type boolean;
              default "false";
              description
                "Can map priority to multiple traffic classes.";
              reference
                "IEEE 802.1Q-2017 Clause 12.4.1.5.2";

            }

            leaf static-entry-individual-port {
              type boolean;
              default "false";
              description
                "Static entries per port.";
              reference
                "IEEE 802.1Q-2017 Clause 12.4.1.5.2";

            }

            leaf ivl-capable {
              type boolean;
              default "true";
              description
                "Independent VLAN Learning (IVL).";
              reference
                "IEEE 802.1Q-2017 Clause 12.4.1.5.2";

            }

            leaf svl-capable {
              type boolean;
              default "false";
              description
                "Shared VLAN Learning (SVL).";
              reference
                "IEEE 802.1Q-2017 Clause 12.4.1.5.2";

            }

            leaf hybrid-capable {
              type boolean;
              default "false";
              description
                "Both IVL and SVL simultaneously.";
              reference
                "IEEE 802.1Q-2017 Clause 12.4.1.5.2";

            }

            leaf configurable-pvid-tagging {
              type boolean;
              default "false";
              description
                "Whether the implementation supports the ability to
              override the default PVID setting and its egress status
              (VLAN-tagged or Untagged) on each port.";
              reference
                "IEEE 802.1Q-2017 Clause 12.4.1.5.2";

            }

            leaf local-vlan-capable {
              type boolean;
              default "false";
              description
                "Can support multiple local Bridges, outside the scope
              of 802.1Q defined VLANs.";
              reference
                "IEEE 802.1Q-2017 Clause 12.4.1.5.2";

            }
          }  // container capabilities

          container filtering-database {
            when
              "../../bridge-type != 'two-port-mac-relay-bridge'" {
              description
                "Applies to non TPMR Bridges.";
            }
            description
              "Contains filtering information used by the Forwarding
            Process in deciding through which Ports of the Bridge
            frames should be forwarded.";
            reference
              "IEEE 802.1Q-2017 Clause 12.7";

            leaf aging-time {
              type uint32 {
                range "10..10000000";
              }
              units "seconds";
              default '300';
              description
                "The timeout period in seconds for aging out
              dynamically-learned forwarding information.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7, 8.8.3";

            }

            leaf size {
              type yang:gauge32;
              config false;
              description
                "The maximum number of entries that can be held in the
              FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7";

            }

            leaf static-entries {
              type yang:gauge32;
              config false;
              description
                "The number of Static Filtering entries currently in
              the FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7, 8.8.1";

            }

            leaf dynamic-entries {
              type yang:gauge32;
              config false;
              description
                "The number of Dynamic Filtering entries currently in
              the FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7, 8.8.3";

            }

            leaf static-vlan-registration-entries {
              type yang:gauge32;
              config false;
              description
                "The number of Static VLAN Registration entries
              currently in the FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7, 8.8.2";

            }

            leaf dynamic-vlan-registration-entries {
              type yang:gauge32;
              config false;
              description
                "The number of Dynamic VLAN Registration entries
              currently in the FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7, 8.8.5";

            }

            leaf mac-address-registration-entries {
              if-feature extended-filtering-services;
              type yang:gauge32;
              config false;
              description
                "The number of MAC Address Registration entries
              currently in the FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7, 8.8.4";

            }

            list filtering-entry {
              key "database-id vids address";
              description
                "Information for the entries associated with the
              Permanent Database.";
              leaf database-id {
                type uint32;
                description
                  "The identity of this Filtering Database.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf address {
                type ieee:mac-address;
                description
                  "A MAC address (unicast, multicast, broadcast) for
                which the device has forwarding and/or filtering
                information.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf vids {
                type dot1qtypes:vid-range-type;
                description
                  "The set of VLAN identifiers to which this entry
              	applies.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf entry-type {
                type enumeration {
                  enum "static" {
                    value 0;
                    description
                      "Static entry type";
                  }
                  enum "dynamic" {
                    value 1;
                    description
                      "Dynamic/learnt entry type";
                  }
                }
                description
                  "The type of filtering entry. Whether static or
                dynamic. Static entries can be created, deleted, and 
              	retrieved. However, dynamic entries can only be
              	deleted or retrieved by the management entity.
              	Consequently, a Bridge is not required to accept a
              	command that can alter the dynamic entries except
              	delete a dynamic entry.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              list port-map {
                key "port-ref";
                description
                  "The list of entries composing the port map.";
                leaf port-ref {
                  type port-number-type;
                  description
                    "The interface port reference associated with this map.";
                  reference
                    "IEEE 802.1Q-2017 Clause 8.8.1";

                }

                choice map-type {
                  description
                    "Type of port map";
                  container static-filtering-entries {
                    description
                      "Static filtering entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum "filter" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                        enum
                          "forward-filter" {
                          value 2;
                          description
                            "Forwarded or filtered on the basis of dynamic
filtering information, or on the basis of the
default Group filtering behavior for the outbound
Port (8.8.6) if no dynamic filtering information is
present specifically for the MAC address.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.1";

                    }

                    leaf connection-identifier {
                      type port-number-type;
                      description
                        "A Port MAP may contain a connection identifier
(8.8.12) for each outbound port. The connection
identifier may be associated with the Bridge Port value
maintained in a Dynamic Filtering Entry of the FDB for
Bridge Ports.";
                      reference
                        "IEEE 802.1Q-2017, Clause 8.8.1, 8.8.12";

                    }
                  }  // container static-filtering-entries
                  container static-vlan-registration-entries {
                    description
                      "Static VLAN registration entries.";
                    leaf registrar-admin-control {
                      type enumeration {
                        enum
                          "fixed-new-ignored" {
                          value 0;
                          description
                            "Registration Fixed (New ignored).";
                        }
                        enum
                          "fixed-new-propagated" {
                          value 1;
                          description
                            "Registration Fixed (New propagated.";
                        }
                        enum "forbidden" {
                          value 2;
                          description
                            "Registration Forbidden.";
                        }
                        enum "normal" {
                          value 3;
                          description
                            "Normal Registration.";
                        }
                      }
                      description
                        "The Registrar Administrative Control values for MVRP
and MIRP for the VID.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.2";

                    }

                    leaf vlan-transmitted {
                      type enumeration {
                        enum "tagged" {
                          value 0;
                          description
                            "VLAN-tagged";
                        }
                        enum "untagged" {
                          value 1;
                          description
                            "VLAN-untagged";
                        }
                      }
                      description
                        "Whether frames are to be VLAN-tagged or untagged when
transmitted.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.2";

                    }
                  }  // container static-vlan-registration-entries
                  container mac-address-registration-entries {
                    description
                      "MAC address registration entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "registered" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum
                          "not-registered" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.4";

                    }
                  }  // container mac-address-registration-entries
                  container dynamic-vlan-registration-entries {
                    description
                      "Dynamic VLAN registration entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "registered" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.5";

                    }
                  }  // container dynamic-vlan-registration-entries
                  container dynamic-reservation-entries {
                    description
                      "Dynamic reservation entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum "filter" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                      }
                      description
                        "Containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.7";

                    }
                  }  // container dynamic-reservation-entries
                  container dynamic-filtering-entries {
                    description
                      "Dynamic filtering entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                      }
                      description
                        "Containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.3";

                    }
                  }  // container dynamic-filtering-entries
                }  // choice map-type
              }  // list port-map

              leaf status {
                type enumeration {
                  enum "other" {
                    value 0;
                    description
                      "None of the following. This may include the case
                    where some other object is being used to
                    determine if and how frames addressed to the
                    value of the corresponding instance of 'address'
                  	are being forwarded.";
                  }
                  enum "invalid" {
                    value 1;
                    description
                      "This entry is no longer valid (e.g., it was
                    learned but has since aged out), but has not yet
                    been flushed from the table.";
                  }
                  enum "learned" {
                    value 2;
                    description
                      "The value of the corresponding instance of the
                    port node was learned and is being used.";
                  }
                  enum "self" {
                    value 3;
                    description
                      "The value of the corresponding instance of the
                    address node representing one of the devices
                    address.";
                  }
                  enum "mgmt" {
                    value 4;
                    description
                      "The value of the corresponding instance of
                    address node that is also the value of an
                    existing instance.";
                  }
                }
                config false;
                description
                  "The status of this entry.";
              }
            }  // list filtering-entry

            list vlan-registration-entry {
              key "database-id vids";
              description
                "The VLAN Registration Entries models the operations
              that can be performed on a single VLAN Registration
              Entry in the FDB. The set of VLAN Registration Entries
              within the FDB changes under management control and
              also as a result of MVRP exchanges";
              reference
                "IEEE 802.1Q-2017 Clause 12.7.5";

              leaf database-id {
                type uint32;
                description
                  "The identity of this Filtering Database.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf vids {
                type dot1qtypes:vid-range-type;
                description
                  "The set of VLAN identifiers to which this entry
              	applies.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf entry-type {
                type enumeration {
                  enum "static" {
                    value 0;
                    description
                      "Static entry type";
                  }
                  enum "dynamic" {
                    value 1;
                    description
                      "Dynamic/learnt entry type";
                  }
                }
                description
                  "The type of filtering entry. Whether static or
                dynamic. Static entries can be created, deleted, and 
              	retrieved. However, dynamic entries can only be
              	deleted or retrieved by the management entity.
              	Consequently, a Bridge is not required to accept a
              	command that can alter the dynamic entries except
              	delete a dynamic entry.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              list port-map {
                key "port-ref";
                description
                  "The list of entries composing the port map.";
                leaf port-ref {
                  type port-number-type;
                  description
                    "The interface port reference associated with this map.";
                  reference
                    "IEEE 802.1Q-2017 Clause 8.8.1";

                }

                choice map-type {
                  description
                    "Type of port map";
                  container static-filtering-entries {
                    description
                      "Static filtering entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum "filter" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                        enum
                          "forward-filter" {
                          value 2;
                          description
                            "Forwarded or filtered on the basis of dynamic
filtering information, or on the basis of the
default Group filtering behavior for the outbound
Port (8.8.6) if no dynamic filtering information is
present specifically for the MAC address.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.1";

                    }

                    leaf connection-identifier {
                      type port-number-type;
                      description
                        "A Port MAP may contain a connection identifier
(8.8.12) for each outbound port. The connection
identifier may be associated with the Bridge Port value
maintained in a Dynamic Filtering Entry of the FDB for
Bridge Ports.";
                      reference
                        "IEEE 802.1Q-2017, Clause 8.8.1, 8.8.12";

                    }
                  }  // container static-filtering-entries
                  container static-vlan-registration-entries {
                    description
                      "Static VLAN registration entries.";
                    leaf registrar-admin-control {
                      type enumeration {
                        enum
                          "fixed-new-ignored" {
                          value 0;
                          description
                            "Registration Fixed (New ignored).";
                        }
                        enum
                          "fixed-new-propagated" {
                          value 1;
                          description
                            "Registration Fixed (New propagated.";
                        }
                        enum "forbidden" {
                          value 2;
                          description
                            "Registration Forbidden.";
                        }
                        enum "normal" {
                          value 3;
                          description
                            "Normal Registration.";
                        }
                      }
                      description
                        "The Registrar Administrative Control values for MVRP
and MIRP for the VID.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.2";

                    }

                    leaf vlan-transmitted {
                      type enumeration {
                        enum "tagged" {
                          value 0;
                          description
                            "VLAN-tagged";
                        }
                        enum "untagged" {
                          value 1;
                          description
                            "VLAN-untagged";
                        }
                      }
                      description
                        "Whether frames are to be VLAN-tagged or untagged when
transmitted.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.2";

                    }
                  }  // container static-vlan-registration-entries
                  container mac-address-registration-entries {
                    description
                      "MAC address registration entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "registered" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum
                          "not-registered" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.4";

                    }
                  }  // container mac-address-registration-entries
                  container dynamic-vlan-registration-entries {
                    description
                      "Dynamic VLAN registration entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "registered" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.5";

                    }
                  }  // container dynamic-vlan-registration-entries
                  container dynamic-reservation-entries {
                    description
                      "Dynamic reservation entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum "filter" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                      }
                      description
                        "Containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.7";

                    }
                  }  // container dynamic-reservation-entries
                  container dynamic-filtering-entries {
                    description
                      "Dynamic filtering entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                      }
                      description
                        "Containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.3";

                    }
                  }  // container dynamic-filtering-entries
                }  // choice map-type
              }  // list port-map
            }  // list vlan-registration-entry
          }  // container filtering-database

          container permanent-database {
            description
              "The Permanent Database container models the operations
            that can be performed on, or affect, the Permanent
            Database. There is a single Permanent Database per FDB.";
            leaf size {
              type yang:gauge32;
              config false;
              description
                "The maximum number of entries that can be held in the
	            FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7.6";

            }

            leaf static-entries {
              type yang:gauge32;
              config false;
              description
                "The number of Static Filtering entries currently in
	            the FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7.6";

            }

            leaf static-vlan-registration-entries {
              type yang:gauge32;
              config false;
              description
                "The number of Static VLAN Registration entries
	            currently in the FDB.";
              reference
                "IEEE 802.1Q-2017 Clause 12.7.6";

            }

            list filtering-entry {
              key "database-id vids address";
              description
                "Information for the entries associated with the
              Permanent Database.";
              leaf database-id {
                type uint32;
                description
                  "The identity of this Filtering Database.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf address {
                type ieee:mac-address;
                description
                  "A MAC address (unicast, multicast, broadcast) for
                which the device has forwarding and/or filtering
                information.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf vids {
                type dot1qtypes:vid-range-type;
                description
                  "The set of VLAN identifiers to which this entry
              	applies.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf status {
                type enumeration {
                  enum "other" {
                    value 0;
                    description
                      "None of the following. This may include the case
                    where some other object is being used to
                    determine if and how frames addressed to the
                    value of the corresponding instance of 'address'
                  	are being forwarded.";
                  }
                  enum "invalid" {
                    value 1;
                    description
                      "This entry is no longer valid (e.g., it was
                    learned but has since aged out), but has not yet
                    been flushed from the table.";
                  }
                  enum "learned" {
                    value 2;
                    description
                      "The value of the corresponding instance of the
                    port node was learned and is being used.";
                  }
                  enum "self" {
                    value 3;
                    description
                      "The value of the corresponding instance of the
                    address node representing one of the devices
                    address.";
                  }
                  enum "mgmt" {
                    value 4;
                    description
                      "The value of the corresponding instance of
                    address node that is also the value of an
                    existing instance.";
                  }
                }
                config false;
                description
                  "The status of this entry.";
              }

              list port-map {
                key "port-ref";
                description
                  "The list of entries composing the port map.";
                leaf port-ref {
                  type port-number-type;
                  description
                    "The interface port reference associated with this map.";
                  reference
                    "IEEE 802.1Q-2017 Clause 8.8.1";

                }

                choice map-type {
                  description
                    "Type of port map";
                  container static-filtering-entries {
                    description
                      "Static filtering entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum "filter" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                        enum
                          "forward-filter" {
                          value 2;
                          description
                            "Forwarded or filtered on the basis of dynamic
filtering information, or on the basis of the
default Group filtering behavior for the outbound
Port (8.8.6) if no dynamic filtering information is
present specifically for the MAC address.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.1";

                    }

                    leaf connection-identifier {
                      type port-number-type;
                      description
                        "A Port MAP may contain a connection identifier
(8.8.12) for each outbound port. The connection
identifier may be associated with the Bridge Port value
maintained in a Dynamic Filtering Entry of the FDB for
Bridge Ports.";
                      reference
                        "IEEE 802.1Q-2017, Clause 8.8.1, 8.8.12";

                    }
                  }  // container static-filtering-entries
                  container static-vlan-registration-entries {
                    description
                      "Static VLAN registration entries.";
                    leaf registrar-admin-control {
                      type enumeration {
                        enum
                          "fixed-new-ignored" {
                          value 0;
                          description
                            "Registration Fixed (New ignored).";
                        }
                        enum
                          "fixed-new-propagated" {
                          value 1;
                          description
                            "Registration Fixed (New propagated.";
                        }
                        enum "forbidden" {
                          value 2;
                          description
                            "Registration Forbidden.";
                        }
                        enum "normal" {
                          value 3;
                          description
                            "Normal Registration.";
                        }
                      }
                      description
                        "The Registrar Administrative Control values for MVRP
and MIRP for the VID.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.2";

                    }

                    leaf vlan-transmitted {
                      type enumeration {
                        enum "tagged" {
                          value 0;
                          description
                            "VLAN-tagged";
                        }
                        enum "untagged" {
                          value 1;
                          description
                            "VLAN-untagged";
                        }
                      }
                      description
                        "Whether frames are to be VLAN-tagged or untagged when
transmitted.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.2";

                    }
                  }  // container static-vlan-registration-entries
                  container mac-address-registration-entries {
                    description
                      "MAC address registration entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "registered" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum
                          "not-registered" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.4";

                    }
                  }  // container mac-address-registration-entries
                  container dynamic-vlan-registration-entries {
                    description
                      "Dynamic VLAN registration entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "registered" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                      }
                      description
                        "containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.5";

                    }
                  }  // container dynamic-vlan-registration-entries
                  container dynamic-reservation-entries {
                    description
                      "Dynamic reservation entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                        enum "filter" {
                          value 1;
                          description
                            "Filtered, independently of any dynamic filtering
information.";
                        }
                      }
                      description
                        "Containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.7";

                    }
                  }  // container dynamic-reservation-entries
                  container dynamic-filtering-entries {
                    description
                      "Dynamic filtering entries attributes.";
                    leaf control-element {
                      type enumeration {
                        enum "forward" {
                          value 0;
                          description
                            "Forwarded, independently of any dynamic filtering
information held by the FDB.";
                        }
                      }
                      description
                        "Containing a control element for each outbound Port,
specifying that a frame with a destination MAC address,
and in the case of VLAN Bridge components, VID that
meets this specification.";
                      reference
                        "IEEE 802.1Q-2017 Clause 8.8.3";

                    }
                  }  // container dynamic-filtering-entries
                }  // choice map-type
              }  // list port-map
            }  // list filtering-entry
          }  // container permanent-database

          container bridge-vlan {
            when
              "../../bridge-type != 'two-port-mac-relay-bridge'" {
              description
                "Applies to non TPMR Bridges.";
            }
            description
              "The Bridge VLAN container models configuration
            information that modify, or inquire about, the overall
            configuration of the Bridges VLAN resources. There is a
            single Bridge VLAN Configuration managed object per
            Bridge.";
            reference
              "IEEE 802.1Q-2017 Clause 12.10";

            leaf version {
              type uint16;
              config false;
              description
                "The version number supported.";
              reference
                "IEEE 802.1Q-2017, Clause 12.10.1.3";

            }

            leaf max-vids {
              type uint16;
              config false;
              description
                "The maximum number of VIDs supported.";
              reference
                "IEEE 802.1Q-2017, Clause 12.10.1.3";

            }

            leaf override-default-pvid {
              type boolean;
              default "false";
              config false;
              description
                "Indicates if the default PVID can be overridden, and
              its egress status (VLAN-tagged or untagged) on each
              port.";
              reference
                "IEEE 802.1Q-2017, Clause 12.10.1.3";

            }

            leaf protocol-template {
              if-feature port-and-protocol-based-vlan;
              type dot1qtypes:protocol-frame-format-type;
              config false;
              description
                "The data-link encapsulation format or the
              detagged_frame_type in a Protocol Template";
              reference
                "IEEE 802.1Q-2017 Clause 12.10.1.7";

            }

            leaf max-msti {
              type uint16;
              config false;
              description
                "The maximum number of MSTIs supported within an MST
              region (i.e., the number of spanning tree instances
              that can be supported in addition to the CIST), for MST
              Bridges. For SST Bridges, this parameter may be either
              omitted or reported as 0.";
              reference
                "IEEE 802.1Q-2017 Clause 12.10.1.7";

            }

            list vlan {
              key "vid";
              description
                "List of VLAN related configuration nodes associated
              with the Bridge.";
              reference
                "IEEE 802.1Q-2017 Clause 12.10.2";

              leaf vid {
                type dot1qtypes:vlan-index-type;
                description
                  "The VLAN identifier to which this entry applies.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.2";

              }

              leaf name {
                type dot1qtypes:name-type;
                description
                  "A text string of up to 32 characters of locally
                determined significance.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.2";

              }

              leaf-list untagged-ports {
                type if:interface-ref;
                config false;
                description
                  "The set of ports in the untagged set for this VID.";
                reference
                  "IEEE 802.1Q-2017 Clause 8.8.2 and
                  Clause 12.10.2.1.3";

              }

              leaf-list egress-ports {
                type if:interface-ref;
                config false;
                description
                  "The set of egress ports in the member set for this
                VID.";
                reference
                  "IEEE 802.1Q-2017 Clause 8.8.10 and
                  Clause 12.10.2.1.3";

              }
            }  // list vlan

            list protocol-group-database {
              if-feature port-and-protocol-based-vlan;
              key "db-index";
              description
                "List of the protocol group database entries.";
              reference
                "IEEE 802.1Q-2017 Clause 12.10.1.7, 6.12.3";

              leaf db-index {
                type uint16;
                description
                  "The protocol group database index.";
              }

              leaf frame-format-type {
                type dot1qtypes:protocol-frame-format-type;
                description
                  "The data-link encapsulation format or the
                detagged_frame_type in a Protocol Template";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.1.7";

              }

              choice frame-format {
                description
                  "The identification of the protocol above the
                data-link layer in a Protocol Template. Depending on
                the frame type, the octet string will have one of
                the following values:
                  - For ethernet, rfc1042 and snap8021H, this is the
                    16-bit (2-octet) IEEE 802 Clause 9.3 EtherType
                    field.
                  - For snapOther, this is the 40-bit (5-octet) PID.
                  - For llcOther, this is the 2-octet IEEE 802.2
                    Link Service Access Point (LSAP) pair: first
                    octet for Destination Service Access Point (DSAP)
                    and second octet for Source Service Access Point
                    (SSAP).";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.1.7";

                case ethernet-rfc1042-snap8021H {
                  when
                    "frame-format-type = 'Ethernet' or
              		    frame-format-type = 'rfc1042' or
              		    frame-format-type = 'snap8021H'" {
                    description
                      "Applies to Ethernet, RFC 1042, SNAP 8021H
              			frame formats.";
                  }
                  description
                    "Identifier used if Ethenet, RFC1042, or SNAP
                  8021H.";
                  leaf ethertype {
                    type dot1qtypes:ethertype-type;
                    description
                      "Format containing the 16-bit IEEE 802
                    EtherType field.";
                    reference
                      "IEEE 802-2014 Clause 9.3";

                  }
                }  // case ethernet-rfc1042-snap8021H

                case snap-other {
                  when
                    "frame-format-type = 'snapOther'" {
                    description
                      "Applies to Snap Other frame formats.";
                  }
                  description
                    "Identifier used if SNAP other.";
                  leaf protocol-id {
                    type string {
                      pattern
                        '[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){4}';
                    }
                    description
                      "Format containing the 40-bit protocol identifier
                    (PID). The canonical representation uses
                  	uppercase characters.";
                    reference
                      "IEEE 802.1Q-2017 Clause 12.10.1.7.1";

                  }
                }  // case snap-other

                case llc-other {
                  when
                    "frame-format-type = 'llcOther'" {
                    description
                      "Applies to LLC Other frame formats ";
                  }
                  description
                    "Identifier used if LLC other.";
                  container dsap-ssap-pairs {
                    description
                      "A pair of ISO/IEC 8802-2 DSAP and SSAP address
                    field values, for matching frame formats of
                    LLC_Other.";
                    leaf llc-address {
                      type string {
                        pattern
                          '[0-9a-fA-F]{2}-[0-9a-fA-F]{2}';
                      }
                      description
                        "A pair of ISO/IEC 8802-2 DSAP and SSAP
                      address field values, for matching frame
                      formats of LLC_Other. The canonical 
                    	representation uses uppercase characters.";
                      reference
                        "IEEE 802.1Q-2017 Clause 12.10.1.7.1";

                    }
                  }  // container dsap-ssap-pairs
                }  // case llc-other
              }  // choice frame-format

              leaf group-id {
                type uint32;
                description
                  "Designates a group of protocols in the Protocol
                Group Database.";
                reference
                  "IEEE 802.1Q-2017 Clause 6.12.2";

              }
            }  // list protocol-group-database

            list vid-to-fid-allocation {
              key "vids";
              description
                "This list allows inquiries about VID to FID
            	allocations.";
              leaf vids {
                type dot1qtypes:vid-range-type;
                description
                  "Range of VLAN identifiers.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.3";

              }

              leaf fid {
                type uint32;
                config false;
                description
                  "The Filtering Database used by a set of VIDs.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.3";

              }

              leaf allocation-type {
                type enumeration {
                  enum "undefined" {
                    value 0;
                    description
                      "No allocation defined.";
                  }
                  enum "fixed" {
                    value 1;
                    description
                      "A fixed allocation to FID is defined.";
                  }
                  enum "dynamic" {
                    value 2;
                    description
                      "A dynamic allocation to FID is defined.";
                  }
                }
                config false;
                description
                  "The type of allocation used";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.3";

              }
            }  // list vid-to-fid-allocation

            list fid-to-vid-allocation {
              key "fid";
              description
                "The FID to VID allocations managed object models
              operations that inquire about FID to VID
              allocations.";
              leaf fid {
                type uint32;
                description
                  "The Filtering Database used by a set of VIDs.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.3";

              }

              leaf allocation-type {
                type enumeration {
                  enum "undefined" {
                    value 0;
                    description
                      "No allocation defined.";
                  }
                  enum "fixed" {
                    value 1;
                    description
                      "A fixed allocation to FID is defined.";
                  }
                  enum "dynamic" {
                    value 2;
                    description
                      "A dynamic allocation to FID is defined.";
                  }
                }
                config false;
                description
                  "The type of allocation used";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.3";

              }

              leaf-list vid {
                type dot1qtypes:vlan-index-type;
                config false;
                description
                  "The VLAN identifier to which this entry applies.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }
            }  // list fid-to-vid-allocation

            list vid-to-fid {
              key "vid";
              description
                "Fixed allocation of a VID to an FID. The underlying
            	system will ensure that subsequent commands that
            	make changes to the VID to FID mapping can
            	override previous associations.";
              reference
                "IEEE 802.1Q-2017 Clause 12.10.3.4, 12.10.3.5";

              leaf vid {
                type dot1qtypes:vlan-index-type;
                description
                  "A list of VLAN identifier associated with a given
              	database identifier (i.e., FID).";
                reference
                  "IEEE 802.1Q-2017 Clause 12.7.7";

              }

              leaf fid {
                type uint32;
                description
                  "The Filtering Database used by this VLAN";
                reference
                  "IEEE 802.1Q-2017 Clause 12.10.3";

              }
            }  // list vid-to-fid
          }  // container bridge-vlan

          container bridge-mst {
            when
              "../../bridge-type != 'two-port-mac-relay-bridge'" {
              description
                "Applies to non TPMR Bridges.";
            }
            description
              "The Bridge MST container models configuration
				    information that modify, or inquire about, the overall
				    configuration of the Bridges MST resources.";
            reference
              "IEEE 802.1Q-2017 Clause 12.12";

            leaf-list mstid {
              type dot1qtypes:mstid-type;
              description
                "The list of MSTID values that are currently supported
							by the Bridge";
            }

            list fid-to-mstid {
              key "fid";
              description
                "The FID to MSTID allocation table.";
              reference
                "IEEE 802.1Q-2017 Clause 12.12.2";

              leaf fid {
                type uint32;
                description
                  "The Filtering Database identifier.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.12.2";

              }

              leaf mstid {
                type dot1qtypes:mstid-type;
                description
                  "The MSTID to which the FID is to be allocated.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.12.2";

              }
            }  // list fid-to-mstid

            list fid-to-mstid-allocation {
              key "fids";
              description
                "The FID to MSTID allocation table";
              leaf fids {
                type dot1qtypes:vid-range-type;
                description "Range of FIDs.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.12.2";

              }

              leaf mstid {
                type dot1qtypes:mstid-type;
                description
                  "The MSTID to which the FID is allocated.";
                reference
                  "IEEE 802.1Q-2017 Clause 12.12.2";

              }
            }  // list fid-to-mstid-allocation
          }  // container bridge-mst
        }  // list component
      }  // list bridge
    }  // container bridges
  }  // module ieee802-dot1q-bridge