module tapi-eth {
    namespace "urn:onf:otcc:yang:tapi-eth";
    prefix tapi-eth;
    import tapi-common {
        prefix tapi-common;
    }
    import tapi-topology {
        prefix tapi-topology;
    }
    import tapi-connectivity {
        prefix tapi-connectivity;
    }
    import tapi-oam {
        prefix tapi-oam;
    }
    organization "ONF OTCC (Open Transport Configuration & Control) Project";
    contact "
         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
         Project List: <mailto:transport-api@opennetworking.org>
         Editor: Karthik Sethuraman
                 <mailto:karthik.sethuraman@necam.com>";
    description "This module contains TAPI ETH Model definitions.
        Source: TapiEth.uml
        - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
        - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
          <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
          and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
          <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
        - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
          As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
        - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
          The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
          YANG models included in this release may not be backward compatible with previous TAPI releases.
        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
        License: This module is distributed under the Apache License 2.0";
    revision 2018-12-10 {
        description "ONF Transport API version 2.1.1.
                   Changes included in this TAPI release (v2.1.1) are listed in
                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
    }
    revision 2018-10-16 {
        description "ONF Transport API version 2.1.0.
                   Changes included in this TAPI release (v2.1.0) are listed in
                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
    }
    revision 2018-03-07 {
        description "ONF Transport API version 2.0.2
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
    }
    revision 2018-02-16 {
        description "ONF Transport API version 2.0.1
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
    }
    revision 2018-01-02 {
        description "ONF Transport API version 2.0.0
        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
    }
    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:cep-list/tapi-connectivity:connection-end-point" {
        container eth-connection-end-point-spec {
            uses eth-connection-end-point-spec;
            description "Augments the base LayerProtocol information in ConnectionEndPoint with ETH-specific information";
        }
        description "Augments the base LayerProtocol information in ConnectionEndPoint with ETH-specific information";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {
        container eth-loopback-job {
            uses eth-loopback-job;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg" {
        container eth-meg-spec {
            uses eth-meg-spec;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mep" {
        container eth-mep-spec {
            uses eth-mep-spec;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:meg/tapi-oam:mip" {
        container eth-mip-spec {
            uses eth-mip-spec;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {
        container eth-pro-active-2way-measurement-job {
            uses eth-pro-active-2way-measurement-job;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {
        container eth-link-trace-job {
            uses eth-link-trace-job;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {
        container eth-test-job {
            uses eth-test-job;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {
        container eth-pro-active-1way-measurement-job {
            uses eth-pro-active-1way-measurement-job;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-pro-active-dm-performance-data {
            uses eth-pro-active-dm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {
        container eth-pro-active-dm-performance-data {
            uses eth-pro-active-dm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-pro-active-lm-performance-data {
            uses eth-pro-active-lm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {
        container eth-pro-active-lm-performance-data {
            uses eth-pro-active-lm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-on-demand-dm-performance-data {
            uses eth-on-demand-dm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-on-demand-1-lm-performance-data {
            uses eth-on-demand-1-lm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-on-demand-1-dm-performance-data {
            uses eth-on-demand-1-dm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-pro-active-1-dm-performance-data {
            uses eth-pro-active-1-dm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {
        container eth-pro-active-1-dm-performance-data {
            uses eth-pro-active-1-dm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-pro-active-1-lm-performance-data {
            uses eth-pro-active-1-lm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {
        container eth-pro-active-1-lm-performance-data {
            uses eth-pro-active-1-lm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {
        container eth-on-demand-1way-measurement-job {
            uses eth-on-demand-1way-measurement-job;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job" {
        container eth-on-demand-2way-measurement-job {
            uses eth-on-demand-2way-measurement-job;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {
        container eth-on-demand-1-dm-performance-data {
            uses eth-on-demand-1-dm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {
        container eth-on-demand-1-lm-performance-data {
            uses eth-on-demand-1-lm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {
        container eth-on-demand-dm-performance-data {
            uses eth-on-demand-dm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-on-demand-lm-performance-data {
            uses eth-on-demand-lm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data/tapi-oam:pm-history-data" {
        container eth-on-demand-lm-performance-data {
            uses eth-on-demand-lm-performance-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data" {
        container eth-1-dm-threshold-data {
            uses eth-1-dm-threshold-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data" {
        container eth-1-lm-threshold-data {
            uses eth-1-lm-threshold-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data" {
        container eth-dm-threshold-data {
            uses eth-dm-threshold-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-profile/tapi-oam:pm-threshold-data" {
        container eth-lm-threshold-data {
            uses eth-lm-threshold-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-link-trace-result-data {
            uses eth-link-trace-result-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-test-result-data {
            uses eth-test-result-data;
            description "none";
        }
        description "none";
    }
    augment "/tapi-common:context/tapi-oam:oam-context/tapi-oam:oam-job/tapi-oam:pm-current-data" {
        container eth-loopback-result-data {
            uses eth-loopback-result-data;
            description "none";
        }
        description "none";
    }

   /**************************
    * package object-classes
    **************************/
    grouping eth-ctp-pac {
        leaf-list auxiliary-function-position-sequence {
            type uint64;
            description "This attribute indicates the positions (i.e., the relative order) of all the MEP, MIP, and TCS objects which are associated with the CTP.";
        }
        leaf vlan-config {
            type uint64;
            description "This attribute models the ETHx/ETH-m_A_So_MI_Vlan_Config information defined in G.8021.
                range of type : -1, 0, 1..4094";
        }
        leaf csf-rdi-fdi-enable {
            type boolean;
            description "This attribute models the MI_CSFrdifdiEnable information defined in G.8021.";
        }
        leaf csf-report {
            type boolean;
            description "This attribute models the MI_CSF_Reported information defined in G.8021.
                range of type : true, false";
        }
        leaf-list filter-config-snk {
            type mac-address;
            description "This attribute models the FilteConfig MI defined in 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:
                01-80-C2-00-00-10,
                01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and
                01-80-C2-00-00-20 to 01-80-C2-00-00-2F.
                The filter action is Pass or Block.
                If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action.
                If none of the above addresses match, the ETH_CI_D is passed.";
        }
        leaf mac-length {
            type uint64;
            default "2000";
            description "This attribute models the MAC_Lenght MI defined in 8.6/G.8021 for the MAC Length Check process. It indicates the allowed maximum frame length in bytes.
                range of type : 1518, 1522, 2000";
        }
        container filter-config {
            uses control-frame-filter;
            description "This attribute models the FilterConfig MI defined in section 8.3/G.8021. It indicates the configured filter action for each of the 33 group MAC addresses for control frames. The 33 MAC addresses are:
                - All bridges address: 01-80-C2-00-00-10,
                - Reserved addresses: 01-80-C2-00-00-00 to 01-80-C2-00-00-0F,
                - GARP Application addresses: 01-80-C2-00-00-20 to 01-80-C2-00-00-2F.
                The filter action is Pass or Block.
                If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action.
                If none of the above addresses match, the ETH_CI_D is passed.";
        }
        leaf is-ssf-reported {
            type boolean;
            description "This attribute provisions whether the SSF defect should be reported as fault cause or not.
                It models the ETH-LAG_FT_Sk_MI_SSF_Reported defined in G.8021.";
        }
        leaf pll-thr {
            type uint64;
            description "This attribute provisions the threshold for the number of active ports. If the number of active ports is more than zero but less than the provisioned threshold, a cPLL (Partial Link Loss) is raised. See section 9.7.1.2 of G.8021.
                range of type : 0..number of ports";
        }
        leaf actor-oper-key {
            type uint64;
            config false;
            description "See 802.1AX:
                The current operational value of the Key for the Aggregator. The administrative Key value may differ from the operational Key value for the reasons discussed in 5.6.2.
                The meaning of particular Key values is of local significance.
                range of type : 16 bit";
        }
        leaf actor-system-id {
            type mac-address;
            description "See 802.1AX:
                A MAC address used as a unique identifier for the System that contains this Aggregator.";
        }
        leaf actor-system-priority {
            type uint64;
            description "See 802.1AX:
                Indicating the priority associated with the Actors System ID.
                range of type : 2-octet";
        }
        leaf collector-max-delay {
            type uint64;
            description "See 802.1AX:
                The value of this attribute defines the maximum delay, in tens of microseconds, that may be imposed by the Frame Collector between receiving a frame from an Aggregator Parser, and either delivering the frame to its MAC Client or discarding the frame (see IEEE 802.1AX clause 5.2.3.1.1).
                range of type : 16-bit";
        }
        leaf data-rate {
            type uint64;
            config false;
            description "See 802.1AX:
                The current data rate, in bits per second, of the aggregate link. The value is calculated as N times the data rate of a single link in the aggregation, where N is the number of active links.";
        }
        leaf partner-oper-key {
            type uint64;
            config false;
            description "See 802.1AX:
                The current operational value of the Key for the Aggregators current protocol Partner. If the aggregation is manually configured, this Key value will be a value assigned by the local System.
                range of type : 16-bit";
        }
        leaf partner-system-id {
            type mac-address;
            config false;
            description "See 802.1AX:
                A MAC address consisting of the unique identifier for the current protocol Partner of this Aggregator. A value of zero indicates that there is no known Partner. If the aggregation is manually configured, this System ID value will be a value assigned by the local System.";
        }
        leaf partner-system-priority {
            type uint64;
            config false;
            description "See 802.1AX:
                Indicates the priority associated with the Partners System ID. If the aggregation is manually configured, this System Priority value will be a value assigned by the local System.
                range of type : 2-octet";
        }
        leaf csf-config {
            type csf-config;
            description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.
                range of type : true, false";
        }
        container traffic-shaping {
            uses traffic-shaping-pac;
            description "none";
        }
        container traffic-conditioning {
            uses traffic-conditioning-pac;
            description "none";
        }
        description "none";
    }
    grouping eth-connection-end-point-spec {
        container ety-term {
            uses ety-termination-pac;
            description "none";
        }
        container eth-term {
            uses eth-termination-pac;
            description "none";
        }
        container eth-ctp {
            uses eth-ctp-pac;
            description "none";
        }
        description "none";
    }
    grouping eth-termination-pac {
        container priority-regenerate {
            uses priority-mapping;
            description "This attribute models the ETHx/ETH-m _A_Sk_MI_P_Regenerate information defined in G.8021.";
        }
        leaf ether-type {
            type vlan-type;
            description "This attribute models the ETHx/ETH-m _A_Sk_MI_Etype information defined in G.8021.";
        }
        leaf-list filter-config-1 {
            type mac-address;
            description "This attribute models the ETHx/ETH-m_A_Sk_MI_Filter_Config information defined in G.8021.
                It indicates the configured filter action for each of the 33 group MAC addresses for control frames.
                The 33 MAC addresses are:
                01-80-C2-00-00-10,
                01-80-C2-00-00-00 to 01-80-C2-00-00-0F, and
                01-80-C2-00-00-20 to 01-80-C2-00-00-2F.
                The filter action is Pass or Block.
                If the destination address of the incoming ETH_CI_D matches one of the above addresses, the filter process shall perform the corresponding configured filter action.
                If none of the above addresses match, the ETH_CI_D is passed.
                range of type : MacAddress:
                01-80-C2-00-00-10,
                01-80-C2-00-00-00 to
                01-80-C2-00-00-0F, and
                01-80-C2-00-00-20 to
                01-80-C2-00-00-2F;
                ActionEnum:
                PASS, BLOCK";
        }
        leaf frametype-config {
            type frame-type;
            description "This attribute models the ETHx/ETH-m_A_Sk_MI_Frametype_Config information defined in G.8021.
                range of type : see Enumeration";
        }
        leaf port-vid {
            type vid;
            default "1";
            description "This attribute models the ETHx/ETH-m _A_Sk_MI_PVID information defined in G.8021.";
        }
        leaf priority-code-point-config {
            type pcp-coding;
            description "This attribute models the ETHx/ETH-m _A_Sk_MI_PCP_Config information defined in G.8021.
                range of type : see Enumeration";
        }
        description "This object class models the Ethernet Flow Termination function located at a layer boundary.";
    }
    grouping ety-termination-pac {
        leaf is-fts-enabled {
            type boolean;
            description "This attribute indicates whether Forced Transmitter Shutdown (FTS) is enabled or not. It models the ETYn_TT_So_MI_FTSEnable information.";
        }
        leaf is-tx-pause-enabled {
            type boolean;
            description "This attribute identifies whether the Transmit Pause process is enabled or not. It models the MI_TxPauseEnable defined in G.8021.";
        }
        leaf phy-type {
            type ety-phy-type;
            config false;
            description "This attribute identifies the PHY type of the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.2.";
        }
        leaf-list phy-type-list {
            type ety-phy-type;
            config false;
            description "This attribute identifies the possible PHY types that could be supported at the ETY trail termination. See IEEE 802.3 clause 30.3.2.1.3.";
        }
        description "none";
    }
    grouping traffic-conditioning-pac {
        list prio-config-list {
            key 'queue-id';
            config false;
            uses priority-configuration;
            description "This attribute indicates the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";
        }
        list cond-config-list {
            key 'queue-id';
            config false;
            uses traffic-conditioning-configuration;
            description "This attribute indicates for the conditioner process the conditioning parameters:
                - Queue ID: Indicates the Queue ID
                - Committed Information Rate (CIR): number of bits per second
                - Committed Burst Size (CBS): number of bytes
                - Excess Information Rate (EIR): number of bits per second
                - Excess Burst Size (EBS): number of bytes
                - Coupling flag (CF): 0 or 1
                - Color mode (CM): color-blind and color-aware.";
        }
        leaf codirectional {
            type boolean;
            config false;
            description "This attribute indicates the direction of the conditioner. The value of true means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the sink part of the containing CTP. The value of false means that the conditioner (modeled as a TCS Sink according to G.8021) is associated with the source part of the containing CTP.";
        }
        description "This object class models the ETH traffic conditioning function as defined in G.8021.
            Basic attributes: codirectional, condConfigList, prioConfigList";
    }
    grouping traffic-shaping-pac {
        list prio-config-list {
            key 'queue-id';
            config false;
            uses priority-configuration;
            description "This attribute configures the Priority Splitter function for the mapping of the Ethernet frame priority (ETH_CI_P) values to the output queue.";
        }
        list queue-config-list {
            key 'queue-id';
            config false;
            uses queue-configuration;
            description "This attribute configures the Queue depth and Dropping threshold parameters of the Queue process. The Queue depth sets the maximum size of the queue in bytes. An incoming ETH_CI traffic unit is dropped if there is insufficient space in the queue to hold the whole unit. The Dropping threshold sets the threshold of the queue. If the queue is filled beyond this threshold, incoming ETH_CI traffic units accompanied by the ETH_CI_DE signal set are dropped.";
        }
        leaf sched-config {
            type scheduling-configuration;
            config false;
            description "This attribute configures the scheduler process. The value of this attribute is for further study because it is for further study in G.8021.
                Scheduler is a pointer to a Scheduler object, which is to be defined in the future (because in G.8021, this is FFS).
                Note that the only significance of the GTCS function defined in G.8021 is the use of a common scheduler for shaping. Given that, G.8052 models the common scheduler feature by having a common value for this attribute.";
        }
        leaf codirectional {
            type boolean;
            config false;
            description "This attribute indicates the direction of the shaping function. The value of true means that the shaping (modeled as a TCS Source according to G.8021) is associated with the source part of the containing CTP. The value of false means that the shaping (modeled as a TCS Source according to G.8021) is associated with the sink part of the containing CTP.";
        }
        description "This object class models the ETH traffic shaping function as defined in G.8021.
            Basic attribute: codirectional, prioConfigList, queueConfigList, schedConfig";
    }
    grouping eth-meg-spec {
        leaf client-mel {
            type uint64;
            description "none";
        }
        description "none";
    }
    grouping eth-mep-spec {
        container eth-mep-common {
            uses eth-mep-common;
            description "none";
        }
        container eth-mep-source-pac {
            uses eth-mep-source;
            description "none";
        }
        container eth-mep-sink {
            uses eth-mep-sink;
            description "none";
        }
        description "none";
    }
    grouping eth-mip-spec {
        leaf mip-mac {
            type mac-address;
            config false;
            description "This attribute contains the MAC address of the MIP instance.";
        }
        leaf is-full-mip {
            type boolean;
            config false;
            description "This attribute indicates whether the MIP is a full MIP (true) or a down-half MIP (false).";
        }
        description "none";
    }
    grouping eth-loopback-job {
        container eth-lb-msg {
            uses eth-oam-msg-common-pac;
            description "none";
        }
        leaf number {
            type uint64;
            description "G.8052: This parameter specifies how many LB messages to be sent for the LB_Series process.";
        }
        description "This class represents the Loopback (LB) process (send a series of LB messages carrying a test pattern to a particular MEP). The termination occurs at specified stop time (schedule attribute of OamJob).
            This class models also the 'loopback discover' process, when destinationAddress is multicast.
            When number is greater than 1, then the process is to perform a Loopback (LB) Series process (send a series of N LB messages to a particular MEP/MIP. ";
    }
    grouping eth-mep-common {
        leaf mep-mac {
            type mac-address;
            config false;
            description "This attribute contains the MAC Address of the MEP.";
        }
        leaf is-cc-enabled {
            type boolean;
            description "This attribute models the MI_CC_Enable signal defined in G.8021 and configured as specified in G8051.";
        }
        leaf cc-period {
            type oam-period;
            description "This attribute models the MI_CC_Period signal defined in G.8021 and configured as specified in G8051.
                It is the period at which the CCM message should be sent. 
                Default values are: 3.33 ms for PS, 100 ms for PM, 1 s for FM.";
        }
        leaf cc-priority {
            type uint64 {
                range "0..7";
            }
            default "7";
            description "This attribute models the MI_CC_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the CCM message should be sent.";
        }
        leaf lck-period {
            type oam-period;
            description "This attribute models the MI_LCK_Period signal defined in G.8021 and configured as specified in G8051. It is the frequency at which the LCK messages should be sent.
                range of type : 1s, 1min";
        }
        leaf lck-priority {
            type uint64 {
                range "0..7";
            }
            default "7";
            description "This attribute models the MI_LCK_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the LCK messages should be sent.";
        }
        description "Basic attributes: adminState, clientMel, megIdentifier, mepMac
            Continuity Check Process related attributes: ccPeriod, ccPriority, isCcEnabled
            Lock Process related attributes: lckPeriod, lckPriority
            This object class models the MEP functions that are common to MEP Sink and MEP Source.";
    }
    grouping eth-mep-sink {
        leaf-list dm-1-priority {
            type uint64;
            description "This attribute indicates the list of 1DM priorities for the MepSink.";
        }
        leaf ais-priority {
            type uint64 {
                range "0..7";
            }
            default "7";
            description "This attribute models the MI_AIS_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the AIS messages should be sent.";
        }
        leaf ais-period {
            type oam-period;
            description "This attribute models the MI_AIS_Period signal defined in G.8021 and configured as specified in G8051. It is the frequency at which the AIS messages should be sent.
                range of type : 1s, 1min";
        }
        leaf is-csf-reported {
            type boolean;
            default "true";
            description "This attribute models the MI_CSF_Reported signal defined in G.8021 and configured as specified in G8051. It configures whether the secondary failure CSF should be reported or not.";
        }
        leaf is-csf-rdi-fdi-enabled {
            type boolean;
            default "true";
            description "This attribute models the MI_CSFrdifdiEnable signal defined in G.8021 and configured as specified in G8051.";
        }
        container bandwidth-report {
            config false;
            uses bandwidth-report;
            description "This attribute models the content of the bandwidth report received by the MEP Sink from the peer MEP Source.";
        }
        leaf lm-degm {
            type uint64;
            default "10";
            description "This attribute defines the number of consecutive bad seconds necessary for the 'degraded' detection. See also section 'Degraded signal defect (dDEG)' in G.8021.";
        }
        leaf lm-deg-thr {
            type uint64;
            default "30";
            description "This attribute defines the threshold for declaring a 'bad second'. See also section 'Degraded signal defect (dDEG)' in G.8021.";
        }
        leaf lm-m {
            type uint64 {
                range "2..10";
            }
            default "10";
            description "This attribute defines the number of consecutive good seconds necessary for the clearing of 'degraded'. See also section 'Degraded signal defect (dDEG)' in G.8021.";
        }
        leaf lm-tf-min {
            type uint64;
            description "This attribute defines the necessary number of transmitted frames to enable the detection of 'bad seconds'. See also section 'Degraded signal defect (dDEG)' in G.8021.";
        }
        description "1DM related attribute: 1DmPriority
            AIS Process related attributes: aisPeriod, aisPriority
            Bandwidth notification Process related attribute: bandwidthReport
            Basic attribute: peerMepRefList
            CSF Process related attributes: isCsfRdiFdiEnabled, isCsfReported
            Defect correlation Process related attribute: currentProblemList
            This object class models the MEP sink function. Instance of this object class can be created and contained by ETH CTP or TTP objects.
            It also provides the management of the dual-ended maintenance job, such as test.
            This object contains the configuration parameters for detecting 'degraded signal' (DEG).";
    }
    grouping eth-mep-source {
        leaf aps-priority {
            type uint64 {
                range "0..7";
            }
            default "7";
            description "This attribute specifies the priority of the APS messages.
                See section 8.1.5    APS insert process in G.8021.";
        }
        leaf csf-priority {
            type uint64 {
                range "0..7";
            }
            default "7";
            description "This attribute models the MI_CSF_Pri signal defined in G.8021 and configured as specified in G8051. It is the priority at which the CSF messages should be sent";
        }
        leaf csf-period {
            type oam-period;
            description "This attribute models the MI_CSF_Period signal defined in G.8021 and configured as specified in G8051. It is the period at which the CSF messages should be sent.
                range of type : 1s, 1min";
        }
        leaf csf-config {
            type csf-config;
            description "This attribute models the combination of all CSF related MI signals (MI_CSF_Enable, MI_CSFrdifdi_Enable, MI_CSFdci_Enable) as defined in G.8021.";
        }
        description "APS Process related attribute: apsPriority
            Basic attribute: mepIdentifier
            CSF Process related attributes: csfConfig, csfPeriod, csfPriority
            Link trace related operation: linkTrace
            Loopback related operations: loopbackDiscover, loopbackSeries, loopbackTest, loopbackTestTerminate
            On demand measurement job control related operation: establishOnDemandDualEndedMeasurementJobSource
            Proactive measurement job control related operation: establishProActiveDualEndedMeasurementJobSource
            Test related operations: testInitiatorStart, testInitiatorTerminate
            This object class models the MEP source function. Instance of this object class can be created and contained by ETH CTP or TTP objects.
            It also provides the management of single-ended maintenance jobs, such as loopback test, loopback discover, loopback series, link trace, and dual-ended maintenance job, such as test.";
    }
    grouping eth-link-trace-job {
        container eth-lt-msg {
            uses eth-oam-operation-common-pac;
            description "none";
        }
        leaf time-to-live {
            type uint64;
            description "G.8052: This parameter provides the Time To Live (TTL) parameter of the Link Track protocol.
                The TTL parameter allows the receiver (MIP or MEP) of the LTM frame to determine if the frame can be terminated. TTL is decremented every time the LTM frame is relayed. LTM frame with TTL<=1 is terminated and not relayed.";
        }
        description "This class represents the Link Trace (LT) process for fault localization or for discovering the intermediate MIPs along the link from the MEP Source to a target MEP or MIP. An LTM frame will be sent from the MEP source to the target MEP/MIP.
            The termination occurs at specified stop time (schedule attribute of OamJob).";
    }
    grouping eth-test-job {
        container eth-test-msg {
            uses eth-oam-msg-common-pac;
            description "none";
        }
        description "This class represents the 1-way on-demand in-service or out-of-service diagnostic test. The diagnostic test includes verifying bandwidth throughput, frame loss, bit errors, etc. TST frames are transmitted.
            The termination occurs at specified stop time (schedule attribute of OamJob).";
    }
    grouping eth-on-demand-measurement-job-control-sink {
        leaf responder-mep-id {
            type string;
            description "none";
        }
        leaf source-address {
            type mac-address;
            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";
        }
        leaf priority {
            type uint64;
            default "7";
            description "This attribute contains the priority of the OAM PDU frames.
                range of type : 0, 1, 2, 3, 4, 5, 6, 7";
        }
        leaf test-identifier {
            type uint64;
            description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.
                range of type : 0..(2^32) - 1";
        }
        description "This object class represents an on-demand measurement job controller sink for 1-way measurements. It is created as a result of an establishOnDemandDualEndedMeasurementJobSink() operation. It is deleted either automatically after the measurement job has completed (stop time reached) and the performance data AVC notification has been sent, or by an explicit abortOnDemandMeasurementJob() operation when the measurement job is running.";
    }
    grouping eth-on-demand-measurement-job-control-source {
        leaf controller-mep-id {
            type string;
            description "none";
        }
        leaf oam-pdu-generation-type {
            type oam-pdu-generation-type;
            description "This attribute contains the pattern that is used for the generation of OAM PDUs.";
        }
        leaf destination-address {
            type mac-address;
            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";
        }
        leaf priority {
            type uint64;
            default "7";
            description "This attribute contains the priority of the OAM PDU frames.
                range of type : 0, 1, 2, 3, 4, 5, 6, 7";
        }
        leaf message-period {
            type message-period;
            description "This attribute contains the frequency of the OAM message (PDU) generation within a series.
                Note that the value 0 means that only one OAM message per measurement interval is generated.
                range of type : See corresponding Enum.";
        }
        leaf repetition-period {
            type repetition-period;
            description "This attribute contains the time between the start of two measurement intervals. This IS applicable for the repetitive instance type and MAY be applicable for the repetitive series type.
                Note that a value of 0 means not applicable (NA), which is for the cases of single instance, single series, or repetitive series without extra gap in between the measurement intervals (i.e., also as known as continuous series).";
        }
        leaf measurement-interval {
            type uint64;
            description "This attribute contains the discrete non overlapping periods of time (in seconds) during which measurements are performed (i.e., OAM messages are generated) and reports are gathered at the end of the measurement intervals. Note that the value 0 means a degenerated measurement interval with a single OAM message and the report is sent as immediately as possible.
                range of type : Non-negative";
        }
        leaf test-identifier {
            type uint64;
            description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.
                Note: The attribute is not used in case of LMM/LMR measurement.
                range of type : 0..(2^32) - 1";
        }
        leaf data-tlv-length {
            type uint64;
            description "This parameter provides the size of the optional data TLV.
                Non-negative integer represents the number of bytes for the length of the padding TLV.
                Notes:
                When configuring this parameter one should be aware of the maximum allowed total frame size limitation.
                The attribute is not used in case of 2-way loss measurement.
                range of type : Depends on the allowed MTU size.";
        }
        description "Basic attributes: destinationAddress, priority
            Measurement configuration related attributes: oamPduGenerationType, startTime, stopTime, messagePeriod, repetitionPeriod, measurementInterval
            Optional attributes: dataTlvLength, testIdentifier
            This object class represents an on-demand measurement job controller source for 1-way measurements. It is created as a result of an establishOnDemandDualEndedMeasurementJobSource() operation. It is deleted either automatically after the measurement job has completed (stop time reached), or by an explicit abortOnDemandMeasurementJob() operation while the measurement job is running.";
    }
    grouping eth-pro-active-measurement-job-control-sink {
        leaf responder-mep-id {
            type string;
            description "none";
        }
        leaf is-enabled {
            type boolean;
            default "true";
            description "This attribute identifies the state of the measurement job. If set to TRUE, the MEP performs proactive Performance Measurement.";
        }
        leaf source-address {
            type mac-address;
            description "This attribute contains the MAC address of the peer MEP. See G.8013 for details.";
        }
        leaf test-identifier {
            type uint64;
            description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.
                range of type : 0..(2^32) - 1";
        }
        description "This object class allows the control of the proactive 1-way measurement. It is created as a part of an establishProActiveDualEndedMeasurementJobSink() operation. Lifecycle: A pre-condition of deleting the object is that the Enable attribute should have the value FALSE.";
    }
    grouping eth-pro-active-measurement-job-control-source {
        leaf controller-mep-id {
            type string;
            description "none";
        }
        leaf is-enabled {
            type boolean;
            default "true";
            description "This attribute identifies the state of the measurement job. If set to TRUE, the MEP performs proactive Performance Measurement.";
        }
        leaf destination-address {
            type mac-address;
            description "This attribute provides the Unicast MAC address of the intented destination.";
        }
        leaf priority {
            type uint64 {
                range "0..7";
            }
            default "7";
            description "This attribute contains the priority value on which the MEP performs the measurement. When the measurement is enabled, the MEP should use this value to encode the priority of generated measurement frames. The EMF usese this value to assign the P parameter of the measurement operation.";
        }
        leaf period {
            type oam-period;
            description "This attribute indicates the period (frequency) of the measurement frame transmission.
                range of type : 100ms, 1s, 10s";
        }
        leaf test-identifier {
            type uint64;
            description "This attribute is used to distinguish each measurement session if multiple measurement sessions are simultaneously activated towards a peer MEP including concurrent on-demand and proactive tests. It must be unique at least within the context of any measurement type for the MEG and initiating MEP.
                Note: The attribute is not used in case of 2-way loss measurement.
                range of type : 0..(2^32) - 1";
        }
        leaf data-tlv-length {
            type uint64;
            description "This parameter provides the size of the optional data TLV.
                Non-negative integer represents the number of bytes for the length of the padding TLV.
                Notes:
                When configuring this parameter one should be aware of the maximum allowed total frame size limitation.
                The attribute is not used in case of 2-way loss measurement.
                range of type : Depends on the allowed MTU size.";
        }
        description "This object class represents a proactive measurement job controller source for 1way measurements. It is created as a part of an establishProactiveDualEndedMeasurementJobSource() operation.";
    }
    grouping eth-pro-active-1-dm-performance-data {
        container pro-active-near-end-1-dm-parameters {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the statistical near end performnace parameters.";
        }
        description "This object class represents the PM current data collected in a pro-active delay measurement job (using 1DM).";
    }
    grouping eth-pro-active-1-lm-performance-data {
        container pro-active-near-end-1-lm-parameters {
            uses statistical-lm-performance-parameters;
            description "This attribute contains the statistical near end performnace parameters.";
        }
        description "This object class represents the PM current data collected in a pro-active loss measurement job (using 1SL).";
    }
    grouping eth-pro-active-dm-performance-data {
        container pro-active-bi-dir-dm-parameters {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the statistical bidirectional performnace parameters.";
        }
        container pro-active-far-end-dm-parameters {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the statistical far end performnace parameters.";
        }
        container pro-active-near-end-dm-parameters {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the statistical near end performnace parameters.";
        }
        description "This object class represents the PM current data collected in a pro-active delay measurement job (using DMM/DMR).";
    }
    grouping eth-pro-active-lm-performance-data {
        container pro-active-far-end-lm-parameters {
            uses statistical-lm-performance-parameters;
            description "This attribute contains the statistical far end performnace parameters.";
        }
        container pro-active-near-end-lm-parameters {
            uses statistical-lm-performance-parameters;
            description "This attribute contains the statistical near end performnace parameters.";
        }
        leaf bidirectional-uas {
            type uint64;
            description "This attribute contains the bidirectional UAS (unavailable seconds) detected in the monitoring interval.
                range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";
        }
        description "This object class represents the PM current data collected in a pro-active loss measurement job (using LMM/LMR or SLM/SLR).";
    }
    grouping eth-on-demand-1-dm-performance-data {
        container on-demand-near-end-1-dm-parameters {
            uses on-demand-dm-performance-parameters;
            description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";
        }
        description "none";
    }
    grouping eth-on-demand-1-lm-performance-data {
        container on-demand-near-end-1-lm-parameters {
            uses on-demand-lm-performance-parameters;
            description "This attribute contains the results of an on-demand synthetic loss measurement job in the ingress direction.";
        }
        description "none";
    }
    grouping eth-on-demand-dm-performance-data {
        container on-demand-far-end-dm-parameters {
            uses on-demand-dm-performance-parameters;
            description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";
        }
        container on-demand-near-end-dm-parameters {
            uses on-demand-dm-performance-parameters;
            description "This attribute contains the results of an on-demand frame delay measurement job in the ingress direction.";
        }
        description "none";
    }
    grouping eth-on-demand-lm-performance-data {
        container on-demand-far-end-lm-parameters {
            uses on-demand-lm-performance-parameters;
            description "This attribute contains the results of an on-demand synthetic loss measurement job in the egress direction.";
        }
        container on-demand-near-end-lm-parameters {
            uses on-demand-lm-performance-parameters;
            description "This attribute contains the results of an on-demand synthetic loss measurement job in the ingress direction.";
        }
        description "none";
    }
    grouping eth-pro-active-1way-measurement-job {
        container pro-active-control-1way-source {
            uses eth-pro-active-measurement-job-control-source;
            description "none";
        }
        container pro-active-control-1way-sink {
            uses eth-pro-active-measurement-job-control-sink;
            description "none";
        }
        description "none";
    }
    grouping eth-pro-active-2way-measurement-job {
        container pro-active-control-2way-source {
            uses eth-pro-active-measurement-job-control-source;
            description "none";
        }
        description "none";
    }
    grouping eth-on-demand-2way-measurement-job {
        container on-demand-control-2way-source {
            uses eth-on-demand-measurement-job-control-source;
            description "none";
        }
        description "none";
    }
    grouping eth-on-demand-1way-measurement-job {
        container on-demand-control-1way-source {
            uses eth-on-demand-measurement-job-control-source;
            description "none";
        }
        container on-demand-control-1way-sink {
            uses eth-on-demand-measurement-job-control-sink;
            description "none";
        }
        description "none";
    }
    grouping eth-1-dm-threshold-data {
        container near-end-1-dm-cross-threshold {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the near end cross threshold values of the delay measurements.";
        }
        container near-end-1-dm-clear-threshold {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the near end clear threshold values of the delay measurements.";
        }
        description "This data type contains the threshold values for frame delay related 1-way measurements.";
    }
    grouping eth-1-lm-threshold-data {
        container near-end-1-lm-cross-threshold {
            uses statistical-lm-performance-parameters;
            description "This attribute contains the near end cross threshold values of the loss measurements.";
        }
        container near-end-1-lm-clear-threshold {
            uses statistical-lm-performance-parameters;
            description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the near end clear threshold values of the loss measurements.";
        }
        description "This data type contains the threshold values for frame loss related 1-way measurements.";
    }
    grouping eth-dm-threshold-data {
        container near-end-dm-cross-threshold {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the near end cross threshold values of the delay measurements.";
        }
        container near-end-dm-clear-threshold {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the near end clear threshold values of the delay measurements.";
        }
        container far-end-dm-cross-threshold {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the far end cross threshold values of the delay measurements.";
        }
        container far-end-dm-clear-threshold {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the far end clear threshold values of the delay measurements.";
        }
        container bi-dir-dm-cross-threshold {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the bidirectional cross threshold values of the delay measurements.";
        }
        container bi-dir-dm-clear-threshold {
            uses statistical-dm-performance-parameters;
            description "This attribute contains the bidirectional clear threshold values of the delay measurements.";
        }
        description "This data type contains the threshold values for frame delay related 2-way measurements.";
    }
    grouping eth-lm-threshold-data {
        container near-end-lm-cross-threshold {
            uses statistical-lm-performance-parameters;
            description "This attribute contains the near end cross threshold values of the loss measurements.";
        }
        container near-end-lm-clear-threshold {
            uses statistical-lm-performance-parameters;
            description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the near end clear threshold values of the loss measurements.";
        }
        container far-end-lm-cross-threshold {
            uses statistical-lm-performance-parameters;
            description "This attribute contains the far end cross threshold values of the loss measurements.";
        }
        container far-end-lm-clear-threshold {
            uses statistical-lm-performance-parameters;
            description "This attribute is only valid for frame loss ratio parameters and counter type parameters working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the far end clear threshold values of the loss measurements.";
        }
        leaf bi-dir-lm-uas-cross-threshold {
            type uint64;
            description "This attribute contains the bidirectional cross threshold value of the UAS loss measurement.";
        }
        leaf bi-dir-lm-uas-clear-threshold {
            type uint64;
            description "This attribute is only valid for the UAS parameter working in the 'standing condition method' (see G.7710, section 10.1.7.2: Threshold reporting) and contains the bidirectional clear threshold value of the UAS loss measurement.";
        }
        description "This data type contains the threshold values for frame loss related 2-way measurements.";
    }
    grouping eth-loopback-result-data {
        leaf rec-lbr-frames {
            type uint64;
            config false;
            description "G.8052: This parameter returns the total number of received LBR messages, including the out of order LBR frames.";
        }
        leaf out-of-order-lbr-frames {
            type uint64;
            config false;
            description "G.8052: This parameter returns the number of LBR traffic unites (messages) that were received out of order (OO).";
        }
        leaf sent-lbm-frames {
            type uint64;
            config false;
            description "G.8052: This parameter returns the total number of sent LBM frames.";
        }
        leaf crc-lbr-frames {
            type uint64;
            config false;
            description "G.8052: This parameter returns the number of LBR frames where the CRC in the pattern failed.";
        }
        leaf ber-lbr-frames {
            type uint64;
            config false;
            description "G.8052: This parameter returns the number of LBR frames where there was a bit error in the pattern.";
        }
        leaf-list detected-peer-mep {
            type mac-address;
            config false;
            description "G.8052: This parameter returns the MAC addresses of the discovered peer MEPs of the subject MEP.";
        }
        description "none";
    }
    grouping eth-link-trace-result-data {
        list result-list {
            key 'source-address';
            config false;
            uses link-trace-result;
            description "G.8052: This parameter returns the results of the LT process. It contains a list of the result received from the individual LTR frames.
                The result from the individual LTR frame include the Source Mac Address, the TTL, and TLV.";
        }
        description "none";
    }
    grouping eth-test-result-data {
        leaf sent-tst-frames {
            type uint64;
            config false;
            description "G.8052: This parameter returns the total number of sent TST frames.";
        }
        description "none";
    }
    grouping eth-oam-operation-common-pac {
        leaf destination-address {
            type mac-address;
            description "G.8052: This parameter provides the destination address, i.e., the MAC Address of the target MEP or MIP.";
        }
        leaf priority {
            type uint64;
            default "7";
            description "G.8052: This parameter provides the priority to be used in the LBM frame.";
        }
        description "none";
    }
    grouping eth-oam-msg-common-pac {
        leaf period {
            type oam-period;
            description "G.8052: This parameter provides the periodicity of the TST OAM messages.";
        }
        leaf drop-eligibility {
            type boolean;
            description "G.8052: This parameter provides the eligibility of frames with unicast ETH-TST information to be discarded when congestion conditions are encountered.";
        }
        leaf data-tlv-length {
            type uint64;
            description "G.8052: This parameter provides the length (in number of octet) of the optional Data TLV to be included in the TST frame.";
        }
        leaf test-pattern {
            type uint64;
            description "G.8052: This parameter provides the test pattern to be used in the optional Data TLV.
                Examples of test patterns include pseudo-random bit sequence (PRBS) 2^31-1 as specified in clause 5.8 of [ITU-T O.150], all '0' pattern, etc.
                The following values of pattern types are defined:
                0: 'Null signal without CRC-32'
                1: 'Null signal with CRC-32'
                2: 'PRBS 2^31-1 without CRC-32'
                3: 'PRBS 2^31-1 with CRC-32'.";
        }
        uses eth-oam-operation-common-pac;
        description "none";
    }

   /**************************
    * package type-definitions
    **************************/
    identity ETH_OAM_JOB_TYPE {
        base tapi-oam:OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_1DM {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_1SLM {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_LM_CCM {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_LM_LMM {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_SLM {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_DM {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_LTC {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_LBK {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    identity ETH_OAM_JOB_TYPE_ETH_TEST {
        base ETH_OAM_JOB_TYPE;
        description "none";
    }
    grouping priority-configuration {
        leaf priority {
            type uint64 {
                range "0..7";
            }
            description "none";
        }
        leaf queue-id {
            type uint64 {
                range "1..8";
            }
            description "none";
        }
        description "none";
    }
    grouping queue-configuration {
        leaf queue-id {
            type uint64;
            description "This attribute indicates the queue id.";
        }
        leaf queue-depth {
            type uint64;
            description "This attribute defines the depth of the queue in bytes.";
        }
        leaf queue-threshold {
            type uint64;
            description "This attribute defines the threshold of the queue in bytes.";
        }
        description "none";
    }
    grouping traffic-conditioning-configuration {
        leaf cir {
            type uint64;
            description "This attribute indicates the Committed Information Rate in bits/s.";
        }
        leaf cbs {
            type uint64;
            description "This attribute indicates the Committed Burst Size in bytes.";
        }
        leaf eir {
            type uint64;
            description "This attribute indicates the Excess Information Rate in bits/s.";
        }
        leaf ebs {
            type uint64;
            description "This attribute indicates the Excess Burst Size in bytes.";
        }
        leaf coupling-flag {
            type boolean;
            description "This attribute indicates the coupling flag.";
        }
        leaf colour-mode {
            type colour-mode;
            description "This attribute indicates the colour mode.";
        }
        leaf queue-id {
            type uint64 {
                range "1..8";
            }
            description "This attribute indicates the queue id.";
        }
        description "none";
    }
    typedef mac-address {
        type string;
        description "This primitive data type contains an Ethernet MAC address defined by IEEE 802a. The format of the address consists of 12 hexadecimal characters, grouped in pairs and separated by '-' (e.g., 03-27-AC-75-3E-1D).";
    }
    grouping priority-mapping {
        leaf priority-0 {
            type uint64 {
                range "0..7";
            }
            description "This attribute defines the new priority value for the old priority value 0.";
        }
        leaf priority-1 {
            type uint64 {
                range "0..7";
            }
            default "1";
            description "This attribute defines the new priority value for the old priority value 1.";
        }
        leaf priority-2 {
            type uint64 {
                range "0..7";
            }
            default "2";
            description "This attribute defines the new priority value for the old priority value 2.";
        }
        leaf priority-3 {
            type uint64 {
                range "0..7";
            }
            default "3";
            description "This attribute defines the new priority value for the old priority value 3.";
        }
        leaf priority-4 {
            type uint64 {
                range "0..7";
            }
            default "4";
            description "This attribute defines the new priority value for the old priority value 4.";
        }
        leaf priority-5 {
            type uint64 {
                range "0..7";
            }
            default "5";
            description "This attribute defines the new priority value for the old priority value 5.";
        }
        leaf priority-6 {
            type uint64 {
                range "0..7";
            }
            default "6";
            description "This attribute defines the new priority value for the old priority value 6.";
        }
        leaf priority-7 {
            type uint64 {
                range "0..7";
            }
            default "7";
            description "This attribute defines the new priority value for the old priority value 7.";
        }
        description "This data type provides the priority mapping done in the 'P Regenerate' process defined in G.8021.";
    }
    typedef vid {
        type string;
        description "This primitive type models the 12 Bit VLAN identifier of a VLAN tag.";
    }
    typedef modify-cross-connection-data {
        type string;
        description "none";
    }
    grouping address-tuple {
        leaf address {
            type mac-address;
            description "This attribute contains the MAC address of the address tuple.";
        }
        leaf-list port-list {
            type mac-address;
            description "This attribute contains the ports associated to the MAC address in the address tuple.";
        }
        description "This data type contains an address tuple consisting of a MAC address and a corresponding port list.";
    }
    typedef scheduling-configuration {
        type string;
        description "The syntax of this dataType is pending on the specification in G.8021, which is for further study.";
    }
    grouping control-frame-filter {
        leaf c-2-00-00-10 {
            type boolean;
            description "This attribute identifies the 'All LANs Bridge Management Group Address'.";
        }
        leaf c-2-00-00-00 {
            type boolean;
            description "This attribute identifies the STP/RSTP/MSTP protocol address.";
        }
        leaf c-2-00-00-01 {
            type boolean;
            description "This attribute identifies the IEEE MAC-specific Control Protocols group address (PAUSE protocol).";
        }
        leaf c-2-00-00-02 {
            type boolean;
            description "This attribute identifies the IEEE 802.3 Slow_Protocols_Multicast address (LACP/LAMP or Link OAM protocols).";
        }
        leaf c-2-00-00-03 {
            type boolean;
            description "This attribute identifies the Nearest non-TPMR Bridge group address (Port Authentication protocol).";
        }
        leaf c-2-00-00-04 {
            type boolean;
            description "This attribute identifies the IEEE MAC-specific Control Protocols group address.";
        }
        leaf c-2-00-00-05 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-06 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-07 {
            type boolean;
            description "This attribute identifies the Metro Ethernet Forum E-LMI protocol group address.";
        }
        leaf c-2-00-00-08 {
            type boolean;
            description "This attribute identifies the Provider Bridge Group address.";
        }
        leaf c-2-00-00-09 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-0-a {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-0-b {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-0-c {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-0-d {
            type boolean;
            description "This attribute identifies the Provider Bridge MVRP address.";
        }
        leaf c-2-00-00-0-e {
            type boolean;
            description "This attribute identifies the Individual LAN Scope group address, Nearest Bridge group address (LLDP protocol).";
        }
        leaf c-2-00-00-0-f {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-20 {
            type boolean;
            description "This attribute identifies the Customer and Provider Bridge MMRP address.";
        }
        leaf c-2-00-00-21 {
            type boolean;
            description "This attribute identifies the Customer Bridge MVRP address.";
        }
        leaf c-2-00-00-22 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-23 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-24 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-25 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-26 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-27 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-28 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-29 {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-2-a {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-2-b {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-2-c {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-2-d {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-2-e {
            type boolean;
            description "Reserved for future standardization.";
        }
        leaf c-2-00-00-2-f {
            type boolean;
            description "Reserved for future standardization.";
        }
        description "This data type identifies the filter action for each of the 33 group MAC addresses (control frames).
            Value 'false' means block: The frame is discarded by the filter process.
            Value 'true' means pass: The frame is passed unchanged through the filter process.";
    }
    grouping bandwidth-report {
        leaf source-mac-address {
            type mac-address;
            description "The sourceMacAddress is the address from the far end.";
        }
        leaf port-id {
            type uint64;
            description "This attribute returns the far end port identifier.";
        }
        leaf nominal-bandwidth {
            type uint64;
            description "This attribute returns the configured bandwidth";
        }
        leaf current-bandwidth {
            type uint64;
            description "This attribute returns the current bandwidth.";
        }
        description "Data type for the bandwidth report.";
    }
    typedef admin-state {
        type enumeration {
            enum LOCK {
                description "none";
            }
            enum NORMAL {
                description "none";
            }
        }
        description "none";
    }
    typedef colour-mode {
        type enumeration {
            enum COLOUR_BLIND {
                description "none";
            }
            enum COLOUR_AWARE {
                description "none";
            }
        }
        description "none";
    }
    typedef csf-config {
        type enumeration {
            enum DISABLED {
                description "This literal covers the following states of the CSF related MI informations:
                    - MI_CSF_Enable is false
                    - MI_CSFrdifdi_Enable is false
                    - MI_CSFdci_Enable is false.";
            }
            enum ENABLED {
                description "This literal covers the following states of the CSF related MI informations:
                    - MI_CSF_Enable is true
                    - MI_CSFrdifdi_Enable is false
                    - MI_CSFdci_Enable is false.";
            }
            enum ENABLED_WITH_RDI_FDI {
                description "This literal covers the following states of the CSF related MI informations:
                    - MI_CSF_Enable is true
                    - MI_CSFrdifdi_Enable is true
                    - MI_CSFdci_Enable is false.";
            }
            enum ENABLED_WITH_RDI_FDI_DCI {
                description "This literal covers the following states of the CSF related MI informations:
                    - MI_CSF_Enable is true
                    - MI_CSFrdifdi_Enable is true
                    - MI_CSFdci_Enable is true.";
            }
            enum ENABLED_WITH_DCI {
                description "This literal covers the following states of the CSF related MI informations:
                    - MI_CSF_Enable is true
                    - MI_CSFrdifdi_Enable is false
                    - MI_CSFdci_Enable is true.";
            }
        }
        description "none";
    }
    typedef ety-phy-type {
        type enumeration {
            enum OTHER {
                description "none";
            }
            enum UNKNOWN {
                description "none";
            }
            enum NONE {
                description "none";
            }
            enum 2BASE_TL {
                description "none";
            }
            enum 10MBIT_S {
                description "none";
            }
            enum 10PASS_TS {
                description "none";
            }
            enum 100BASE_T4 {
                description "none";
            }
            enum 100BASE_X {
                description "none";
            }
            enum 100BASE_T2 {
                description "none";
            }
            enum 1000BASE_X {
                description "none";
            }
            enum 1000BASE_T {
                description "none";
            }
            enum 10GBASE-X {
                description "none";
            }
            enum 10GBASE_R {
                description "none";
            }
            enum 10GBASE_W {
                description "none";
            }
        }
        description "none";
    }
    typedef frame-type {
        type enumeration {
            enum ADMIT_ONLY_VLAN_TAGGED_FRAMES {
                description "none";
            }
            enum ADMIT_ONLY_UNTAGGED_AND_PRIORITY_TAGGED_FRAMES {
                description "none";
            }
            enum ADMIT_ALL_FRAMES {
                description "none";
            }
        }
        description "none";
    }
    typedef oam-period {
        type enumeration {
            enum 3_33MS {
                description "Default for protection.";
            }
            enum 10MS {
                description "none";
            }
            enum 100MS {
                description "none";
            }
            enum 1S {
                description "none";
            }
            enum 10S {
                description "none";
            }
            enum 1MIN {
                description "none";
            }
            enum 10MIN {
                description "none";
            }
        }
        description "Provides the frequency for the OAM PDU insertion.";
    }
    typedef pcp-coding {
        type enumeration {
            enum 8P0D {
                description "none";
            }
            enum 7P1D {
                description "none";
            }
            enum 6P2D {
                description "none";
            }
            enum 5P3D {
                description "none";
            }
            enum DEI {
                description "This enumeration value means that all priorities should be drop eligible.
                    DEI = Drop Eligibility Indicator";
            }
        }
        description "This enum models the coding of the Priority Code Point as defined in section 'Priority Code Point encoding' of IEEE 802.1Q.";
    }
    typedef vlan-type {
        type enumeration {
            enum C_Tag {
                description "0x8100";
            }
            enum S_Tag {
                description "0x88a8";
            }
            enum I_Tag {
                description "88-e7";
            }
        }
        description "This enumeration contains the Ethertypes defined in IEEE 802.1Q.";
    }
    typedef repetition-period {
        type enumeration {
            enum 1MIN {
                description "none";
            }
            enum 1S {
                description "none";
            }
            enum 10S {
                description "none";
            }
            enum 0 {
                description "none";
            }
        }
        description "This enumeration defines the allowed values for the repetition period in on-demand measurements.
            Note: The value 0 means that the value is not relevant.";
    }
    typedef message-period {
        type enumeration {
            enum 10MS {
                description "none";
            }
            enum 100MS {
                description "none";
            }
            enum 1S {
                description "none";
            }
            enum 10S {
                description "none";
            }
            enum 0 {
                description "none";
            }
        }
        description "This enumeration defines the allowed values for the message period in on-demand measurements.
            Notes:
            The value 10ms is only used in synthetic loss measurements.
            The value 0 means that the value is not relevant.";
    }
    typedef oam-pdu-generation-type {
        type enumeration {
            enum SINGLE_INSTANCE {
                description "none";
            }
            enum REPETITIVE_INSTANCE {
                description "none";
            }
            enum SINGLE_SERIES {
                description "none";
            }
            enum REPETITIVE_SERIES {
                description "none";
            }
        }
        description "This enumeration defines the generation pattern of the on-demand OAM PDUs (messages). ";
    }
    grouping on-demand-dm-performance-parameters {
        leaf number-of-samples {
            type uint64;
            description "This attribute contains the number of received DM frames (successful samples) used for this frame delay measurement.
                range of type : non-negative";
        }
        leaf-list frame-delay-list {
            type uint64;
            description "This attribute contains the frame delays measured in ns (nano second, 1x10e-9 seconds). The multiplicity is defined by the numberOfSamples attribute.";
        }
        leaf-list frame-delay-variation-list {
            type uint64;
            description "This attribute contains the frame delay variations measured in ns (nano second).  The multiplicity is defined by (numberOfSamples - 1, for numberOfSamples > 0).";
        }
        description "This data type contains the results of an on-demand delay measurement job.";
    }
    grouping on-demand-lm-performance-parameters {
        leaf total-transmitted-frames {
            type uint64;
            description "This attribute contains the total number of frames transmitted.";
        }
        leaf total-lost-frames {
            type uint64;
            description "This attribute contains the total number of frames lost.";
        }
        leaf total-frame-loss-ratio {
            type decimal64 {
                fraction-digits 7;
            }
            description "This attribute contains the frame loss ratio (number of lost frames divided by the number of total frames (N_LF / N_TF)).
                The accuracy of the value is for further study.";
        }
        description "This data type contains the results of an on-demand loss measurement job.";
    }
    grouping statistical-dm-performance-parameters {
        leaf minimum-frame-delay {
            type uint64;
            description "This attribute contains the minimum frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";
        }
        leaf average-frame-delay {
            type uint64;
            description "This attribute contains the average frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";
        }
        leaf maximum-frame-delay {
            type uint64;
            description "This attribute contains the maximum frame delay observed over the monitored period. It is measured in units of ns (nano second, 1x10e-9 seconds).";
        }
        leaf minimum-frame-delay-variation {
            type uint64;
            description "This attribute contains the minimum frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";
        }
        leaf average-frame-delay-variation {
            type uint64;
            description "This attribute contains the average frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";
        }
        leaf maximum-frame-delay-variation {
            type uint64;
            description "This attribute contains the maximum frame delay variation measured in units of ns (nano second, 1x10e-9 seconds).";
        }
        description "This data type contains the statistical delay measurement performance parameters.";
    }
    grouping statistical-lm-performance-parameters {
        leaf minimum-frame-loss-ratio {
            type decimal64 {
                fraction-digits 7;
            }
            description "This attribute contains the minimum frame loss ratio calculated over a period of time.
                The accuracy of the value is for further study.";
        }
        leaf average-frame-loss-ratio {
            type decimal64 {
                fraction-digits 7;
            }
            description "This attribute contains the average frame loss ratio calculated over a period of time.
                The accuracy of the value is for further study.";
        }
        leaf maximum-frame-loss-ratio {
            type decimal64 {
                fraction-digits 7;
            }
            description "This attribute contains the maximum frame loss ratio calculated over a period of time.
                The accuracy of the value is for further study.";
        }
        leaf ses {
            type uint64;
            description "This attribute contains the SES detected in the monitoring interval.
                range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";
        }
        leaf uas {
            type uint64;
            description "This attribute contains UAS (unavailable seconds) detected in the monitoring interval.
                range of type : 0..900 for 15min interval or 0..86400 for 24 hr interval.";
        }
        description "This data type contains the statistical loss measurement performance parameters.";
    }
    typedef eth-oam-job-type {
        type identityref {
            base ETH_OAM_JOB_TYPE;
        }
        description "none";
    }
    grouping link-trace-result {
        leaf source-address {
            type mac-address;
            description "G.8052: This attribute contains the source MAC Address of an individual LTR frame result.";
        }
        leaf time-to-live {
            type uint64;
            description "G.8052: This attribute contains the Time To Live (TTL) value of an individual LTR frame result.";
        }
        leaf data-tlv-length {
            type uint64;
            description "G.8052: This attribute contains the length (in number of octets) of the Data TLV of an individual LTR frame result.";
        }
        description "G.8052: This data type contains the result from an individual LTR frame.";
    }
}
