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
        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
        License: This module is distributed under the Apache License 2.0";
    revision 2018-10-16 {
        description "ONF Transport API version 2.1.0.
          - The TAPI YANG models included in this TAPI release (v2.1.0) 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 are not backward compatible with previous TAPI releases.
          - 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.";
    }
}
