ieee802-dot1q-cfm

Connectivity Fault Management (CFM) comprises capabilities for detecting, verifying, and isolating connectivity failures in Virt...

  • Version: 2022-01-19

    ieee802-dot1q-cfm@2022-01-19


    
      module ieee802-dot1q-cfm {
    
        yang-version 1.1;
    
        namespace
          "urn:ieee:std:802.1Q:yang:ieee802-dot1q-cfm";
    
        prefix dot1q-cfm;
    
        import ieee802-dot1q-cfm-types {
          prefix cfm-types;
        }
        import ieee802-dot1q-types {
          prefix dot1q-types;
        }
        import ieee802-types {
          prefix ieee;
        }
        import ietf-yang-types {
          prefix yang;
        }
        import ietf-inet-types {
          prefix inet;
        }
    
        organization "IEEE 802.1 Working Group";
    
        contact
          "WG-URL: http://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
          Piscataway, NJ 08854
          USA
    
    E-mail: stds-802-1-chairs@ieee.org";
    
        description
          "Connectivity Fault Management (CFM) comprises capabilities for
    detecting, verifying, and isolating connectivity failures in Virtual
    Bridged Local Area Networks. These capabilities can be used in
    networks operated by multiple independent organizations, each with
    restricted management access to each other's equipment.
    
    Copyright (C) IEEE (2022).
    
    This version of this YANG module is part of IEEE Std 802.1Q; see the
    standard itself for full legal notices.";
    
        revision "2022-01-19" {
          description
            "Published as part of IEEE Std 802.1Q-2022.";
          reference
            "IEEE Std 802.1Q-2022, Bridges and Bridged Networks.";
    
        }
    
        revision "2020-06-04" {
          description
            "Published as part of IEEE Std 802.1Qcx-2020. Initial version.";
          reference
            "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks - YANG Data
            Model for Connectivity Fault Management.";
    
        }
    
    
        container cfm {
          description
            "Connectivity Fault Management configuration and operational
    information.";
          list maintenance-domain {
            key "md-id";
            description
              "Contains the Maintenance Domain configuration and operational
    data. A Maintenance Domain is the network or the part of the
    network for which faults in connectivity can be managed. The
    boundary of a Maintenance Domain is defined by a set of Domain
    Service Access Points (DoSAPs), each of which can become a point
    of connectivity to a service instance.";
            leaf md-id {
              type cfm-types:name-key-type;
              description
                "The index to the Maintenance Domain list.";
            }
    
            choice md-name {
              default "char-string";
              description
                "The Maintenance Domain name type.";
              leaf none {
                type empty;
                description
                  "No format specified, usually because there is not a
    Maintenance Domain Name. The Maintenance Domain name
    inserted in CFM protocol messages will be a zero length
    OCTET string.";
              }
              leaf dns-like-name {
                type string {
                  length "1..43";
                }
                description
                  "Domain name like string, globally unique text string
    derived from a DNS name.";
              }
    
              case mac-address-and-uint {
                description
                  "MAC address plus 2-octet (unsigned) integer.";
                container mac-address-and-uint-type {
                  description
                    "The MAC address and uint type definition.";
                  leaf address {
                    type ieee:mac-address;
                    mandatory true;
                    description
                      "The MAC address.";
                  }
    
                  leaf int {
                    type uint16;
                    mandatory true;
                    description
                      "The additional 2-octet (unsigned) integer.";
                  }
                }  // container mac-address-and-uint-type
              }  // case mac-address-and-uint
              leaf char-string {
                type string {
                  length "1..43";
                  pattern '[ -~]*';
                }
                default "DEFAULT";
                description
                  "RFC2579 DisplayString, except that the character codes 0-31
    (decimal) are not used.";
              }
            }  // choice md-name
    
            leaf md-level {
              type cfm-types:md-level-type;
              default "0";
              description
                "The Maintenance Domain level.";
              reference
                "3.123, Item b) in 12.14.5.1.3 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf mhf-creation {
              type cfm-types:mhf-creation-type;
              must ". != 'mhf-defer'" {
                description
                  "The value mhf-defer is not allowed";
              }
              default "mhf-none";
              description
                "Value indicating whether the management entity can create
    MHFs (MIP Half Function) for this Maintenance Domain. Since
    there is no encompassing Maintenance Domain, the value
    mhf-defer is not allowed.";
              reference
                "3.123, Item c) in 12.14.5.1.3 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf id-permission {
              type cfm-types:sender-id-permission-type;
              must ". != 'send-id-defer'" {
                description
                  "The value send-id-defer is not allowed";
              }
              default "send-id-none";
              description
                "Value indicating what, if anything, is to be included in the
    Sender ID TLV transmitted by Maintenance Points configured in
    this Maintenance Domain. Since there is no encompassing
    Maintenance Domain, the value send-id-defer is not allowed.";
              reference
                "3.123, item d) in 12.14.5.1.3 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf fault-alarm-transmission {
              type cfm-types:fault-alarm-type;
              default "not-transmitted";
              description
                "A value indicating whether Fault Alarms are to be transmitted
    or not. The default is not transmit.";
              reference
                "3.123, item e) in 12.14.5.1.3 of IEEE Std 802.1Q-2022";
    
            }
    
            list maintenance-association {
              key "ma-id";
              description
                "Provides configuration and operational data for the
    Maintenance Associations. A Maintenance Association is a set
    of MEPs, each configured with the same MAID and MD level,
    established to verify the integrity of a single service
    instance. A Maintenance Association can be thought of as a
    full mesh of Maintenance Entities among a set of MEPs so
    configured.";
              leaf ma-id {
                type cfm-types:name-key-type;
                description
                  "Key of the Maintenance Association list of entries.";
              }
    
              choice ma-name {
                mandatory true;
                description
                  "The Maintenance Association name type.";
                leaf primary-vid {
                  type dot1q-types:vlanid;
                  description
                    "Primary VLAN ID. 12 bits represented in a 2-octet integer.";
                }
                leaf char-string {
                  type string {
                    length "1..45";
                    pattern '[ -~]*';
                  }
                  description
                    "RFC2579 DisplayString, except that the character codes 0-31
    (decimal) are not used.";
                }
                leaf unsigned-int16 {
                  type uint16;
                  description "2-octet integer.";
                }
                container vpn-id {
                  description
                    "RFC2685 VPN ID. 3 octet VPN authority Organizationally
    Unique Identifier followed by 4 octet VPN index identifying
    VPN according to the OUI.";
                  leaf vpn-oui {
                    type uint32 {
                      range "0..16777215";
                    }
                    mandatory true;
                    description
                      "3 octet VPN authority Organizationally Unique Identifier.";
                  }
    
                  leaf vpn-index {
                    type uint32;
                    mandatory true;
                    description
                      "4 octet VPN index identifying VPN according to OUI.";
                  }
                }  // container vpn-id
              }  // choice ma-name
    
              leaf ccm-interval {
                type cfm-types:ccm-interval-type;
                default "1sec";
                description
                  "The interval between CCM transmissions to be used by all
    MEPs in the Maintenance Association.";
                reference
                  "Item e) in 12.14.6.1.3 of IEEE Std 802.1Q-2022";
    
              }
    
              leaf fault-alarm-transmission {
                type cfm-types:fault-alarm-type;
                description
                  "A value indicating whether Fault Alarms are to be
    transmitted or not. If this leaf node is not present then
    the disposition of the fault-alarm used by the MD should be
    used.";
                reference
                  "3.123, Item e) in 12.14.5.1.3 of IEEE Std 802.1Q-2022";
    
              }
    
              leaf mhf-creation {
                type cfm-types:mhf-creation-type;
                default "mhf-defer";
                description
                  "Value indicating whether the management entity can create
    MHFs (MIP Half Function) for this Maintenance Association.";
                reference
                  "3.123, Item c) in 12.14.5.1.3 of IEEE Std 802.1Q-2022";
    
              }
    
              leaf id-permission {
                type cfm-types:sender-id-permission-type;
                default "send-id-defer";
                description
                  "Enumerated value indicating what, if anything, is to be
    included in the Sender ID TLV (21.5.3) transmitted by MPs
    configured in this MA.";
                reference
                  "Item d) in 12.14.3.1.3 of IEEE Std 802.1Q-2022";
    
              }
    
              list maintenance-association-mep {
                key "mep-id";
                description
                  "The list of all MEPs that belong to this Maintenance
    Association.";
                leaf mep-id {
                  type cfm-types:mep-id-type;
                  description
                    "Integer that is unique among all the MEPs in the same
    Maintenance Association.";
                  reference
                    "Item g) in 12.14.6.1.3 of IEEE Std 802.1Q-2022";
    
                }
              }  // list maintenance-association-mep
            }  // list maintenance-association
          }  // list maintenance-domain
    
          list maintenance-group {
            key "maintenance-group-id";
            description
              "The list of maintenance association groups, which are uniquely
    associated with a maintenance domain, maintenance association,
    for which the MEPs belong.";
            leaf maintenance-group-id {
              type cfm-types:name-key-type;
              description
                "The maintenance group provides a handle for the MD and MA
    combination.";
            }
    
            leaf md-id {
              type leafref {
                path "/cfm/maintenance-domain/md-id";
              }
              mandatory true;
              description
                "A reference to the maintenance domain that this maintenance
    group is associated with.";
            }
    
            leaf ma-id {
              type leafref {
                path "/cfm/maintenance-domain[md-id = current()/../md-id]/maintenance-association/ma-id";
              }
              mandatory true;
              description
                "A reference to the maintenance association in the specified
    maintenance domain, that this maintenance group is associated
    with.";
            }
    
            list mep {
              key "mep-id";
              description
                "A list of local Maintenance association End Points (MEPs). A
    MEP is an actively managed CFM entity, associated with a
    specific DoSAP of a service instance, which can generate and
    receive CFM PDUs and track any responses. It is an end point
    of a single Maintenance Association (MA) and is an end point
    of a separate Maintenance Entity for each of the other MEPs in
    the same MA.";
              leaf mep-id {
                type leafref {
                  path "/cfm/maintenance-domain[md-id = current()/../../md-id]/maintenance-association[ma-id = current()/../../ma-id]/maintenance-association-mep/mep-id";
                }
                description
                  "Integer that is unique among all the MEPs in the same
    Maintenance Association.";
                reference
                  "12.14.7, 19.2 of IEEE Std 802.1Q-2022";
    
              }
    
              leaf direction {
                type cfm-types:mp-direction-type;
                mandatory true;
                description
                  "The direction in which the MEP faces on the Bridge Port.
    Example, up or down.";
                reference
                  "Item c) in 12.14.7.1.3, 19.2 of IEEE Std 802.1Q-2022";
    
              }
    
              leaf enabled {
                type boolean;
                default "false";
                description
                  "The administrative state of the MEP. TRUE indicates that
    the MEP is to functional normally, and FALSE indicates that
    it is to cease functioning.";
                reference
                  "Item e) in 12.14.7.1.3, 20.9.1 of IEEE Std 802.1Q-2022";
    
              }
    
              leaf ccm-ltm-priority {
                type dot1q-types:priority-type;
                default "7";
                description
                  "The priority value for CCMs and LTMs transmitted by the
    MEP. The default value is the highest priority allowed to
    pass through the Bridge Port for any of the MEPs VID(s).";
                reference
                  "Item h) in 12.14.7.1.3 of IEEE Std 802.1Q-2022";
    
              }
    
              leaf mac-address {
                type ieee:mac-address;
                config false;
                mandatory true;
                description
                  "The MAC address of the MEP.";
                reference
                  "Item i) in 12.14.7.1.3, 19.4 of IEEE Std 802.1Q-2022";
    
              }
    
              list inactive-remote-mep {
                key "inactive-rmep-id";
                description
                  "A list indicating which of the remote MEPs in the same MA
    are inactive. The Remote MEP state machines (20.20) are
    instantiated only for the remote MEPs which are present in
    the maintenance-association-mep-list, but not in this list.
    By default, all configured remote MEPs in the same MA are
    active";
                leaf inactive-rmep-id {
                  type leafref {
                    path "/cfm/maintenance-domain[md-id = current()/../../../md-id]/maintenance-association[ma-id = current()/../../../ma-id]/maintenance-association-mep/mep-id";
                  }
                  description
                    "Maintenance association Endpoint Identifier of a remote
    MEP for which the Remote MEP state machine should not be
    instantiated.";
                  reference
                    "Item ae) in 12.14.7.1.3 of IEEE Std 802.1Q-2022";
    
                }
              }  // list inactive-remote-mep
    
              list mep-db {
                key "rmep-id";
                config false;
                description
                  "The MEP CCM Database. A database, maintained by every MEP,
    that maintains received information about other MEPs in the
    Maintenance Association.";
                leaf rmep-id {
                  type cfm-types:mep-id-type;
                  description
                    "Maintenance association Endpoint Identifier of a remote
    MEP whose information from the MEP Database is to be
    returned.";
                  reference
                    "Item b) in 12.14.7.6.2 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf rmep-state {
                  type cfm-types:remote-mep-state-type;
                  mandatory true;
                  description
                    "The operational state of the remote MEP state machine";
                  reference
                    "Item b) in 12.14.7.6.3, 20.20 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf rmep-failed-ok-time {
                  type yang:timeticks;
                  mandatory true;
                  description
                    "The time (SysUpTime) at which the Remote MEP state
    machine last entered either the RMEP_FAILED or RMEP_OK
    state";
                  reference
                    "Item c) in 12.14.7.6.3 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf mac-address {
                  type ieee:mac-address;
                  mandatory true;
                  description
                    "The MAC address of the remote MEP.";
                  reference
                    "Item d) in 12.14.7.6.3, 20.19.7 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf rdi {
                  type boolean;
                  mandatory true;
                  description
                    "State of the RDI bit in the last received CCM (true for
    RDI=1), or false if none has been received.";
                  reference
                    "Item e) in 12.14.7.6.3, 20.19.2 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf port-status-tlv {
                  type cfm-types:port-status-tlv-value-type;
                  description
                    "An enumerated value of the Port status TLV received in
    the last CCM from the remote MEP or the default value
    no-port-state-tlv indicating either no CCM has been
    received, or that no port status TLV was received in the
    last CCM.";
                  reference
                    "Item f) in 12.14.7.6.3, 20.19.3 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf interface-status-tlv {
                  type cfm-types:interface-status-tlv-value-type;
                  description
                    "An enumerated value of the Interface status TLV received
    in the last CCM from the remote MEP or the default value
    is-no-interface-status-tlv indicating either no CCM has
    been received, or that no interface status TLV was
    received in the last CCM.";
                  reference
                    "Item g) in 12.14.7.6.3, 20.19.4 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf chassis-id-subtype {
                  type ieee:chassis-id-subtype-type;
                  description
                    "This object specifies the format of the Chassis ID
    received in the last CCM.";
                  reference
                    "Item h) in 12.14.7.6.3, 21.5.3.2 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf chassis-id {
                  type ieee:chassis-id-type;
                  description
                    "The Chassis ID. The format of this object is determined
    by the value of the ltr-chassis-id-subtype object.";
                  reference
                    "Item h) in 12.14.7.6.3, 21.5.3.3 of IEEE Std 802.1Q-2022";
    
                }
    
                container transport-service-domain {
                  description
                    "The transport management domain and address.";
                  reference
                    "Item h) in 12.14.7.6.3 of IEEE Std 802.1Q-2022";
    
                  leaf domain {
                    type yang:object-identifier-128;
                    description
                      "The domain type.";
                  }
    
                  choice management-address {
                    when "./domain";
                    mandatory true;
                    description
                      "Selects the management address";
                    case ip {
                      description
                        "Represents an IP TCP, UDP, or SCTP transport address
    consisting of an IPv4/v6 address, and a port number,
    associated with the domain type defined by the domain leaf
    node.";
                      leaf ip-address {
                        type inet:ip-address;
                        mandatory true;
                        description
                          "IPv4 or IPv6 address.";
                      }
    
                      leaf ip-port {
                        type inet:port-number;
                        mandatory true;
                        description "IP port.";
                      }
                    }  // case ip
                    leaf local-address {
                      type string {
                        length "1..255";
                      }
                      mandatory true;
                      description
                        "Represents a POSIX Local IPC transport address, associated
    with the domain type defined by the domain leaf node.";
                    }
                    leaf dns-address {
                      type string {
                        length "1..255";
                      }
                      mandatory true;
                      description
                        "The transport domain using fully qualified domain names,
    associated with the domain type defined by the domain leaf
    node. Represents a DNS domain name followed by a colon ':'
    (ASCII character 0x3A) and a port number in ASCII. The name
    SHOULD be fully qualified whenever possible.";
                    }
                    leaf unknown-address {
                      type binary {
                        length "1..255";
                      }
                      description
                        "This represents an undefined address, for the case when the
    domain type provided is an unrecognizable value.";
                    }
                  }  // choice management-address
                }  // container transport-service-domain
    
                leaf rmep-is-active {
                  type boolean;
                  default "true";
                  description
                    "A Boolean value stating if the remote MEP is active.";
                  reference
                    "Item ae) in 12.14.7.1.3 of IEEE Std 802.1Q-2022";
    
                }
              }  // list mep-db
    
              container continuity-check {
                description
                  "Continuity check protocol";
                leaf ccm-enabled {
                  type boolean;
                  default "false";
                  description
                    "Indicates whether the MEP can generate CCMs. If TRUE, the
    MEP will generate CCM PDUs.";
                  reference
                    "Item g) in 12.14.7.1.3, 20.10.1 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf fng-state {
                  type cfm-types:fng-state-type;
                  default "fng-reset";
                  config false;
                  description
                    "The current state of the MEP Fault Notification Generator
    state machine.";
                  reference
                    "Item f) in 12.14.7.1.3, 20.35 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf fault-alarm-transmission {
                  type cfm-types:fault-alarm-type;
                  description
                    "A value indicating whether Fault Alarms are to be
    transmitted or not. If this leaf is not specified, the
    disposition of the fault-alarm used by the MD should be
    used.";
                  reference
                    "3.124, Item j) in 12.14.7.1.3 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf lowest-priority-defect {
                  type cfm-types:lowest-alarm-priority-type;
                  default
                    "mac-remote-error-xcon";
                  description
                    "The lowest priority defect that is allowed to generate
    fault alarms.";
                  reference
                    "Item k) in 12.14.7.1.3, 20.9.5 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf fng-alarm-time {
                  type uint16 {
                    range "2500..10000";
                  }
                  units "milliseconds";
                  default "2500";
                  description
                    "The time that defect must be present before a Fault Alarm
    is issued.";
                  reference
                    "Item l) in 12.14.7.1.3, 20.35.3 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf fng-reset-time {
                  type uint16 {
                    range "2500..10000";
                  }
                  units "milliseconds";
                  default "10000";
                  description
                    "The time that defects must be absent before resetting a
    Fault Alarm.";
                  reference
                    "Item m) in 12.14.7.1.3, 20.35.4 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf highest-priority-defect {
                  type cfm-types:highest-defect-priority-type;
                  config false;
                  mandatory true;
                  description
                    "The highest priority defect that has been present since
    the MEPs Fault Notification Generator state machine was
    last in the FNG_RESET state.";
                  reference
                    "Item n) in 12.14.7.1.3, 20.35.9 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf defects {
                  type cfm-types:mep-defects-type;
                  config false;
                  mandatory true;
                  description
                    "Vector of boolean error conditions";
                  reference
                    "12.14.7.1.3 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf error-ccm-last-failure {
                  type binary {
                    length "1..128";
                  }
                  config false;
                  description
                    "The last received CCM that triggered a def-error-ccm
    fault.";
                  reference
                    "Item t) in 12.14.7.1.3, 20.21.2 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf xcon-ccm-last-failure {
                  type binary {
                    length "1..128";
                  }
                  config false;
                  description
                    "The last received CCM that triggered a def-xcon-ccm
    fault.";
                  reference
                    "Item u) in 12.14.7.1.3, 20.23.2 of IEEE Std 802.1Q-2022";
    
                }
              }  // container continuity-check
    
              container stats {
                config false;
                description
                  "Contains the counters associated with the MEP.";
                leaf mep-ccm-sequence-errors {
                  type yang:counter64;
                  mandatory true;
                  description
                    "The total number of out-of-sequence CCMs received from
    all remote MEPs.";
                  reference
                    "Item v) in 12.14.7.1.3, 20.16.12 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf mep-ccms-sent {
                  type yang:counter64;
                  mandatory true;
                  description
                    "Total number of CCMs transmitted";
                  reference
                    "Item w) in 12.14.7.1.3, 20.10.2 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf mep-lbr-in {
                  type yang:counter64;
                  mandatory true;
                  description
                    "Total number of valid, in-order Loopback Replies
    received.";
                  reference
                    "Item y) in 12.14.7.1.3, 20.31.1 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf mep-lbr-in-out-of-order {
                  type yang:counter64;
                  mandatory true;
                  description
                    "The total number of valid, out-of-order Loopback Replies
    received";
                  reference
                    "Item z) in 12.14.7.1.3, 20.31.1 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf mep-lbr-bad-msdu {
                  type yang:counter64;
                  mandatory true;
                  description
                    "The total number of LBRs received whose
    mac_service_data_unit did not match (except for the
    OpCode) that of the corresponding LBM.";
                  reference
                    "Item aa) in 12.14.7.1.3, 20.2.3 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf mep-unexpected-ltr-in {
                  type yang:counter64;
                  mandatory true;
                  description
                    "The total number of unexpected LTRs received.";
                  reference
                    "Item ac) in 12.14.7.1.3, 20.44.1 of IEEE Std 802.1Q-2022";
    
                }
    
                leaf mep-lbr-out {
                  type yang:counter64;
                  mandatory true;
                  description
                    "Total number of Loopback Replies transmitted.";
                  reference
                    "Item ad) in 12.14.7.1.3, 20.28.2 of IEEE Std 802.1Q-2022";
    
                }
              }  // container stats
    
              list linktrace-reply {
                key "ltr-transaction-id";
                config false;
                description
                  "This list extends the MEP table and reports on accepted
    transmit-linktrace actions. In case linktrace replies are
    received it also reports with data from the received
    Linktrace reply messages.";
                leaf ltr-transaction-id {
                  type cfm-types:seq-number-type;
                  description
                    "Transaction identifier returned by a previous transmit
    linktrace message command, indicating which LTMs response
    is going to be returned.";
                  reference
                    "Item b) in 12.14.7.5.2 of IEEE Std 802.1Q-2022";
    
                }
    
                container linktrace-input {
                  description
                    "The linktrace parameter input. By default, the priority
    used is that of the CCMs (ccm-ltm-priority) and the drop
    elibility is false.";
                  choice ltr-target {
                    mandatory true;
                    description
                      "Selects the target address type (which is either MEP identifier
    or MAC address) used for the Linktrace transmissions.";
                    case target-ucast-mac-address {
                      description
                        "The target MAC address field to be transmitted. A unicast MAC
    address.";
                      leaf ltm-target-mac-address {
                        type cfm-types:unicast-mac-address-type;
                        description
                          "The target MAC address field to be transmitted. A unicast
    MAC address.";
                        reference
                          "Item c) in 12.14.7.4.2 of IEEE Std 802.1Q-2022";
    
                      }
                    }  // case target-ucast-mac-address
    
                    case target-mep-id {
                      description
                        "The MEP identifier of another MEP in the same MA.";
                      leaf ltm-target-mep-id {
                        type cfm-types:mep-id-type;
                        description
                          "The MEP identifier of another MEP in the same MA.";
                        reference
                          "Item c) in 12.14.7.4.2 of IEEE Std 802.1Q-2022";
    
                      }
                    }  // case target-mep-id
                  }  // choice ltr-target
    
                  leaf ltm-ttl {
                    type uint8 {
                      range "0..255";
                    }
                    default "64";
                    description
                      "The LTM TTL field. Indicates the number of hops remaining to
    the LTM. Decremented by 1 by each Linktrace Responder that
    handles the LTM. The value returned in the LTR is one less than
    that received in the LTM. If the LTM TTL is 0 or 1, the LTM is
    not forwarded to the next hop, and if 0, no LTR is generated.";
                    reference
                      "Item d) in 12.14.7.4.2, 21.8.4 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltm-flags {
                    type cfm-types:mep-tx-ltm-flags-type;
                    default "";
                    description
                      "The flags field for the LTMs transmitted by the MEP.";
                    reference
                      "Item b) in 12.14.7.4.2, 20.42.1 of IEEE Std 802.1Q-2022";
    
                  }
                }  // container linktrace-input
    
                list responses {
                  key "ltr-receive-order";
                  description
                    "The responses associated with the request.";
                  leaf ltr-receive-order {
                    type uint32 {
                      range "1..4294967295";
                    }
                    description
                      "An index to distinguish among multiple LTRs with the
    same LTR Transaction Identifier field value. Assigned
    sequentially from 1, in the order that the Linktrace
    Initiator received the LTRs.";
                  }
    
                  leaf ltr-ttl {
                    type uint8 {
                      range "0..255";
                    }
                    mandatory true;
                    description
                      "TTL field value for a returned LTR.";
                    reference
                      "12.14.7.5, 20.41.2.2 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-forwarded {
                    type boolean;
                    mandatory true;
                    description
                      "Indicates if an LTM was forwarded by the responding MP,
    as returned in the FwdYes flag of the flags field.";
                    reference
                      "Item c) in 12.14.7.5.3, 20.41.2.1 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-terminal-mep {
                    type boolean;
                    mandatory true;
                    description
                      "A Boolean value stating whether the forwarded LTM
    reached a MEP enclosing its MA, as returned in the
    Terminal MEP flag of the Flags field";
                    reference
                      "Item d) in 12.14.7.5.3, 20.41.2.1 of IEEE Std 802.1Q-2022";
    
                  }
    
                  container ltr-last-egress-identifier {
                    description
                      "An octet field holding the Last Egress Identifier
    returned in the LTR Egress Identifier TLV of the LTR.
    The Last Egress Identifier identifies the MEP Linktrace
    Initiator that originated, or the Linktrace Responder
    that forwarded, the LTM to which this LTR is the
    response. This is the same value as the Egress
    Identifier TLV of that LTM.";
                    reference
                      "Item e) in 12.14.7.5.3, 20.41.2.3 of IEEE Std 802.1Q-2022";
    
                    leaf int {
                      type uint16;
                      mandatory true;
                      description
                        "A value used to uniquely identify the MEP Linktrace Initiator
    or Linktrace Responder within that system.";
                    }
    
                    leaf address {
                      type ieee:mac-address;
                      mandatory true;
                      description
                        "A 48-bit IEEE MAC address unique to the system in which the MEP
    Linktrace Initiator or Linktrace Responder resides.";
                    }
                  }  // container ltr-last-egress-identifier
    
                  container ltr-next-egress-identifier {
                    description
                      "An octet field holding the Next Egress Identifier
    returned in the LTR Egress Identifier TLV of the LTR.
    The Next Egress Identifier Identifies the Linktrace
    Responder that transmitted this LTR, and can forward the
    LTM to the next hop. This is the same value as the
    Egress Identifier TLV of the forwarded LTM, if any. If
    the FwdYes bit of the Flags field is false, the contents
    of this field are undefined, i.e., any value can be
    transmitted, and the field is ignored by the receiver.";
                    reference
                      "Item f) in 12.14.7.5.3, 20.41.2.4 of IEEE Std 802.1Q-2022";
    
                    leaf int {
                      type uint16;
                      mandatory true;
                      description
                        "A value used to uniquely identify the MEP Linktrace Initiator
    or Linktrace Responder within that system.";
                    }
    
                    leaf address {
                      type ieee:mac-address;
                      mandatory true;
                      description
                        "A 48-bit IEEE MAC address unique to the system in which the MEP
    Linktrace Initiator or Linktrace Responder resides.";
                    }
                  }  // container ltr-next-egress-identifier
    
                  leaf ltr-relay {
                    type cfm-types:relay-action-field-value-type;
                    mandatory true;
                    description
                      "Value returned in the Relay Action field.";
                    reference
                      "Item g) in 12.14.7.5.3, 20.41.2.5 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-chassis-id-subtype {
                    type ieee:chassis-id-subtype-type;
                    description
                      "Specifies the format of the Chassis ID returned in the
    Sender ID TLV of the LTR, if any. This leaf is not
    present if the LTR did not contain a Sender ID TLV or if
    the Sender ID TLV did not contain a Chassis ID.";
                    reference
                      "Item h) in 12.14.7.5.3, 21.5.3.2 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-chassis-id {
                    when
                      "../ltr-chassis-id-subtype";
                    type ieee:chassis-id-type;
                    mandatory true;
                    description
                      "The Chassis ID returned in the Sender ID TLV of the
    LTR, if any. The format of this object is determined by
    the value of the ltr-chassis-id-subtype object. This
    leaf is not present if the LTR did not contain a Sender
    ID TLV or if the Sender ID TLV did not contain a Chassis
    ID.";
                    reference
                      "Item i) in 12.14.7.5.3, 21.5.3.2 of IEEE Std 802.1Q-2022";
    
                  }
    
                  container ltr-transport-service-domain {
                    description
                      "The transport management domain and address. This
    container is empty if the LTR did not contain a Sender
    ID TLV or if the Sender ID TLV did not contain a
    Management Address.";
                    reference
                      "Item j) in 12.14.7.5.3 of IEEE Std 802.1Q-2022";
    
                    leaf domain {
                      type yang:object-identifier-128;
                      description
                        "The domain type.";
                    }
    
                    choice management-address {
                      when "./domain";
                      mandatory true;
                      description
                        "Selects the management address";
                      case ip {
                        description
                          "Represents an IP TCP, UDP, or SCTP transport address
    consisting of an IPv4/v6 address, and a port number,
    associated with the domain type defined by the domain leaf
    node.";
                        leaf ip-address {
                          type inet:ip-address;
                          mandatory true;
                          description
                            "IPv4 or IPv6 address.";
                        }
    
                        leaf ip-port {
                          type inet:port-number;
                          mandatory true;
                          description "IP port.";
                        }
                      }  // case ip
                      leaf local-address {
                        type string {
                          length "1..255";
                        }
                        mandatory true;
                        description
                          "Represents a POSIX Local IPC transport address, associated
    with the domain type defined by the domain leaf node.";
                      }
                      leaf dns-address {
                        type string {
                          length "1..255";
                        }
                        mandatory true;
                        description
                          "The transport domain using fully qualified domain names,
    associated with the domain type defined by the domain leaf
    node. Represents a DNS domain name followed by a colon ':'
    (ASCII character 0x3A) and a port number in ASCII. The name
    SHOULD be fully qualified whenever possible.";
                      }
                      leaf unknown-address {
                        type binary {
                          length "1..255";
                        }
                        description
                          "This represents an undefined address, for the case when the
    domain type provided is an unrecognizable value.";
                      }
                    }  // choice management-address
                  }  // container ltr-transport-service-domain
    
                  leaf ltr-ingress {
                    type cfm-types:ingress-action-field-value-type;
                    description
                      "The value returned in the Ingress Action Field of the
    LTM. This leaf is not present if no Reply Ingress TLV
    was returned in the LTM.";
                    reference
                      "Item k) in 12.14.7.5.3, 20.41.2.6 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-ingress-mac {
                    when "../ltr-ingress";
                    type ieee:mac-address;
                    mandatory true;
                    description
                      "MAC address returned in the ingress MAC address field.
    This leaf is not present if the ltr-ingress leaf is not
    present.";
                    reference
                      "Item l) in 12.14.7.5.3, 20.41.2.7 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-ingress-port-id-subtype {
                    when "../ltr-ingress";
                    type ieee:port-id-subtype-type;
                    description
                      "Format of the ingress Port ID. This leaf is not present
    if the ltr-ingress leaf is not present, or if the Reply
    Ingress TLV did not contain a Port ID.";
                    reference
                      "Item m) in 12.14.7.5.3, 20.41.2.8 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-ingress-port-id {
                    when
                      "../ltr-ingress and ../ltr-ingress-port-id-subtype";
                    type ieee:port-id-type;
                    mandatory true;
                    description
                      "Ingress Port ID. The format of this object is
    determined by the value of the
    ltr-ingress-port-id-subtype object. This leaf is not
    present if the ltr-ingress leaf or the
    ltr-ingress-port-id-subtype leaf are not present.";
                    reference
                      "Item n) in 12.14.7.5.3, 20.41.2.9 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-egress {
                    type cfm-types:egress-action-field-value-type;
                    description
                      "The value returned in the Egress Action Field of the
    LTM. The node is not present if no Reply Egress TLV was
    returned in the LTM.";
                    reference
                      "Item o) in 12.14.7.5.3, 20.41.2.10 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-egress-mac {
                    when "../ltr-egress";
                    type ieee:mac-address;
                    mandatory true;
                    description
                      "MAC address returned in the egress MAC address field.
    This leaf is not present if the ltr-egress leaf is not
    present.";
                    reference
                      "Item p) in 12.14.7.5.3, 20.41.2.11 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-egress-port-id-subtype {
                    when "../ltr-egress";
                    type ieee:port-id-subtype-type;
                    description
                      "Format of the egress Port ID. This leaf is not present
    if the ltr-egress leaf is not present, or if the Reply
    Egress TLV did not contain a Port ID.";
                    reference
                      "Item q) in 12.14.7.5.3, 20.41.2.12 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-egress-port-id {
                    when
                      "../ltr-egress and ../ltr-egress-port-id-subtype";
                    type ieee:port-id-type;
                    mandatory true;
                    description
                      "Egress Port ID. The format of this object is determined
    by the value of the ltr-egress-port-id-subtype object.
    This leaf is not present if the ltr-egress leaf or the
    ltr-egress-port-id-subtype leaf are not present.";
                    reference
                      "Item r) in 12.14.7.5.3, 20.41.2.13 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltr-organization-specific-tlv {
                    type binary {
                      length "0 | 4..1500";
                    }
                    description
                      "All Organization specific TLVs returned in the LTR, if
    any. Includes all octets including and following the TLV
    Length field of each TLV, concatenated together.";
                    reference
                      "Item s) in 12.14.7.5.3, 21.5.2 of IEEE Std 802.1Q-2022";
    
                  }
                }  // list responses
              }  // list linktrace-reply
    
              action transmit-loopback {
                description
                  "To signal to the MEP to transmit some number of LBMs.
    Accepting the action means the device will transmit LBM
    messages according the input leaf nodes.";
                input {
                  choice lbm-destination {
                    mandatory true;
                    description
                      "Selects the destination type (which is either MEP identifier or
    MAC address) used for the Loopback transmissions.";
                    case dest-ucast-mac-address {
                      description
                        "The target unicast MAC Address field to be transmitted. A
    unicast destination MAC address.";
                      leaf lbm-dest-ucast-mac-address {
                        type cfm-types:unicast-mac-address-type;
                        description
                          "The target MAC Address field to be transmitted. A unicast
    destination MAC address.";
                        reference
                          "Item b) in 12.14.7.3.2 of IEEE Std 802.1Q-2022";
    
                      }
                    }  // case dest-ucast-mac-address
    
                    case dest-mcast-class1-mac-address {
                      description
                        "The target multicast Class 1 MAC address field to be
    transmitted.";
                      leaf lbm-dest-mcast-class1-mac-address {
                        type cfm-types:multicast-class1-mac-address-type;
                        description
                          "The target multicast Class 1 MAC address field to be
    transmitted";
                      }
                    }  // case dest-mcast-class1-mac-address
    
                    case dest-mep-id {
                      description
                        "The identifier of a remote MEP in the same MA to which the
    LBM is to be sent.";
                      leaf lbm-dest-mep-id {
                        type cfm-types:mep-id-type;
                        description
                          "The identifier of a remote MEP in the same MA to which the
    LBM is to be sent.";
                        reference
                          "Item b) in 12.14.7.3.2 of IEEE Std 802.1Q-2022";
    
                      }
                    }  // case dest-mep-id
                  }  // choice lbm-destination
    
                  leaf lbm-messages {
                    type uint16 {
                      range "1..1024";
                    }
                    default "1";
                    description
                      "The number of Loopback messages to be transmitted.";
                    reference
                      "Item c) in 12.14.7.3.2 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf lbm-priority {
                    type dot1q-types:priority-type;
                    default "7";
                    description
                      "Priority. 3 bit value to be used in the VLAN tag, if present in
    the transmitted frame. The default value should be priority 7,
    which is the default CCM priority (ccm-ltm-priority).";
                    reference
                      "Item e) in 12.14.7.3.2 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf lbm-drop-eligible {
                    type boolean;
                    default "false";
                    description
                      "Drop eligible bit value to be used in the VLAN tag, if present
    in the transmitted frame. A value 'true' means inserting value
    '1' in the DEI field, while a value 'false' means inserting
    value '0' in the DEI field.";
                    reference
                      "Item e) in 12.14.7.3.2 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf lbm-data-tlv {
                    type cfm-types:lbm-data-tlv-type;
                    description
                      "An arbitrary amount of data to be included in the Data TLV, if
    the Data TLV is selected to be sent.";
                    reference
                      "Item d) in 12.14.7.3.2 of IEEE Std 802.1Q-2022";
    
                  }
                }
    
                output {
                  leaf lbm-request-id {
                    type cfm-types:seq-number-type;
                    mandatory true;
                    description
                      "The Loopback transaction identifier of the first LBM
    (to
    be) sent.";
                    reference
                      "Item b) in 12.14.7.3.3 of IEEE Std 802.1Q-2022";
    
                  }
                }
              }  // rpc transmit-loopback
    
              action transmit-linktrace {
                description
                  "To signal to the MEP to transmit an LTM and to create an
    LTM entry in the MEPs Linktrace Database. Accepting the
    action means the device will transmit LTM messages according
    to the input leafs. The outcome of sending these LTM
    messages will be reported through the list
    'linktrace-reply'.";
                input {
                  choice ltr-target {
                    mandatory true;
                    description
                      "Selects the target address type (which is either MEP identifier
    or MAC address) used for the Linktrace transmissions.";
                    case target-ucast-mac-address {
                      description
                        "The target MAC address field to be transmitted. A unicast MAC
    address.";
                      leaf ltm-target-mac-address {
                        type cfm-types:unicast-mac-address-type;
                        description
                          "The target MAC address field to be transmitted. A unicast
    MAC address.";
                        reference
                          "Item c) in 12.14.7.4.2 of IEEE Std 802.1Q-2022";
    
                      }
                    }  // case target-ucast-mac-address
    
                    case target-mep-id {
                      description
                        "The MEP identifier of another MEP in the same MA.";
                      leaf ltm-target-mep-id {
                        type cfm-types:mep-id-type;
                        description
                          "The MEP identifier of another MEP in the same MA.";
                        reference
                          "Item c) in 12.14.7.4.2 of IEEE Std 802.1Q-2022";
    
                      }
                    }  // case target-mep-id
                  }  // choice ltr-target
    
                  leaf ltm-ttl {
                    type uint8 {
                      range "0..255";
                    }
                    default "64";
                    description
                      "The LTM TTL field. Indicates the number of hops remaining to
    the LTM. Decremented by 1 by each Linktrace Responder that
    handles the LTM. The value returned in the LTR is one less than
    that received in the LTM. If the LTM TTL is 0 or 1, the LTM is
    not forwarded to the next hop, and if 0, no LTR is generated.";
                    reference
                      "Item d) in 12.14.7.4.2, 21.8.4 of IEEE Std 802.1Q-2022";
    
                  }
    
                  leaf ltm-flags {
                    type cfm-types:mep-tx-ltm-flags-type;
                    default "";
                    description
                      "The flags field for the LTMs transmitted by the MEP.";
                    reference
                      "Item b) in 12.14.7.4.2, 20.42.1 of IEEE Std 802.1Q-2022";
    
                  }
                }
    
                output {
                  leaf ltm-transaction-id {
                    type cfm-types:seq-number-type;
                    mandatory true;
                    description
                      "The LTM transaction identifier of the LTM sent. The
    value returned is undefined if and RPC error is
    returned.";
                    reference
                      "Item b) in 12.14.7.4.3 of IEEE Std 802.1Q-2022";
    
                  }
    
                  container ltm-egress-identifier {
                    description
                      "Identifies the MEP Linktrace Initiator that is
    originating this LTM.
    
    The low-order six octets contain a 48-bit IEEE MAC
    address unique to the system in which the MEP Linktrace
    Initiator or Linktrace Responder resides. The high-order
    two octets contain a value sufficient to uniquely
    identify the MEP Linktrace Initiator or Linktrace
    Responder within that system.
    
    For most Bridges, the address of any MAC attached to the
    Bridge will suffice for the low-order six octets, and 0
    for the high-order octets. In some situations, e.g., if
    multiple virtual Bridges utilizing emulated LANs are
    implemented in a single physical system, the high-order
    two octets can be used to differentiate among the
    transmitting entities.
    
    The value returned is undefined if the
    transmit-linktrace input action was not accepted.";
                    reference
                      "Item c) in 12.14.7.4.3 of IEEE Std 802.1Q-2022";
    
                    leaf int {
                      type uint16;
                      mandatory true;
                      description
                        "A value used to uniquely identify the MEP Linktrace Initiator
    or Linktrace Responder within that system.";
                    }
    
                    leaf address {
                      type ieee:mac-address;
                      mandatory true;
                      description
                        "A 48-bit IEEE MAC address unique to the system in which the MEP
    Linktrace Initiator or Linktrace Responder resides.";
                    }
                  }  // container ltm-egress-identifier
                }
              }  // rpc transmit-linktrace
    
              notification mep-fault-alarm {
                description
                  "To alert the Manager to the existence of a fault in a monitored
    MA by issuing a Fault Alarm.";
                reference
                  "Item c) in 12.14.7.7.2 of IEEE Std 802.1Q-2022";
    
                leaf mep-priority-defect {
                  type leafref {
                    path "../../dot1q-cfm:continuity-check/dot1q-cfm:highest-priority-defect";
                  }
                  config false;
                  mandatory true;
                  description
                    "The highest priority defect that has been present since the
    MEPs Fault Notification Generator state machine was last in
    the FNG_RESET state.";
                }
              }  // notification mep-fault-alarm
    
              leaf port {
                type port-ref;
                must
                  "not(/dot1q-cfm:cfm/dot1q-cfm:maintenance-group/cfm-bridge:component-name) or /dot1q-cfm:cfm/dot1q-cfm:maintenance-group/cfm-bridge:component-name = /if:interfaces/if:interface[current() = ./if:name]/dot1q:bridge-port/dot1q:component-name" {
                  description
                    "If there is a Bridge Component, then the component of the
    port (Interface) reference must be the same as the bridge and
    component references by the maintenance association group.";
                }
                mandatory true;
                description
                  "The interface index of the interface (e.g., Bridge Port) to
    which the MEP is attached.";
                reference
                  "Item b) in 12.14.7.1.3 of IEEE Std 802.1Q-2022";
    
              }
    
              leaf primary-vid {
                type leafref {
                  path "../../service-id/vid/vlan-id";
                }
                description
                  "An integer indicating the Primary VID of the MEP. It is always
    one of the VIDs assigned to the MEPs MA. If not present, then
    indicates that either the Primary VID is that of the MEPs MA, or
    that the MEPs MA is associated with no VID.";
                reference
                  "Item d) in 12.14.7.1.3 of IEEE Std 802.1Q-2022";
    
              }
            }  // list mep
    
            leaf bridge-id {
              type bridge-ref;
              description
                "The reference to the IEEE 802.1Q Bridge associated with the CFM
    objects.";
            }
    
            leaf component-name {
              when "../bridge-id";
              type leafref {
                path "/dot1q:bridges/dot1q:bridge[dot1q:name = current()/../cfm-bridge:bridge-id]/dot1q:component/dot1q:name";
              }
              mandatory true;
              description
                "A reference to the maintenance association component within the
    provided maintenance domain and maintenance association values.";
            }
    
            container service-id {
              description
                "The service identifier grouping.";
              choice service-id {
                description
                  "The type of service identifier.";
                list vid {
                  key "vlan-id";
                  description
                    "A list of VIDs associated with any MHF on the VID, always
    including that VID. The first VID is the MA's primary VID.
    List is empty if no primary VID specified";
                  leaf vlan-id {
                    type dot1q-types:vlanid;
                    description
                      "The 12-bit VLAN identifier.";
                  }
                }  // list vid
                leaf isid {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "24-bit I-SID identifier.";
                }
                leaf tesid {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "The tesid is used as a service selector for MAs that are
    present in Bridges that implement PBB-TE functionality.";
                }
                leaf segid {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "The segid is used as a service selector for MAs that are
    present in Bridges that implement IPS functionality.";
                }
                leaf path-tesid {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "The path-tesid is used as a service selector for SPBM path
    MAs.";
                }
                leaf group-isid {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "The group-isid is used as a service selector for SPBM group
    MAs.";
                }
              }  // choice service-id
            }  // container service-id
          }  // list maintenance-group
    
          list cfm-stack {
            key "port service-selector service-id md-level direction";
            config false;
            description
              "The CFM Stack contains information about the Maintenance Points
    configured on a particular Bridge Port (or Aggregation Port). It
    contains all CFM Stack specific related configuration and
    operational data.
    
    Upon a restart of the system, the system SHALL, if necessary,
    change the value of this variable, and rearrange the cfm-stack,
    so that it indexes the entry in the interface table with the
    same value of interface-ref that it indexed before the system
    restart. If no such entry exists, then the system SHALL delete
    all entries in the cfm-stack with the interface index.";
            leaf port {
              type port-ref;
              description
                "An interface on which maintenance points might be configured.
    This object represents the Bridge Port or Aggregation Port on
    which MEPs or MHFs might be configured.";
              reference
                "Item a) in 12.14.2.1.2 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf md-level {
              type cfm-types:md-level-type;
              description
                "The MD level of the maintenance point";
              reference
                "Item b) in 12.14.2.1.2  of IEEE Std 802.1Q-2022";
    
            }
    
            leaf direction {
              type cfm-types:mp-direction-type;
              description
                "The direction in which the maintenance point faces on the
    Bridge Port.";
              reference
                "Item c) in 12.14.2.1.2 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf service-selector {
              type cfm-types:service-selector-type;
              description
                "The type of the service selector";
            }
    
            leaf service-id {
              type cfm-types:service-selector-value-type;
              description
                "A VID, I-SID, Traffic Engineering service instance Identifier
    (TE-SID), or Segment Identifier (SEG-ID) associated with an
    MP, or 0, in the case that the MP is associated with no VID,
    I-SID, TE-SID, or SEG-ID.";
              reference
                "Item d) in 12.14.2.1.2 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf maintenance-group-id {
              when
                "../maintenance-point = "mep"" {
                description
                  "This should only exist if the configured maintenance point
    is a MEP (and not a MHF).";
              }
              type leafref {
                path "/dot1q-cfm:cfm/dot1q-cfm:maintenance-group/dot1q-cfm:maintenance-group-id";
              }
              mandatory true;
              description
                "The maintenance group that the MEP is associated with. If the
    Maintenance Point is a MHF created due to an entry in the
    default-md-levels list, it has no associated maintenance
    group, and therefore this leaf is not present.";
            }
    
            leaf mep-id {
              when
                "../maintenance-point = "mep"" {
                description
                  "This should only exist if the configured maintenance-point
    is a MEP.";
              }
              type leafref {
                path "/dot1q-cfm:cfm/dot1q-cfm:maintenance-group[dot1q-cfm:maintenance-group-id = current()/../maintenance-group-id]/dot1q-cfm:mep/dot1q-cfm:mep-id";
              }
              mandatory true;
              description
                "The MEP identifier if a MEP is configured. Does not exist if
    the maintenance point is a MHF.";
              reference
                "Item d) in 12.14.2.1.3 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf md-id {
              when
                "../maintenance-point != "mep"" {
                description
                  "This should only exist if the configured maintenance point
    is a MHF (and not a MEP).";
              }
              type leafref {
                path "/dot1q-cfm:cfm/dot1q-cfm:maintenance-domain/dot1q-cfm:md-id";
              }
              description
                "The maintenance domain that the MHF is associated with. If
    the MHF is created due to an entry in the default-md-levels
    list, it has no associated maintenance domain, and therefore
    this leaf is not present.";
            }
    
            leaf ma-id {
              when
                "../maintenance-point != "mep"" {
                description
                  "This should only exist if the configured maintenance point
    is a MHF (and not a MEP), and it has a Maintenance Domain.";
              }
              type leafref {
                path "/dot1q-cfm:cfm/dot1q-cfm:maintenance-domain[dot1q-cfm:md-id = current()/../md-id]/dot1q-cfm:maintenance-association/dot1q-cfm:ma-id";
              }
              description
                "The maintenance association that the MHF is associated with.
    If the MHF is created due to an entry in the default-md-levels
    list, it has no associated maintenance association, and
    therefore this leaf is not present.";
            }
    
            leaf mac-address {
              type ieee:mac-address;
              mandatory true;
              description
                "The MAC address of the maintenance point.";
              reference
                "Item e) in 12.14.2.1.3 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf maintenance-point {
              type cfm-types:mp-type;
              mandatory true;
              description
                "Indicates the type of maintenance point. That is whether a
    MEP or MHF.";
              reference
                "Item a) in 12.14.2.1.3 of IEEE Std 802.1Q-2022";
    
            }
          }  // list cfm-stack
    
          list default-md-level {
            key "bridge-id component-id service-selector primary-service-id";
            description
              "For each bridge component, the Default MD Level Managed Object
    controls MHF creation for VIDs that are not attached to a
    specific Maintenance Association Managed Object, and Sender ID
    TLV transmission by those MHFs.
    
    For each Bridge Port, and for each VLAN ID whose data can pass
    through that Bridge Port, an entry in this table is used by the
    algorithm in subclause 22.2.3 only if there is no entry in the
    Maintenance Association table defining an MA for the same VLAN
    ID and MD Level as this table's entry, and on which MA an Up MEP
    is defined. If there exists such an MA, that MA's objects are
    used by the algorithm in subclause 22.2.3 in place of this table
    entry objects.
    
    The agent maintains the value of md-status to indicate whether
    this entry is overridden by an MA. When first initialized, the
    agent creates this table automatically with entries for all VLAN
    IDs, with the default values specified for each object. After
    this initialization, the writable objects in this table need to
    be persistent upon reboot or restart of a device.";
            leaf bridge-id {
              type bridge-ref;
              description
                "The reference to the IEEE 802.1Q Bridge associated with the
    CFM objects.";
            }
    
            leaf component-id {
              type leafref {
                path "/dot1q:bridges/dot1q:bridge[dot1q:name = current()/../bridge-id]/dot1q:component/dot1q:name";
              }
              description
                "The Bridge component within the system to which the
    information in this entry applies. If the system is not a
    Bridge, or if only one component is present in the Bridge,
    then this variable (index) MUST be equal to 1.";
              reference
                "12.3l of IEEE Std 802.1Q-2022";
    
            }
    
            leaf service-selector {
              type cfm-types:service-selector-type;
              description
                "The type of the service selector";
            }
    
            leaf primary-service-id {
              type cfm-types:service-selector-value-type;
              description
                "A vid or isid in an I or B component.";
              reference
                "Item a) in 12.14.3.1.2 of IEEE Std 802.1Q-2022";
    
            }
    
            container associated-service-ids {
              description
                "A list of VIDs associated with any MHF on the VID, always
    including that VID, or the Backbone-SID of the B-component or
    VIP-SID of the I-component associated with any MHF on the
    I-SID. The first VID is the MAs Primary VID.
    
    List is empty if no primary VID specified.";
              reference
                "Item a) in 12.14.3.1.3 of IEEE Std 802.1Q-2022";
    
              choice service-id {
                description
                  "The type of service identifier.";
                list vid {
                  key "vlan-id";
                  description
                    "A list of VIDs associated with any MHF on the VID, always
    including that VID. The first VID is the MA's primary VID.
    List is empty if no primary VID specified";
                  leaf vlan-id {
                    type dot1q-types:vlanid;
                    description
                      "The 12-bit VLAN identifier.";
                  }
                }  // list vid
                leaf isid {
                  type uint32 {
                    range "1..16777215";
                  }
                  description
                    "24-bit I-SID identifier.";
                }
                leaf tesid {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "The tesid is used as a service selector for MAs that are
    present in Bridges that implement PBB-TE functionality.";
                }
                leaf segid {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "The segid is used as a service selector for MAs that are
    present in Bridges that implement IPS functionality.";
                }
                leaf path-tesid {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "The path-tesid is used as a service selector for SPBM path
    MAs.";
                }
                leaf group-isid {
                  type uint32 {
                    range "1..4294967295";
                  }
                  description
                    "The group-isid is used as a service selector for SPBM group
    MAs.";
                }
              }  // choice service-id
            }  // container associated-service-ids
    
            leaf md-status {
              type boolean;
              config false;
              mandatory true;
              description
                "A Boolean value indicating whether this entry is in effect or
    has been overridden by the existence of a Maintenance
    Association managed object associated with the same VID or
    I-SID of I- or B-components and MD Level, and on which is
    configured an Up MEP. True if this Maintenance Domain managed
    object is in effect.";
              reference
                "Item b) in 12.14.3.1.3 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf md-level {
              type cfm-types:md-level-type;
              mandatory true;
              description
                "A value indicating the MD Level at which MHFs are to be
    created, and Sender ID TLV transmission by those MHFs is to be
    controlled, for the VLAN to which this entry's objects apply.";
              reference
                "Item c) in 12.14.3.1.3, Item b) in 12.14.3.2.2 of IEEE Std
                802.1Q-2022";
    
            }
    
            leaf mhf-creation {
              type cfm-types:mhf-creation-type;
              must ". != "mhf-defer"" {
                description
                  "The value can not be mhf-defer. Must be one of mhf-none,
    mhf-default, or mfh-explicit.";
              }
              default "mhf-none";
              description
                "An enumerated value indicating whether the management entity
    can create MHFs for this VID(s) or I-SID(s) of I- or
    B-components.";
              reference
                "Item d) in 12.14.3.1.3 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf id-permission {
              type cfm-types:sender-id-permission-type;
              must ". != "send-id-defer"" {
                description
                  "The value can not be send-id-defer. Must be one of
    send-id-none, send-id-chassis, send-id-manage,
    send-id-chassis-manage.";
              }
              default "send-id-none";
              description
                "An enumerated value indicating what, if anything, is to be
    included in the Sender ID TLV transmitted by MPs configured in
    the Default Maintenance Domain.";
              reference
                "Item e) in 12.14.3.1.3, Item a) in 12.14.3.2.2 of IEEE Std
                802.1Q-2022";
    
            }
          }  // list default-md-level
    
          list config-error {
            key "port service-selector service-id";
            config false;
            description
              "The CFM Configuration Error List table provides a list of
    Interfaces and VIDs that are incorrectly configured.";
            leaf port {
              type port-ref;
              description
                "The interface index of the interface (i.e., Bridge Port).
    
    Upon a restart of the system, the system SHALL, if necessary,
    change the value of this variable so that it indexes the entry
    in the interface table with the same value of the index that
    it indexed before the system restart. If no such entry exists,
    then the system SHALL delete any entries in config-error-list
    indexed by that interface-ref.";
              reference
                "Item b) in 12.14.4.1.2 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf service-selector {
              type cfm-types:service-selector-type;
              description
                "The type of the service selector";
            }
    
            leaf service-id {
              type cfm-types:service-selector-value-type;
              description
                "A vid or isid in an I or B component.";
              reference
                "Item a) in 12.14.4.1.2 of IEEE Std 802.1Q-2022";
    
            }
    
            leaf error-type {
              type cfm-types:config-error-type;
              mandatory true;
              description
                "vector of Boolean error conditions from 22.2.4.";
              reference
                "Item b) in 12.14.4.1.3 of IEEE Std 802.1Q-2022";
    
            }
          }  // list config-error
        }  // container cfm
      }  // module ieee802-dot1q-cfm
    

© 2023 YumaWorks, Inc. All rights reserved.