netconfcentral logo

ieee802-dot1q-bridge@2018-03-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 "IEEE 802.1 Working Group";

    contact
      "WG-URL: http://www.ieee802.org/1/
    WG-EMail: stds-802-1-L@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 08854
            USA
    
    E-mail: STDS-802-1-L@IEEE.ORG";

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

    revision "2018-03-07" {
      description
        "Published as part of IEEE Std 802.1Q-2018.
      Initial version.";
      reference
        "IEEE Std 802.1Q-2018, Bridges and Bridged Networks.";

    }


    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
        "8.6.2 of IEEE Std 802.1Q-2018";

    }

    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
        "8.8.4 of IEEE Std 802.1Q-2018
        Clause 10 of IEEE Std 802.1Q-2018";

    }

    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
        "5.4.1.2 of IEEE Std 802.1Q-2018";

    }

    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
        "44.2 of IEEE Std 802.1Q-2018";

    }

    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.";
    }

    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 for a Provider Edge Bridge (PEB).";
    }

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

    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.";
    }

    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
            "12.4 of IEEE Std 802.1Q-2018";

        }

        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
            "12.4 of IEEE Std 802.1Q-2018";

        }

        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
            "12.4 of IEEE Std 802.1Q-2018";

        }

        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
            "12.4 of IEEE Std 802.1Q-2018";

        }

        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 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
            "12.3 of IEEE Std 802.1Q-2018";

          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
              "12.3, item l) of IEEE Std 802.1Q-2018";

          }

          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
              "12.3, item m) of IEEE Std 802.1Q-2018";

          }

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

          }

          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
              "12.4.1.5.1 of IEEE Std 802.1Q-2018";

          }

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

          }

          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
              "12.10.1.1.3, item b) of IEEE Std 802.1Q-2018
              12.4.1.5.2 of IEEE Std 802.1Q-2018";

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

            }

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

            }

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

            }

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

            }

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

            }

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

            }

            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
                "12.4.1.5.2 of IEEE Std 802.1Q-2018";

            }

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

            }
          }  // container capabilities

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

            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
                "12.7 of IEEE Std 802.1Q-2018
                8.8.3 of IEEE Std 802.1Q-2018";

            }

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

            }

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

            }

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

            }

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

            }

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

            }

            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
                "12.7 of IEEE Std 802.1Q-2018
                8.8.4 of IEEE Std 802.1Q-2018";

            }

            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
                  "12.7.7 of IEEE Std 802.1Q-2018";

              }

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

              }

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

              }

              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
                  "12.7.7 of IEEE Std 802.1Q-2018";

              }

              uses dot1qtypes:port-map-grouping;

              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
                "12.7.5 of IEEE Std 802.1Q-2018";

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

              }

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

              }

              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
                  "12.7.7 of IEEE Std 802.1Q-2018";

              }

              uses dot1qtypes:port-map-grouping;
            }  // 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
                "12.7.6 of IEEE Std 802.1Q-2018";

            }

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

            }

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

            }

            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
                  "12.7.7 of IEEE Std 802.1Q-2018";

              }

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

              }

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

              }

              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.";
              }

              uses dot1qtypes:port-map-grouping;
            }  // list filtering-entry
          }  // container permanent-database

          container bridge-vlan {
            when
              "../../bridge-type != 'two-port-mac-relay-bridge'" {
              description
                "Applies to non TPMRs.";
            }
            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
              "12.10 of IEEE Std 802.1Q-2018";

            leaf version {
              type uint16;
              config false;
              description
                "The version number supported.";
              reference
                "12.10.1.3 of IEEE Std 802.1Q-2018";

            }

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

            }

            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
                "12.10.1.3 of IEEE Std 802.1Q-2018";

            }

            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
                "12.10.1.7 of IEEE Std 802.1Q-2018";

            }

            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
                "12.10.1.7 of IEEE Std 802.1Q-2018";

            }

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

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

              }

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

              }

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

              }

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

              }
            }  // 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
                "12.10.1.7 of IEEE Std 802.1Q-2018
                6.12.3 of IEEE Std 802.1Q-2018";

              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
                  "12.10.1.7 of IEEE Std 802.1Q-2018";

              }

              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
                  "12.10.1.7 of IEEE Std 802.1Q-2018";

                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
                      "9.3 of IEEE Std 802-2014";

                  }
                }  // 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
                      "12.10.1.7.1 of IEEE Std 802.1Q-2018";

                  }
                }  // 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
                        "12.10.1.7.1 of IEEE Std 802.1Q-2018";

                    }
                  }  // 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
                  "6.12.2 of IEEE Std 802.1Q-2018";

              }
            }  // 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
                  "12.10.3 of IEEE Std 802.1Q-2018";

              }

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

              }

              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
                  "12.10.3 of IEEE Std 802.1Q-2018";

              }
            }  // 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
                  "12.10.3 of IEEE Std 802.1Q-2018";

              }

              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
                  "12.10.3 of IEEE Std 802.1Q-2018";

              }

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

              }
            }  // 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
                "12.10.3.4 of IEEE Std 802.1Q-2018
                12.10.3.5 of IEEE Std 802.1Q-2018";

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

              }

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

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

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

            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
                "12.12.2 of IEEE Std 802.1Q-2018";

              leaf fid {
                type uint32;
                description
                  "The Filtering Database identifier.";
                reference
                  "12.12.2 of IEEE Std 802.1Q-2018";

              }

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

              }
            }  // 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
                  "12.12.2 of IEEE Std 802.1Q-2018";

              }

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

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

    augment /if:interfaces/if:interface {
      when
        "if:type = 'ianaif:bridge' or if:type ="
          + "'ianaif:ethernetCsmacd' or if:type = 'ianaif:ieee8023adLag'"
          + "or if:type = 'ianaif:ilan'" {
        description
          "Applies when a Bridge interface.";
      }
      description
        "Augment the interface model with the Bridge Port";
      container bridge-port {
        description
          "Bridge Port is an extension of the IETF Interfaces model
        (RFC7223).";
        leaf component-name {
          type string;
          description
            "Used to reference configured Component node.";
        }

        leaf port-type {
          type identityref {
            base type-of-port;
          }
          description
            "The port type. Indicates the capabilities of this port.";
          reference
            "12.4.2.1 of IEEE Std 802.1Q-2018";

        }

        leaf pvid {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          type dot1qtypes:vlan-index-type;
          default "1";
          description
            "The primary (default) VID assigned to a specific Bridge
          Port.";
          reference
            "12.10.1 of IEEE Std 802.1Q-2018
            5.4, item m) of IEEE Std 802.1Q-2018";

        }

        leaf default-priority {
          type dot1qtypes:priority-type;
          default "0";
          description
            "The default priority assigned to a specific Bridge Port.";
          reference
            "12.6.2 of IEEE Std 802.1Q-2018";

        }

        container priority-regeneration {
          description
            "The Priority Regeneration Table parameters associated with
          a specific Bridge Port. A list of Regenerated User
          Priorities for each received priority on each port of a
          Bridge. The regenerated priority value may be used to index
          the Traffic Class Table for each input port. This only has
          effect on media that support native priority. The default
          values for Regenerated User Priorities are the same as the
          User Priorities";
          reference
            "12.6.2 of IEEE Std 802.1Q-2018
            6.9.4 of IEEE Std 802.1Q-2018";

          uses dot1qtypes:priority-regeneration-table-grouping;
        }  // container priority-regeneration

        leaf pcp-selection {
          type dot1qtypes:pcp-selection-type;
          default "8P0D";
          description
            "The Priority Code Point selection assigned to a specific
          Bridge Port. This object identifies the rows in the PCP
          encoding and decoding tables that are used to remark frames
          on this port if this remarking is enabled";
          reference
            "12.6.2 of IEEE Std 802.1Q-2018
            6.9.3 of IEEE Std 802.1Q-2018";

        }

        container pcp-decoding-table {
          description
            "The Priority Code Point Decoding Table parameters
          associated with a specific Bridge Port.";
          uses dot1qtypes:pcp-decoding-table-grouping;
        }  // container pcp-decoding-table

        container pcp-encoding-table {
          description
            "The Priority Code Point Encoding Table parameters
          associated with a specific Bridge Port.";
          uses dot1qtypes:pcp-encoding-table-grouping;
        }  // container pcp-encoding-table

        leaf use-dei {
          type boolean;
          default "false";
          description
            "The Drop Eligible Indicator. If it is set to True, then the
          drop_eligible parameter is encoded in the DEI of transmitted
          frames, and the drop_eligible parameter shall be true(1) for
          a received frame if the DEI is set in the VLAN tag or the
          Priority Code Point Decoding Table indicates drop_eligible
          True for the received PCP value. If this parameter is False,
          the DEI shall be transmitted as zero and ignored on receipt.";
          reference
            "12.6.2 of IEEE Std 802.1Q-2018
            6.9.3 of IEEE Std 802.1Q-2018";

        }

        leaf drop-encoding {
          type boolean;
          default "false";
          description
            "The Drop Encoding parameter. If a Bridge supports encoding
          or decoding of drop_eligible from the PCP field of a VLAN
          tag (6.7.3) on any of its Ports, then it shall implement a
          Boolean parameter Require Drop Encoding on each of its Ports
          with default value False. If Require Drop Encoding is True
          and the Bridge Port cannot encode particular priorities with
          drop_eligible, then frames queued with those priorities and
          drop_eligible True shall be discarded and not transmitted.";
          reference
            "12.6.2 of IEEE Std 802.1Q-2018
            8.6.6 of IEEE Std 802.1Q-2018";

        }

        leaf service-access-priority-selection {
          type boolean;
          default "false";
          description
            "The Service Access Priority selection. Indication of
          whether the Service Access Priority Selection function is
          supported on the Customer Bridge Port to request priority
          handling of the frame from a Port-based service interface.";
          reference
            "12.6.2 of IEEE Std 802.1Q-2018
            6.13 of IEEE Std 802.1Q-2018";

        }

        container service-access-priority {
          description
            "The Service Access Priority table parameters. A table that
          contains information about the Service Access Priority
          Selection function for a Provider Bridge. The use of this
          table enables a mechanism for a Customer Bridge attached to
          a Provider Bridged Network to request priority handling of
          frames.";
          reference
            "12.6.2 of IEEE Std 802.1Q-2018
            6.13.1 of IEEE Std 802.1Q-2018";

          uses dot1qtypes:service-access-priority-table-grouping;
        }  // container service-access-priority

        leaf number-of-traffic-classes {
          type uint8 {
            range "1..8";
          }
          config false;
          description
            "The number of egress traffic classes supported on this
        port.";
          reference
            "12.6.3.1 of IEEE Std 802.1Q-2018";

        }

        container traffic-class {
          status obsolete;
          description
            "The Traffic Class table parameters. A table mapping
          evaluated priority to Traffic Class, for forwarding by the
          Bridge";
          reference
            "12.6.3 of IEEE Std 802.1Q-2018
            8.6.6 of IEEE Std 802.1Q-2018";

          uses dot1qtypes:traffic-class-table-grouping;
        }  // container traffic-class

        leaf acceptable-frame {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          type enumeration {
            enum
              "admit-only-VLAN-tagged-frames" {
              value 0;
              description
                "Admit only VLAN-tagged frames.";
            }
            enum
              "admit-only-untagged-and-priority-tagged" {
              value 1;
              description
                "Admit only untagged and priority-tagged frames.";
            }
            enum "admit-all-frames" {
              value 2;
              description
                "Admit all frames.";
            }
          }
          default "admit-all-frames";
          description
            "To configure the Acceptable Frame Types parameter
          associated with one or more Ports";
          reference
            "12.10.1.3 of IEEE Std 802.1Q-2018
            6.9 of IEEE Std 802.1Q-2018";

        }

        leaf enable-ingress-filtering {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          type boolean;
          default "false";
          description
            "To enable the Ingress Filtering feature associated with one
          or more Ports.";
          reference
            "12.10.1.4 of IEEE Std 802.1Q-2018
            8.6.2 of IEEE Std 802.1Q-2018";

        }

        leaf enable-restricted-vlan-registration {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          type boolean;
          default "false";
          description
            "To enable the Restricted VLAN Registration associated with
          one or more Ports.";
          reference
            "11.2.3.2.3 of IEEE Std 802.1Q-2018
            12.10.1.6 of IEEE Std 802.1Q-2018";

        }

        leaf enable-vid-translation-table {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          type boolean;
          default "false";
          description
            "To enable VID Translation table associated with a Bridge
          Port. This is not applicable to Bridge Ports that do no
          support a VID Translation Table.";
          reference
            "12.10.1.8 of IEEE Std 802.1Q-2018
            6.9 of IEEE Std 802.1Q-2018";

        }

        leaf enable-egress-vid-translation-table {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          type boolean;
          default "false";
          description
            "To enable Egress VID Translation table associated with a
          Bridge Port. This is not applicable to Ports that do not
          support an Egress VID Translation table.";
          reference
            "12.10.1.9 of IEEE Std 802.1Q-2018
            6.9 of IEEE Std 802.1Q-2018";

        }

        list protocol-group-vid-set {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          if-feature port-and-protocol-based-vlan;
          key "group-id";
          description
            "The list of VID values associated with the Protocol Group
          Identifier for this port.";
          reference
            "12.10.1.1.3 of IEEE Std 802.1Q-2018";

          leaf group-id {
            type uint32;
            description
              "The protocol group identifier";
            reference
              "12.10.1.7 of IEEE Std 802.1Q-2018";

          }

          leaf-list vid {
            type dot1qtypes:vlanid;
            description
              "The VLAN identifier to which this entry applies.";
            reference
              "12.10.2 of IEEE Std 802.1Q-2018";

          }
        }  // list protocol-group-vid-set

        leaf admin-point-to-point {
          type enumeration {
            enum "force-true" {
              value 1;
              description
                "Indicates that this port should always be treated as if
              it is connected to a point-to-point link.";
            }
            enum "force-false" {
              value 2;
              description
                "Indicates that this port should be treated as having a
              shared media connection.";
            }
            enum "auto" {
              value 3;
              description
                "Indicates that this port is considered to have a
              point-to-point link if it is an Aggregator and all of
              its members are aggregatable, or if the MAC entity is
              configured for full duplex operation, either through
              auto-negotiation or by management means.";
            }
          }
          description
            "For a port running spanning tree, this object represents
          the administrative point-to-point status of the LAN segment
          attached to this port, using the enumeration values of IEEE
          Std 802.1AC. A value of forceTrue(1) indicates that this
          port should always be treated as if it is connected to a
          point-to-point link. A value of forceFalse(2) indicates that
          this port should be treated as having a shared media
          connection. A value of auto(3) indicates that this port is
          considered to have a point-to-point link if it is an
          Aggregator and all of its members are aggregatable, or if
          the MAC entity is configured for full duplex operation,
          either through auto-negotiation or by management means.
          Manipulating this object changes the underlying
          adminPointToPointMAC.";
          reference
            "12.4.2 of IEEE Std 802.1Q-2018
            6.8.2 of IEEE Std 802.1Q-2018";

        }

        leaf protocol-based-vlan-classification {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          if-feature port-and-protocol-based-vlan;
          type boolean;
          config false;
          description
            "A boolean indication indicating if Port-and-Protocol-based
          VLAN classification is supported on a given Port.";
          reference
            "5.4.1.2 of IEEE Std 802.1Q-2018";

        }

        leaf max-vid-set-entries {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          if-feature port-and-protocol-based-vlan;
          type uint16;
          config false;
          description
            "The maximum number of entries supported in the VID set on a
          given Port.";
          reference
            "12.10.1.1.3 of IEEE Std 802.1Q-2018";

        }

        leaf port-number {
          type dot1qtypes:port-number-type;
          config false;
          description
            "An integer that uniquely identifies a Bridge Port.";
          reference
            "12.3, item i) of IEEE Std 802.1Q-2018
            17.3.2.2 of IEEE Std 802.1Q-2018";

        }

        leaf address {
          type ieee:mac-address;
          config false;
          description
            "The specific MAC address of the individual MAC Entity
          associated with the Port.";
          reference
            "12.4.2 of IEEE Std 802.1Q-2018
            12.4.2.1.1.3, item a) of IEEE Std 802.1Q-2018";

        }

        leaf capabilities {
          type bits {
            bit tagging {
              position 0;
              description
                "Supports 802.1Q VLAN tagging of frames and MVRP.";
            }
            bit
              configurable-acceptable-frame-type {
              position 1;
              description
                "Allows modified values of acceptable frame types";
            }
            bit ingress-filtering {
              position 2;
              description
                "Supports the discarding of any frame received on a Port
              whose VLAN classification does not include that Port in
              its member set.";
            }
          }
          config false;
          description
            "The feature capabilities associated with port. Indicates
          the parts of IEEE 802.1Q that are optional on a per-port
          basis, that are implemented by this device, and that are
          manageable.";
          reference
            "12.10.1.1.3, item c) of IEEE Std 802.1Q-2018
            12.4.2 of IEEE Std 802.1Q-2018";

        }

        leaf type-capabilties {
          type bits {
            bit customer-vlan-port {
              position 0;
              description
                "Indicates the port can be a C-TAG aware port of an
              enterprise VLAN aware Bridge";
            }
            bit provider-network-port {
              position 1;
              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 or PBBN.";
            }
            bit customer-network-port {
              position 2;
              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 or PBBN.";
            }
            bit customer-edge-port {
              position 3;
              description
                "Indicates the port can be a C-TAG aware port of a
              Provider Bridge used for connections to the exterior of
              a PBN or PBBN.";
            }
            bit customer-backbone-port {
              position 4;
              description
                "Indicates the port can be a I-TAG aware port of a
              Backbone Edge Bridge's B-component.";
            }
            bit virtual-instance-port {
              position 5;
              description
                "Indicates the port can be a virtual S-TAG aware port
              within a Backbone Edge Bridge's I-component which is
              responsible for handling S-tagged traffic for a specific
              backbone service instance.";
            }
            bit d-bridge-port {
              position 6;
              description
                "Indicates the port can be a VLAN-unaware member of an
              802.1Q Bridge.";
            }
            bit
              remote-customer-access-port {
              position 7;
              description
                "Indicates the port can be an S-TAG aware port of a
              Provider Bridge capable of providing Remote Customer
              Service Interfaces.";
            }
            bit station-facing-bridge-port {
              position 8;
              description
                "Indicates the station-facing Bridge Port in a EVB
              Bridge.";
            }
            bit uplink-access-port {
              position 9;
              description
                "Indicates the uplink access port in an EVB Bridge or
              EVB station.";
            }
            bit uplink-relay-port {
              position 10;
              description
                "Indicates the uplink relay port in an EVB station.";
            }
          }
          config false;
          description
            "The type of feature capabilities supported with port.
          Indicates the capabilities of this port.";
          reference
            "12.4.2 of IEEE Std 802.1Q-2018";

        }

        leaf external {
          type boolean;
          config false;
          description
            "A boolean indicating whether the port is external. A value
          of True means the port is external. A value of False means
          the port is internal.";
          reference
            "12.4.2 of IEEE Std 802.1Q-2018";

        }

        leaf oper-point-to-point {
          type boolean;
          config false;
          description
            "For a port running spanning tree, this object represents
          the operational point-to-point status of the LAN segment
          attached to this port. It indicates whether a port is
          considered to have a point-to-point connection.
          
          If admin-point-to-point is set to auto(2), then the value of
          oper-point-to-point is determined in accordance with the
          specific procedures defined for the MAC entity concerned, as
          defined in IEEE Std 802.1AC.
          
          The value is determined dynamically; that is, it is
          re-evaluated whenever the value of admin-point-to-point
          changes, and whenever the specific procedures defined for
          the MAC entity evaluate a change in its point-to-point
          status.";
          reference
            "IEEE Std 802.1AC
            12.4.2 of IEEE Std 802.1Q-2018";

        }

        container statistics {
          config false;
          description
            "Container of operational state node information associated
          with the bridge port.";
          uses dot1qtypes:bridge-port-statistics-grouping;

          leaf discard-on-ingress-filtering {
            when
              "../../component-name != 'd-bridge-component'" {
              description
                "Applies to non TPMRs";
            }
            if-feature ingress-filtering;
            type yang:counter64;
            description
              "The number of frames that were discarded as a result of
            Ingress Filtering being enabled.
            
            Discontinuities in the value of this counter can occur at
            re-initialization of the management system, and at other
            times as indicated by the value of 'discontinuity-time'.";
            reference
              "12.6.1.1.3 of IEEE Std 802.1Q-2018";

          }
        }  // container statistics

        list vid-translations {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          key "local-vid";
          description
            "To configure the VID Translation Table (6.9) associated
          with a Port. This object is not applicable to Ports that do
          not support a VID Translation Table. The default
          configuration of the table has the value of the Relay VID
          equal to the value of the Local VID. If no local VID is
          configured, then it is assumed that the relay VID is the
          same value as the local VID.
          
          If the port supports an Egress VID translation table, the
          VID Translation Configuration object configures the Local
          VID to Relay VID mapping on ingress only. If an Egress VID
          translation is not supported, the VID Translation
          Configuration object defines a single bidirectional mapping.
          In this case, the Bridge should not allow multiple keys
          ('local-vid') mapped to the same 'relay-vid' value.";
          leaf local-vid {
            type dot1qtypes:vlanid;
            description
              "The Local VID after translation received at the ISS or
            EISS.";
            reference
              "12.10.1.8 of IEEE Std 802.1Q-2018
              6.9 of IEEE Std 802.1Q-2018";

          }

          leaf relay-vid {
            type dot1qtypes:vlanid;
            description
              "The Relay VID received before translation received at ISS
            or EISS.";
            reference
              "12.10.1.8 of IEEE Std 802.1Q-2018
              6.9 of IEEE Std 802.1Q-2018";

          }
        }  // list vid-translations

        list egress-vid-translations {
          when
            "../component-name != 'd-bridge-component'" {
            description
              "Applies to non TPMRs";
          }
          key "relay-vid";
          description
            "To configure the Egress VID Translation Table (6.9)
          associated with a Port. This object is not applicable to
          Ports that do not support an Egress VID Translation Table.
          The default configuration of the table has the value of the
          Local VID equal to the value of the Relay VID. If no Relay
          VID is configured, then it is assumed that the local VID is
          the same value as the relay VID.";
          leaf relay-vid {
            type dot1qtypes:vlanid;
            description
              "The Relay VID received before translation received at ISS
            or EISS.";
            reference
              "12.10.1.9 of IEEE Std 802.1Q-2018
              6.9 of IEEE Std 802.1Q-2018";

          }

          leaf local-vid {
            type dot1qtypes:vlanid;
            description
              "The Local VID after translation received at the ISS or
            EISS.";
            reference
              "12.10.1.9 of IEEE Std 802.1Q-2018
              6.9 of IEEE Std 802.1Q-2018";

          }
        }  // list egress-vid-translations
      }  // container bridge-port
    }
  }  // module ieee802-dot1q-bridge