module tapi-eth {
    namespace "urn:onf:params:xml:ns: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 "Open Networking Foundation (ONF) / Open Transport Working Group(OTWG) / Transport API (TAPI) Project";
    contact "
        WG Web: TAPI SDK Project <http://opensourcesdn.org/projects/project-snowmass/>
        WG List: TAPI Discussion list <mailto: transport-api@login.opennetworking.org>,
        WG Chair: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>,
        Editor: Ricard Vilalta <mailto:ricard.vilalta@cttc.es>";
    description "none";
    revision 2017-05-31 {
        description "TAPI SDK 2.0-alpha";
        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
    }
    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";
            }
            uses tapi-eth:traffic-shaping-pac;
            uses tapi-eth:traffic-conditioning-pac;
            description "none";
        }
        grouping eth-connection-end-point-spec {
            uses tapi-eth:eth-termination-pac;
            uses tapi-eth:eth-ctp-pac;
            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-1 {
                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-1 {
                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 {
            uses tapi-eth:ety-termination-pac;
            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.";
        }

}
