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;
    }
    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-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/tapi-topology:node/tapi-topology:owned-node-edge-point" {
        uses eth-node-edge-point-spec;
        description "Augments the base LayerProtocol information in NodeEndPoint with ETH-specific information";
    }
    augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point" {
        uses eth-connection-end-point-spec;
        description "Augments the base LayerProtocol information in ConnectionEndPoint with ETH-specific information";
    }
    /***********************
    * 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 Actor’s 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 Aggregator’s 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 Partner’s 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 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 {
                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 {
                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 {
                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 {
                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-node-edge-point-spec {
            container ety-term {
                uses ety-termination-pac;
                description "none";
            }
            description "none";
        }

    /***********************
    * package type-definitions
    **********************/ 
        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.";
        }

}
