Added the yang model of L2 VPN from the MEF site. 91/40291/1
authorDavid Goldberg <gdavid@hpe.com>
Tue, 14 Jun 2016 10:36:32 +0000 (13:36 +0300)
committerDavid Goldberg <gdavid@hpe.com>
Tue, 14 Jun 2016 10:36:32 +0000 (13:36 +0300)
Change-Id: I5c70311bcfad38e69dddf20aa276dcfb08b30b4a
Signed-off-by: David Goldberg <gdavid@hpe.com>
api/src/main/yang/mef-global.yang [new file with mode: 0644]
api/src/main/yang/mef-interfaces.yang [new file with mode: 0644]
api/src/main/yang/mef-services.yang [new file with mode: 0644]
api/src/main/yang/mef-topology.yang [new file with mode: 0644]
api/src/main/yang/mef-types.yang [new file with mode: 0644]

diff --git a/api/src/main/yang/mef-global.yang b/api/src/main/yang/mef-global.yang
new file mode 100644 (file)
index 0000000..947318a
--- /dev/null
@@ -0,0 +1,1503 @@
+module mef-global {\r
+  namespace "http://metroethernetforum.org/ns/yang/mef-global";\r
+  prefix mef-global;\r
+  import ietf-yang-types {\r
+    prefix yang;\r
+  }\r
+  import ietf-inet-types {\r
+    prefix inet;\r
+  }\r
+  import mef-types {\r
+    prefix mef-types;\r
+  }\r
+  organization "Metro Ethernet Forum";\r
+  contact\r
+    "Web URL: http://metroethernetforum.org/\r
+     E-mail:  mibs@metroethernetforum.org\r
+     Postal:  Metro Ethernet Forum\r
+              6033 W. Century Boulevard, Suite 1107\r
+              Los Angeles, CA 90045\r
+              U.S.A.\r
+     Phone:   +1 310-642-2800\r
+     Fax:     +1 310-642-2808";\r
+  description\r
+    "This module defines the shared profiles and related lists\r
+     to be referenced when configuring MEF Services. Service\r
+     Providers are expected to define a set of profiles for\r
+     Service Attributes associated with Bandwidth, L2CP, CoS,\r
+     and so on. These are expected to be slowly changing as\r
+     they reflect the Products offered by the Service Providers\r
+     to their Subscribers.\r
+      \r
+     Reference Overview:\r
+     A number of base documents have been used to create\r
+     the MEF Global YANG Module. The following are the\r
+     abbreviations for the baseline documents:\r
+     [RFC 6991] refers to IETF RFC 6991 'Common YANG Data Types',\r
+     2013-07-15 \r
+     [RFC 6643] refers to IETF RFC 6643 'Translation of Structure\r
+     of Management Information\r
+     Version 2 (SMIv2) MIB Modules to YANG Modules', 2011-11-25 \r
+     [802.1AB] refers to 'Station and Media Access Control\r
+     Connectivity Discovery', IEEE 802.1AB-2009, September 2009\r
+     [802.1q] refers to IEEE 802.1Q-2011 'IEEE Standard for Local\r
+     and metropolitan area networks --Media Access Control (MAC)\r
+     Bridges and Virtual Bridged Local Area Networks, August 2011\r
+     [802-2001] refers to 'IEEE Standard for Local and Metropolitan\r
+     Area Networks: Overview and Architecture', IEEE 802-2001,\r
+     February 2002\r
+     [MEF10.3] refers to MEF 10.3\r
+     'Ethernet Services Attributes Phase 3', October 2013\r
+     [MEF6.2] refers to MEF 6.2\r
+     'EVC Ethernet Services Defintions Phase 3', August 2014\r
+     [MEF40] refers to MEF 40\r
+     'UNI and EVC Definition of Managed Objects', April 2013\r
+     [MEF45] refers to MEF 45 'Multi-CEN L2CP', August 2014\r
+     [MEF7.2] refers to MEF 7.2\r
+     'Carrier Ethernet Management Information Model', April 2013\r
+     [MEF7.3] refers to MEF 7.3\r
+     'Carrier Ethernet Management Information Model',\r
+     Working Draft #1 2015\r
+     [RFC 2737] refers to IETF RFC 2737 'Entity MIB (Version 2)',\r
+     December 1999\r
+     [RFC 2863] refers to IETF RFC 2863 'The Interfaces Group MIB',\r
+     June 2000\r
+     [RFC 3419] refers to IETF RFC 3419\r
+     'Textual Conventions for Transport Addresses', December 2002\r
+     [Y.1731] refers to ITU-T Y.1731\r
+     'OAM functions and mechanisms for Ethernet based networks',\r
+     July 2011\r
+     [Q.840.1] refers to ITU-T Q.840.1\r
+     'Requirements and analysis for NMS-EMS management interface\r
+     of Ethernet over Transport and Metro Ethernet\r
+     Network(EoT/MEN)' March 2007";\r
+  revision 2015-05-26 {\r
+    description\r
+      "Formal Project Review Draft 1.";\r
+    reference "EVC Ethernet Services Definitions YANG Modules\r
+            (MEF XX), TBD";\r
+  }\r
+  container mef-global {\r
+    description\r
+      "MEF Global Profiles";\r
+    grouping bwp-flows-group {\r
+      description\r
+        "Bandwidth Profile Flows Group.";\r
+      list bwp-flow {\r
+        key "bw-profile";\r
+        description\r
+          "Bandwidth Profiles.";\r
+        reference "[MEF10.3] Section 9.14, 12.2.";\r
+        leaf bw-profile {\r
+          type mef-types:identifier45;\r
+          description\r
+            "Bandwidth Profile Identifier.";\r
+          reference "[MEF10.3] Section 9.14, 12.2.";\r
+        }\r
+        leaf user-label {\r
+          type mef-types:identifier45;\r
+          description\r
+            "This attribute is a friendly name for this specific " +\r
+            "Bandwidth Profile.";\r
+        }\r
+        leaf cir {\r
+          type mef-types:bwp-cir-type;\r
+          units "kbits-per-sec";\r
+          default "0";\r
+          description\r
+            "This attribute identifies the Committed Information " +\r
+            "Rate (CIR) in Kilobits per second for one " +\r
+            "direction of an ETH EVC. If the value is 0, then " +\r
+            "no guarantee is assumed.";\r
+        }\r
+        leaf cir-max {\r
+          type mef-types:bwp-cir-type;\r
+          units "kbits-per-sec";\r
+          default "0";\r
+          description\r
+            "This attribute identifies the Maximum Committed " +\r
+            "Information Rate (CIR). This parameter limits the " +\r
+            "rate of tokens added to the committed token bucket. " +\r
+            "If this value is 0, then no limit is assumed.";\r
+        }\r
+        leaf cbs {\r
+          type mef-types:bwp-cbs-type;\r
+          units "bytes";\r
+          default "0";\r
+          description\r
+            "This attribute identifies the Committed Burst Size " +\r
+            "(CBS) in bytes for one direction of an ETH EVC. " +\r
+            "This parameter limits the maximum number of bytes " +\r
+            "available for a burst of Service Frames sent at " +\r
+            "the UNI line rate that will be declared Green " +\r
+            "by the Bandwidth Profile. If this value is 0, " +\r
+            "then no limit is assumed.";\r
+        }\r
+        leaf eir {\r
+          type mef-types:bwp-eir-type;\r
+          units "kbits-per-sec";\r
+          default "0";\r
+          description\r
+            "This attribute identifies the Excess Information " +\r
+            "Rate (EIR) in Kilobits per second for one " +\r
+            "direction of an ETH EVC. This parameter limits the " +\r
+            "average rate in bits per second of Service Frames " +\r
+            "that will be declared Yellow by the Bandwidth " +\r
+            "Profile. If this value is 0, then no limit is assumed.";\r
+        }\r
+        leaf eir-max {\r
+          type mef-types:bwp-eir-type;\r
+          units "kbits-per-sec";\r
+          default "0";\r
+          description\r
+            "This attribute identifies the Maximum Excess " +\r
+            "Information Rate (EIR) in Kilobits per second for " +\r
+            "one direction of an ETH EVC. This parameter " +\r
+            "limits the rate of tokens added to the excess " +\r
+            "token bucket. If this value is 0, then no " +\r
+            "limit is assumed.";\r
+        }\r
+        leaf ebs {\r
+          type mef-types:bwp-ebs-type;\r
+          units "bytes";\r
+          default "0";\r
+          description\r
+            "This attribute identifies the Excess Burst Size " +\r
+            "(EBS) in bytes for one direction of an ETH EVC. " +\r
+            "This parameter limits the maximum number of " +\r
+            "bytes available for a burst of Service Frames " +\r
+            "sent at the UNI line rate that will be " +\r
+            "declared Yellow by the Bandwidth Profile. " +\r
+            "If this value is 0, then no limit is assumed.";\r
+        }\r
+        leaf coupling-enabled {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "The Per Bandwidth Profile Coupling Flag (CF) " +\r
+            "attribute. This parameter determines whether " +\r
+            "or not overflow tokens not used for Service " +\r
+            "Frames declared Green can be used as Yellow tokens.";\r
+          reference "[MEF10.3] Section 12.1 [R149].";\r
+        }\r
+        leaf color-mode {\r
+          type mef-types:bwp-color-mode-type;\r
+          default "color-blind";\r
+          description\r
+            "This attribute describes the color mode (CM) to " +\r
+            "be applied as 'color-blind mode' or " +\r
+            "'color-aware mode'.";\r
+          reference "[MEF10.3] Section 10.3, [R151].";\r
+        }\r
+        leaf coupling-flag {\r
+          type mef-types:bwp-coupling-flag-type;\r
+          default "yellow-eir-only";\r
+          description\r
+            "The optional coupling flag (CF) attribute, " +\r
+            "describes if yellow frames will be admitted " +\r
+            "if unused bandwidth is available. When CF is " +\r
+            "set to \"yellow-eir-only\", the volume of the " +\r
+            "yellow service frames admitted to the network " +\r
+            "cannot exceed EIR. When CF is set " +\r
+            "to \"yellow-eir-plus-cir\", the volume of the " +\r
+            "yellow service frames admitted to the network is " +\r
+            "bounded by CIR + EIR depending on volume of the " +\r
+            "offered green Service Frames. In both cases the " +\r
+            "burst size of the yellow service frames " +\r
+            "admitted to the network is bounded by EBS.";\r
+          reference "[MEF23.1] Section 8.1.";\r
+        }\r
+      }\r
+    }\r
+    container svc-providers {\r
+      presence "Use non-default Service Providers";\r
+      description\r
+        "Global Service Providers List.";\r
+      list svc-provider {\r
+        key "sp-id";\r
+        description\r
+          "Service Provider Identifier.";\r
+        leaf sp-id {\r
+          type mef-types:svc-provider-type;\r
+          description\r
+            "The Service Provider ID identifies a unique SP that " +\r
+            "contains multiple CENs.";\r
+          reference "[MEF10.3] Section 7.";\r
+        }\r
+      }\r
+    }\r
+    container cens {\r
+      presence "Use non-default CEN";\r
+      description\r
+        "Global CENs List.";\r
+      list cen {\r
+        must "(not(/mef-global/svc-providers) and " +\r
+                "not(./sp-id)) or " +\r
+                "(/mef-global/svc-providers and ./sp-id)" {\r
+          error-message "If the Service Providers list has been " +\r
+                "populated, a Service Provider ID must be " +\r
+                "configured for a CEN.";\r
+          description\r
+            "A CEN sees a single Service Provider. This must " +\r
+            "statement is effectively a 'mandatory true' when " +\r
+            "the Global Service Providers list is being used.";\r
+        }\r
+        key "cen-id";\r
+        description\r
+          "List of CENs.";\r
+        leaf cen-id {\r
+          type mef-types:cen-type;\r
+          description\r
+            "The CEN ID identifies a specific Carrier Ethernet " +\r
+            "Network belong to a Service Provider.";\r
+          reference "[MEF10.3] Section 7. The CEN ID must be " +\r
+                "unique for this Service Provider.";\r
+        }\r
+        leaf sp-id {\r
+          when "/mef-global:mef-global/mef-global:svc-providers" {\r
+            description\r
+              "Service Provider Identifier associated with " +\r
+              "this CEN.";\r
+          }\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:" +\r
+                    "svc-providers/mef-global:svc-provider/" +\r
+                    "mef-global:sp-id";\r
+          }\r
+          description\r
+            "The Service Provider ID must be globally unique " +\r
+            "as all CENs and Subscribers must be supported " +\r
+            "by a specific Service Provider(SP). A SP can " +\r
+            "support multiple CENs.";\r
+          reference "[MEF10.3] Section 7.";\r
+        }\r
+      }\r
+    }\r
+    container slss {\r
+      presence "Use non-default SLS";\r
+      description\r
+        "The technical specification of the service level being " +\r
+        "offered by the Service Provider to the Subscriber is " +\r
+        "defined to be the Service Level Specification (SLS).";\r
+      list sls {\r
+        must "(not(/mef-global/svc-providers) and " +\r
+                "not(./sp-id)) or " +\r
+                "(/mef-global/svc-providers and ./sp-id)" {\r
+          error-message "If the Service Providers list has been " +\r
+                "populated, a Service Provider ID must be " +\r
+                "configured for an SLS.";\r
+          description\r
+            "An SLS sees a single Service Provider. This must " +\r
+            "statement is effectively a 'mandatory true' when " +\r
+            "the Global Service Providers list is being used.";\r
+        }\r
+        key "sls-id";\r
+        description\r
+          "Global Service Level Specification(SLS) List.";\r
+        container perf-objs {\r
+          description\r
+            "Performance Objectives for this SLS.";\r
+          leaf pm-time-interval {\r
+            type uint64;\r
+            units "seconds";\r
+            mandatory true;\r
+            description\r
+              "Performance Metric(PM): Time Interval.";\r
+          }\r
+          leaf pm-time-interval-increment {\r
+            when "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-resiliency-performance-hli']) > 0) " +\r
+                    "or (count(../perf-obj" +\r
+                    "[pm-type = " +\r
+                    "'one-way-resiliency-performance-chli']) > 0)" +\r
+                    " or (count(../perf-obj" +\r
+                    "[pm-type = " +\r
+                    "'one-way-availability-performance']) > 0) " +\r
+                    "or (count(../perf-obj[pm-type = " +\r
+                    "'one-way-multiple-evc-group-availability-" +\r
+                    "performance']) > 0) or " +\r
+                    "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-group-availability-" +\r
+                    "performance']) > 0)" {\r
+              description\r
+                "This PM Metric only applies to specific " +\r
+                "Performance Objective Types.";\r
+            }\r
+            type uint64;\r
+            units "ms";\r
+            mandatory true;\r
+            description\r
+              "A time interval much smaller than pm-time-interval.";\r
+          }\r
+          leaf unavail-flr-threshold-pp {\r
+            when "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-resiliency-performance-hli']) > 0) " +\r
+                    "or " +\r
+                    "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-resiliency-performance-chli']) > 0) " +\r
+                    "or " +\r
+                    "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-availability-performance']) > 0) " +\r
+                    "or " +\r
+                    "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-multiple-evc-group-availability-" +\r
+                    "performance']) > 0) or " +\r
+                    "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-group-availability-" +\r
+                    "performance']) > 0)" {\r
+              description\r
+                "This PM Metric only applies to specific " +\r
+                "Performance Objective Types.";\r
+            }\r
+            type mef-types:simple-percent;\r
+            units "percent";\r
+            mandatory true;\r
+            description\r
+              "Unavailability frame loss ratio threshold " +\r
+              "expressed in percentage.";\r
+          }\r
+          leaf consecutive-small-time-intervals {\r
+            when "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-availability-performance']) > 0) or " +\r
+                    "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-multiple-evc-group-availability-" +\r
+                    "performance']) > 0) or " +\r
+                    "(count(../perf-obj[pm-type = " +\r
+                    "'one-way-group-availability-" +\r
+                    "performance']) > 0)" {\r
+              description\r
+                "This PM Metric only applies to specific " +\r
+                "Performance Objective Types.";\r
+            }\r
+            type uint64;\r
+            mandatory true;\r
+            description\r
+              "Number of consecutive small time intervals " +\r
+              "to assess.";\r
+          }\r
+          list perf-obj {\r
+            key "pm-type pm-id";\r
+            unique "pm-type cos-name fd-pp fd-range-pp " +\r
+                    "fd-perf-obj fd-range-perf-obj " +\r
+                    "fd-mean-perf-obj ifdv-pp ifdv-pair-interval " +\r
+                    "ifdv-perf-obj flr-perf-obj avail-pp " +\r
+                    "hli-perf-obj " +\r
+                    "chli-consecutive-small-time-intervals " +\r
+                    "chli-perf-obj min-uni-pairs-avail gp-avail-pp";\r
+            description\r
+              "For any given SLS, performance objectives related " +\r
+              "to the Performance Metrics may or may not be " +\r
+              "specified. No functionally duplicated " +\r
+              "Performance Objectives are allowed.";\r
+            leaf pm-type {\r
+              type mef-types:performance-metric-type;\r
+              description\r
+                "Performance Metric Type.";\r
+              reference "[MEF10.3] Section 8.8.";\r
+            }\r
+            leaf pm-id {\r
+              type mef-types:identifier45;\r
+              description\r
+                "This is a friendly name for specific " +\r
+                "performance profile.";\r
+            }\r
+            leaf cos-name {\r
+              type leafref {\r
+                path "/mef-global:mef-global/profiles/" +\r
+                        "cos-names/cos-name/name";\r
+              }\r
+              mandatory true;\r
+              description\r
+                "CoS Name Identifier.";\r
+            }\r
+            leaf fd-pp {\r
+              when "(../pm-type = 'one-way-frame-delay-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type mef-types:simple-percent;\r
+              units "percent";\r
+              mandatory true;\r
+              description\r
+                "Frame Delay Performance Percentile.";\r
+            }\r
+            leaf fd-range-pp {\r
+              when "(../pm-type = 'one-way-frame-delay-range-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type mef-types:simple-percent;\r
+              units "percent";\r
+              mandatory true;\r
+              description\r
+                "Frame Delay Range Performance Percentile.";\r
+            }\r
+            leaf fd-perf-obj {\r
+              when "(../pm-type = 'one-way-frame-delay-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              units "ms";\r
+              mandatory true;\r
+              description\r
+                "Frame Delay Performance Objective.";\r
+            }\r
+            leaf fd-range-perf-obj {\r
+              when "(../pm-type = 'one-way-frame-delay-range-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              units "ms";\r
+              mandatory true;\r
+              description\r
+                "Frame Delay Range Performance Objective.";\r
+            }\r
+            leaf fd-mean-perf-obj {\r
+              when "(../pm-type = 'one-way-mean-frame-delay-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              units "ms";\r
+              mandatory true;\r
+              description\r
+                "Frame Delay Mean Performance Objective.";\r
+            }\r
+            leaf ifdv-pp {\r
+              when "(../pm-type = 'one-way-inter-frame-delay-" +\r
+                    "variation-performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type mef-types:simple-percent;\r
+              units "percent";\r
+              mandatory true;\r
+              description\r
+                "Inter-Frame Delay Variation Performance " +\r
+                "Percentile.";\r
+            }\r
+            leaf ifdv-pair-interval {\r
+              when "(../pm-type = 'one-way-inter-frame-delay-" +\r
+                    "variation-performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type mef-types:simple-percent;\r
+              units "ms";\r
+              mandatory true;\r
+              description\r
+                "Inter-Frame Delay Variation Performance " +\r
+                "Separation / Pair Interval.";\r
+            }\r
+            leaf ifdv-perf-obj {\r
+              when "(../pm-type = 'one-way-inter-frame-delay-" +\r
+                    "variation-performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              units "ms";\r
+              mandatory true;\r
+              description\r
+                "Inter-Frame Delay Variation Performance Objective.";\r
+            }\r
+            leaf flr-perf-obj {\r
+              when "(../pm-type = 'one-way-frame-loss-ratio-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              units "ms";\r
+              mandatory true;\r
+              description\r
+                "Frame Loss Ratio Performance Objective.";\r
+            }\r
+            leaf avail-pp {\r
+              when "(../pm-type = 'one-way-availability-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type mef-types:simple-percent;\r
+              units "percent";\r
+              mandatory true;\r
+              description\r
+                "Availability Performance Objective expressed " +\r
+                "as a percentage.";\r
+            }\r
+            leaf hli-perf-obj {\r
+              when "(../pm-type = 'one-way-resiliency-" +\r
+                    "performance-hli')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              mandatory true;\r
+              description\r
+                "HLI Performance Objective expressed as an integer.";\r
+            }\r
+            leaf chli-consecutive-small-time-intervals {\r
+              when "(../pm-type = 'one-way-resiliency-" +\r
+                    "performance-chli')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              must "not(../../consecutive-small-time-intervals) " +\r
+                    "or " +\r
+                    "(. < ../../consecutive-small-time-" +\r
+                    "intervals)" {\r
+                error-message "The value of chli-consecutive-" +\r
+                        "small-time-intervals must be less " +\r
+                        "than consecutive-small-time-intervals " +\r
+                        "(where p < n) if both are defined.";\r
+                description\r
+                  "The value of chli-consecutive-small-time-" +\r
+                  "intervals must be less than consecutive-" +\r
+                  "small-time-intervals (where p < n) if " +\r
+                  "both are defined.";\r
+              }\r
+              mandatory true;\r
+              description\r
+                "Number of consecutive small time intervals " +\r
+                "for assessing CHLI.";\r
+              reference "[MEF10.3] Table 10.";\r
+            }\r
+            leaf chli-perf-obj {\r
+              when "(../pm-type = 'one-way-resiliency-" +\r
+                    "performance-chli')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              mandatory true;\r
+              description\r
+                "Consecutive HLI Performance Objective " +\r
+                "expressed as an integer.";\r
+            }\r
+            leaf min-uni-pairs-avail {\r
+              when "(../pm-type = 'one-way-multiple-evc-group-" +\r
+                    "availability-performance') or " +\r
+                    "(../pm-type = 'one-way-group-availability-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type uint64;\r
+              mandatory true;\r
+              description\r
+                "Minimum number of ordered UNI pairs that are " +\r
+                "to be available in the EVC.";\r
+            }\r
+            leaf gp-avail-pp {\r
+              when "(../pm-type = 'one-way-multiple-evc-group-" +\r
+                    "availability-performance') or " +\r
+                    "(../pm-type = 'one-way-group-availability-" +\r
+                    "performance')" {\r
+                description\r
+                  "This PM Metric only applies to specific " +\r
+                  "Performance Objective Types.";\r
+              }\r
+              type mef-types:simple-percent;\r
+              units "percent";\r
+              mandatory true;\r
+              description\r
+                "Group Availability Performance Objective " +\r
+                "expressed as a percentage.";\r
+            }\r
+          }\r
+        }\r
+        leaf sls-id {\r
+          type mef-types:cen-type;\r
+          description\r
+            "The SLS ID identifies a specific Service Level " +\r
+            "Specification offered by a Service Provider.";\r
+          reference "[MEF10.3] Section 8.8. The SLS ID must " +\r
+                "be unique for this Service Provider.";\r
+        }\r
+        leaf sp-id {\r
+          when "/mef-global:mef-global/mef-global:svc-" +\r
+                "providers" {\r
+            description\r
+              "Service Provider Identifier associated " +\r
+              "with this SLS.";\r
+          }\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:" +\r
+                    "svc-providers/mef-global:svc-provider/" +\r
+                    "mef-global:sp-id";\r
+          }\r
+          description\r
+            "The Service Provider ID must be globally unique " +\r
+            "as all Subscriber SLSs must be supported by " +\r
+            "a specific Service Provider(SP). A SP can " +\r
+            "support multiple SLSs.";\r
+          reference "[MEF10.3] Section 7.";\r
+        }\r
+      }\r
+    }\r
+    container subscribers {\r
+      presence "Use non-default Subscribers.";\r
+      description\r
+        "Subscribers List (Global).";\r
+      list subscriber {\r
+        must "(not(/mef-global/svc-providers) and not(./sp-id)) " +\r
+                "or " +\r
+                "(/mef-global/svc-providers and ./sp-id)" {\r
+          error-message "If the Service Providers list has been " +\r
+                "populated, a Service Provider ID must be " +\r
+                "configured for a Subscriber.";\r
+          description\r
+            "A Subscriber sees a single Service Provider. " +\r
+            "This must statement is effectively a " +\r
+            "'mandatory true' when the Global Service " +\r
+            "Providers list is being used.";\r
+        }\r
+        must "(not(/mef-global/cens) and not(./cen-id)) or " +\r
+                "(/mef-global/cens and ./cen-id)" {\r
+          error-message "If the CENs list has been populated, " +\r
+                "a CEN ID must be configured for a Subscriber.";\r
+          description\r
+            "[MEF103] A Subscriber sees a single CEN from a " +\r
+            "SP. This must statement is effectively a " +\r
+            "'mandatory true' when the Global CENs list " +\r
+            "is being used.";\r
+        }\r
+        key "sub-id";\r
+        description\r
+          "Global Subscriber List.";\r
+        leaf sub-id {\r
+          type mef-types:subscriber-type;\r
+          description\r
+            "The Subscriber ID identifies a unique Subscriber to " +\r
+            "this CEN. Note that you can have the same " +\r
+            "Subscriber as part of multiple Service Providers.";\r
+          reference "[MEF10.3] Section 7";\r
+        }\r
+        leaf sp-id {\r
+          when "/mef-global:mef-global/mef-global:svc-providers" {\r
+            description\r
+              "Only configure when the Global Service Providers " +\r
+              "list has been populated.";\r
+          }\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:" +\r
+                    "svc-providers/mef-global:" +\r
+                    "svc-provider/mef-global:sp-id";\r
+          }\r
+          description\r
+            "The Service Provider ID must be globally unique " +\r
+            "as all CENs and Subscribers must be supported by " +\r
+            "a specific Service Provider(SP). A SP can " +\r
+            "support multiple CENs.";\r
+          reference "[MEF10.3] Section 7.";\r
+        }\r
+        leaf cen-id {\r
+          when "/mef-global:mef-global/mef-global:cens" {\r
+            description\r
+              "Only configure when the Global CENs list " +\r
+              "has been populated.";\r
+          }\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:cens/" +\r
+                    "mef-global:cen/mef-global:cen-id";\r
+          }\r
+          description\r
+            "A CEN is defined as a network from a " +\r
+            "Service Provider (SP). ";\r
+          reference "[MEF10.3] Section 7.";\r
+        }\r
+      }\r
+    }\r
+    container profiles {\r
+      presence "Use to confirm whether ANY profiles have " +\r
+            "been configured";\r
+      description\r
+        "Global Profiles.";\r
+      container cos-names {\r
+        description\r
+          "CoS Names (AKA CoS Labels) agreed to between " +\r
+          "the Service Provider and the Subscribers.";\r
+        list cos-name {\r
+          key "name";\r
+          description\r
+            "List of CoS Names.";\r
+          leaf name {\r
+            type mef-types:identifier45;\r
+            description\r
+              "CoS Name.";\r
+          }\r
+        }\r
+      }\r
+      container eec-names {\r
+        description\r
+          "Egress Equivalance Class (EEC) Names agreed to " +\r
+          "between the Service Provider and the Subscribers.";\r
+        list eec-name {\r
+          key "name";\r
+          description\r
+            "List of EEC Names.";\r
+          leaf name {\r
+            type mef-types:identifier45;\r
+            description\r
+              "EEC Name.";\r
+          }\r
+        }\r
+      }\r
+      container ingress-bwp-flows {\r
+        description\r
+          "Ingress Bandwidth Profile Flows.";\r
+        uses bwp-flows-group;\r
+      }\r
+      container egress-bwp-flows {\r
+        description\r
+          "Egress Bandwidth Profile Flows.";\r
+        uses bwp-flows-group;\r
+      }\r
+      container l2cp-cos {\r
+        description\r
+          "Ingress Layer 2 Control Protocol (L2CP) " +\r
+          "Configuration with CoS Names.";\r
+        list l2cp-profile {\r
+          key "id";\r
+          description\r
+            "A list of global profiles for Layer 2 " +\r
+            "Control Processing.";\r
+          reference "[MEF10.3] Section 8.5.";\r
+          container l2cps {\r
+            description\r
+              "Layer 2 Control Protocol (L2CP) Profiles " +\r
+              "for Classes of Service (CoS).";\r
+            list l2cp {\r
+              key "dest-mac-addr peering-proto-name";\r
+              description\r
+                "L2CP Destination MAC Address.";\r
+              reference "[MEF10.3] Section 8.5.";\r
+              leaf dest-mac-addr {\r
+                type yang:mac-address;\r
+                description\r
+                  "The Destination MAC Address for the " +\r
+                  "Layer 2 Control Protocol.";\r
+              }\r
+              leaf peering-proto-name {\r
+                type mef-types:identifier45;\r
+                description\r
+                  "This attribute is a friendly name for " +\r
+                  "the Protocol to be Peered. It is optional.";\r
+              }\r
+              leaf protocol {\r
+                type mef-types:l2cp-peering-protocol-type;\r
+                default "ethertype";\r
+                description\r
+                  "The Protocol is one of Ethertype, LLC, or Other.";\r
+              }\r
+              leaf protocol-id {\r
+                type yang:hex-string;\r
+                description\r
+                  "The Protocol Identifier is the protocol " +\r
+                  "specific value associated with the " +\r
+                  "protocol in a colon separated list of " +\r
+                  "hex values (ie. 88:EE or 82).";\r
+              }\r
+              leaf cos-name {\r
+                type leafref {\r
+                  path "/mef-global:mef-global/profiles/" +\r
+                        "cos-names/cos-name/name";\r
+                }\r
+                description\r
+                  "This attribute identifies the name of " +\r
+                  "a class of service (CoS).";\r
+              }\r
+              leaf handling {\r
+                type mef-types:l2cp-handling-type;\r
+                description\r
+                  "The handling selection indicates whether " +\r
+                  "the L2CP Service Frames identified by " +\r
+                  "this list entry should be passed, " +\r
+                  "discarded, or peered.";\r
+                reference "[MEF45] Section 8.5.";\r
+              }\r
+              leaf-list subtype {\r
+                type yang:hex-string;\r
+                max-elements "255";\r
+                description\r
+                  "L2CP Subtype for this Destination " +\r
+                  "MAC's Protocol ID.";\r
+              }\r
+            }\r
+          }\r
+          leaf id {\r
+            type mef-types:identifier45;\r
+            description\r
+              "The L2CP ID identifies a specific profile for " +\r
+              "Layer 2 Control Processing.";\r
+            reference "[MEF10.3] Section 8.5.";\r
+          }\r
+          leaf user-label {\r
+            type mef-types:identifier45;\r
+            description\r
+              "This attribute is a friendly name for the " +\r
+              "specific L2CP profile.";\r
+          }\r
+        }\r
+      }\r
+      container l2cp-eec {\r
+        description\r
+          "Egress Layer 2 Control Protocol (L2CP) Configuration " +\r
+          "with EEC Names.";\r
+        list l2cp-profile {\r
+          key "id";\r
+          description\r
+            "A list of global profiles for Layer 2 Control " +\r
+            "Processing.";\r
+          reference "[MEF10.3] Section 8.5.";\r
+          container l2cps {\r
+            description\r
+              "Layer 2 Control Protocol (L2CP) Profiles for " +\r
+              "Egress Equivalence Classes.";\r
+            list l2cp {\r
+              key "dest-mac-addr peering-proto-name";\r
+              description\r
+                "L2CP Destination MAC Address.";\r
+              reference "[MEF10.3] Section 8.5.";\r
+              leaf dest-mac-addr {\r
+                type yang:mac-address;\r
+                description\r
+                  "The Destination MAC Address for the " +\r
+                  "Layer 2 Control Protocol.";\r
+              }\r
+              leaf peering-proto-name {\r
+                type mef-types:identifier45;\r
+                description\r
+                  "This attribute is a friendly name for the " +\r
+                  "Protocol to be Peered. It is optional.";\r
+              }\r
+              leaf protocol {\r
+                type mef-types:l2cp-peering-protocol-type;\r
+                default "ethertype";\r
+                description\r
+                  "The Protocol is one of Ethertype, LLC, or Other.";\r
+              }\r
+              leaf protocol-id {\r
+                type yang:hex-string;\r
+                description\r
+                  "The Protocol Identifier is the protocol " +\r
+                  "specific " +\r
+                  "value associated with the protocol in a " +\r
+                  "colon separated list of hex values " +\r
+                  "(ie. 88:EE or 82).";\r
+              }\r
+              leaf eec-name {\r
+                type leafref {\r
+                  path "/mef-global:mef-global/profiles/" +\r
+                        "eec-names/eec-name/name";\r
+                }\r
+                description\r
+                  "This attribute identifies the name of a " +\r
+                  "Egress Equivalence Class (EEC).";\r
+              }\r
+              leaf handling {\r
+                type mef-types:l2cp-handling-type;\r
+                description\r
+                  "The handling selection indicates whether " +\r
+                  "the L2CP Service Frames identified by this " +\r
+                  "list entry should be passed, discarded, " +\r
+                  "or peered.";\r
+                reference "[MEF45] Section 8.5.";\r
+              }\r
+              leaf-list subtype {\r
+                type yang:hex-string;\r
+                max-elements "255";\r
+                description\r
+                  "L2CP Subtype for this Destination MAC's " +\r
+                  "Protocol ID.";\r
+              }\r
+            }\r
+          }\r
+          leaf id {\r
+            type mef-types:identifier45;\r
+            description\r
+              "The L2CP ID identifies a specific profile for " +\r
+              "Layer 2 Control Processing.";\r
+            reference "[MEF10.3] Section 8.5.";\r
+          }\r
+          leaf user-label {\r
+            type mef-types:identifier45;\r
+            description\r
+              "This attribute is a friendly name for the " +\r
+              "specific L2CP profile.";\r
+          }\r
+        }\r
+      }\r
+      container l2cp-peering {\r
+        description\r
+          "Layer 2 Control Protocol (L2CP) Configuration " +\r
+          "for Peering Lists.";\r
+        list l2cp-profile {\r
+          key "id";\r
+          description\r
+            "A list of global profiles for " +\r
+            "Layer 2 Control Processing.";\r
+          reference "[MEF10.3] Section 8.5.";\r
+          container l2cps {\r
+            description\r
+              "Layer 2 Control Protocol (L2CP) Profiles for " +\r
+              "Peering.";\r
+            list l2cp {\r
+              key "dest-mac-addr peering-proto-name";\r
+              description\r
+                "L2CP Destination MAC Address.";\r
+              reference "[MEF10.3] Section 8.5.";\r
+              leaf dest-mac-addr {\r
+                type yang:mac-address;\r
+                description\r
+                  "The Destination MAC Address for the " +\r
+                  "Layer 2 Control Protocol.";\r
+              }\r
+              leaf peering-proto-name {\r
+                type mef-types:identifier45;\r
+                description\r
+                  "This attribute is a friendly name for the " +\r
+                  "Protocol to be Peered. It is optional.";\r
+              }\r
+              leaf protocol {\r
+                type mef-types:l2cp-peering-protocol-type;\r
+                default "ethertype";\r
+                description\r
+                  "The Protocol is one of Ethertype, LLC, or Other.";\r
+              }\r
+              leaf protocol-id {\r
+                type yang:hex-string;\r
+                description\r
+                  "The Protocol Identifier is the protocol " +\r
+                  "specific value associated with the protocol " +\r
+                  "in a colon separated list of hex values " +\r
+                  "(ie. 88:EE or 82).";\r
+              }\r
+              leaf-list subtype {\r
+                type yang:hex-string;\r
+                max-elements "255";\r
+                description\r
+                  "L2CP Subtype for this Destination MAC's " +\r
+                  "Protocol ID.";\r
+              }\r
+            }\r
+          }\r
+          leaf id {\r
+            type mef-types:identifier45;\r
+            description\r
+              "The L2CP ID identifies a specific profile for " +\r
+              "Layer 2 Control Processing.";\r
+            reference "[MEF10.3] Section 8.5.";\r
+          }\r
+          leaf user-label {\r
+            type mef-types:identifier45;\r
+            description\r
+              "This attribute is a friendly name for the " +\r
+              "specific L2CP profile.";\r
+          }\r
+        }\r
+      }\r
+      container elmi {\r
+        description\r
+          "Ethernet Local Management Interface(ELMI).";\r
+        list elmi-profile {\r
+          key "id";\r
+          description\r
+            "Ethernet Local Management Interface(ELMI) Profile ID.";\r
+          reference "[MEF10.3] [R88]. [MEF16].";\r
+          leaf id {\r
+            type mef-types:identifier45;\r
+            description\r
+              "Ethernet Local Management Interface(ELMI) " +\r
+              "Profile ID.";\r
+            reference "[MEF10.3] [R88]. [MEF16].";\r
+          }\r
+          leaf user-label {\r
+            type mef-types:identifier45;\r
+            description\r
+              "This attribute is a friendly name for the " +\r
+              "specific ELMI Category described within this " +\r
+              "profile.";\r
+          }\r
+          leaf polling-counter {\r
+            type mef-types:elmi-polling-counter-type;\r
+            default "360";\r
+            description\r
+              "Polling cycles between Full Status exchanges.";\r
+            reference "[MEF16] Section 5.6.1.";\r
+          }\r
+          leaf status-error-threshold {\r
+            type mef-types:elmi-status-error-threshold-type;\r
+            default "4";\r
+            description\r
+              "The count of consecutive ELMI status polling " +\r
+              "errors before raising an error.";\r
+            reference "[MEF16] Section 5.6.1.";\r
+          }\r
+          leaf polling-timer {\r
+            type mef-types:elmi-polling-timer-type;\r
+            default "10";\r
+            description\r
+              "The timer started after tranmitting a Status " +\r
+              "Enquiry. If the timer expires, record the error " +\r
+              "if a STATUS message not received and resend " +\r
+              "Status Enquiry.";\r
+            reference "[MEF16] Section 5.6.1.";\r
+          }\r
+          leaf polling-verification-timer {\r
+            type mef-types:elmi-polling-verification-timer-type;\r
+            default "15";\r
+            description\r
+              "The type used for a timer started after " +\r
+              "tranmitting a Status Message. If a Status " +\r
+              "Enquiry is recieved before this timer " +\r
+              "expires, record the error.";\r
+            reference "[MEF16] Section 5.6.1.";\r
+          }\r
+        }\r
+      }\r
+      container eec {\r
+        description\r
+          "Egress Equivalence Class (EEC) Profiles.";\r
+        list eec-profile {\r
+          key "id";\r
+          description\r
+            "This attribute identifies the identifier of a " +\r
+            "Egress Equivance Class (EEC) instance.";\r
+          reference "[MEF6.2] Appendix A.";\r
+          leaf id {\r
+            type mef-types:identifier45;\r
+            description\r
+              "This attribute identifies the label of a " +\r
+              "Egress Equivance Class (EEC) instance.";\r
+          }\r
+          choice eec-id {\r
+            description\r
+              "EEC Identifier.";\r
+            case pcp {\r
+              container eec-pcp {\r
+                presence "EEC Mode PCP.";\r
+                description\r
+                  "EEC Mode PCP.";\r
+                leaf default-pcp-eec-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/profiles/" +\r
+                            "eec-names/eec-name/name";\r
+                  }\r
+                  description\r
+                    "Default value for EEC Name for PCP " +\r
+                    "when it has not been explicitly configured.";\r
+                }\r
+                leaf default-pcp-color {\r
+                  type mef-types:cos-color-type;\r
+                  default "green";\r
+                  description\r
+                    "If the EEC ID = pcp, then this value " +\r
+                    "will be used as the default Color when " +\r
+                    "the PCP value does not have an explicitly " +\r
+                    "configured Color.";\r
+                  reference "MEF 10.3 Section 10.3";\r
+                }\r
+                list pcp {\r
+                  key "pcp-value";\r
+                  description\r
+                    "PCP.";\r
+                  leaf pcp-value {\r
+                    type mef-types:ieee8021p-priority-type;\r
+                    description\r
+                      "Use the VLAN Tag IEEE 802.1p Priority " +\r
+                      "Code Point value (0..7) for CoS.";\r
+                    reference "[MEF10.3] Section 10.2.1.";\r
+                  }\r
+                  leaf discard-value {\r
+                    type boolean;\r
+                    default "false";\r
+                    description\r
+                      "Set to True to discard Service Frames " +\r
+                      "that match to this PCP value.";\r
+                  }\r
+                  leaf eec-name {\r
+                    type leafref {\r
+                      path "/mef-global:mef-global/profiles/" +\r
+                            "eec-names/eec-name/name";\r
+                    }\r
+                    description\r
+                      "This attribute identifies the name of a " +\r
+                      "Egress Equivalence Class instance.";\r
+                  }\r
+                  leaf color {\r
+                    type mef-types:cos-color-type;\r
+                    default "green";\r
+                    description\r
+                      "EVC Per UNI: The EEC Color for " +\r
+                      "Service Frames.";\r
+                    reference "[MEF10.3] [R102], [R103]. ";\r
+                  }\r
+                }\r
+              }\r
+            }\r
+            case dscp {\r
+              container eec-dscp {\r
+                presence "EEC Mode DSCP.";\r
+                description\r
+                  "ECC Mode DSCP.";\r
+                leaf default-ipv4-eec-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/profiles/" +\r
+                            "eec-names/eec-name/name";\r
+                  }\r
+                  description\r
+                    "Default value for EEC Name for DSCP IPv4 " +\r
+                    "Packets when it has not been " +\r
+                    "explicitly configured.";\r
+                }\r
+                leaf default-ipv4-color {\r
+                  type mef-types:cos-color-type;\r
+                  default "green";\r
+                  description\r
+                    "If the EEC ID = dscp, then this value will " +\r
+                    "be used as the default Color when the " +\r
+                    "DSCP value for IPv4 does not have an " +\r
+                    "explicitly configured Color.";\r
+                  reference "MEF 10.3 Section 10.3";\r
+                }\r
+                leaf default-ipv6-eec-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/profiles/" +\r
+                            "eec-names/eec-name/name";\r
+                  }\r
+                  description\r
+                    "Default value for EEC Name for DSCP IPv6 " +\r
+                    "Packets when it has not been explicitly " +\r
+                    "configured.";\r
+                }\r
+                leaf default-ipv6-color {\r
+                  type mef-types:cos-color-type;\r
+                  default "green";\r
+                  description\r
+                    "If the EEC ID = dscp, then this value " +\r
+                    "will be used as the default Color " +\r
+                    "when the DSCP value for IPv6 does " +\r
+                    "not have an explicitly configured Color.";\r
+                  reference "MEF 10.3 Section 10.3";\r
+                }\r
+                list ipv4-dscp {\r
+                  key "dscp-value";\r
+                  description\r
+                    "DSCP value for IPv4 Packets.";\r
+                  leaf dscp-value {\r
+                    type inet:dscp;\r
+                    description\r
+                      "Map CoS to IPv4 DSCP values.";\r
+                  }\r
+                  leaf discard-value {\r
+                    type boolean;\r
+                    default "false";\r
+                    description\r
+                      "Set to True to discard Service Frames " +\r
+                      "that match to this DSCP value.";\r
+                  }\r
+                  leaf eec-name {\r
+                    type leafref {\r
+                      path "/mef-global:mef-global/profiles/" +\r
+                            "eec-names/eec-name/name";\r
+                    }\r
+                    description\r
+                      "This attribute identifies the name " +\r
+                      "of a Egress Equivalence Class instance.";\r
+                  }\r
+                  leaf color {\r
+                    type mef-types:cos-color-type;\r
+                    default "green";\r
+                    description\r
+                      "EVC Per UNI: The EEC Color for " +\r
+                      "Service Frames.";\r
+                    reference "[MEF10.3] [R102], [R103]. ";\r
+                  }\r
+                }\r
+                list ipv6-dscp {\r
+                  key "dscp-value";\r
+                  description\r
+                    "DSCP value for IPv6 Packets.";\r
+                  leaf dscp-value {\r
+                    type inet:dscp;\r
+                    description\r
+                      "Map EEC to IPv4 and IPv6 DSCP values.";\r
+                  }\r
+                  leaf discard-value {\r
+                    type boolean;\r
+                    default "false";\r
+                    description\r
+                      "Set to True to discard Service Frames " +\r
+                      "that match to this DSCP value.";\r
+                  }\r
+                  leaf eec-name {\r
+                    type leafref {\r
+                      path "/mef-global:mef-global/profiles/" +\r
+                            "eec-names/eec-name/name";\r
+                    }\r
+                    description\r
+                      "This attribute identifies the name of a " +\r
+                      "Egress Equivalence Class instance.";\r
+                  }\r
+                  leaf color {\r
+                    type mef-types:cos-color-type;\r
+                    default "green";\r
+                    description\r
+                      "EVC Per UNI: The EEC Color for " +\r
+                      "Service Frames.";\r
+                    reference "[MEF10.3] [R102], [R103]. ";\r
+                  }\r
+                }\r
+              }\r
+            }\r
+          }\r
+        }\r
+      }\r
+      container cos {\r
+        description\r
+          "Class of Service (CoS) Profiles.";\r
+        list cos-profile {\r
+          key "id";\r
+          description\r
+            "This attribute identifies the identifier of a " +\r
+            "Class of Service (CoS) instance.";\r
+          reference "[MEF6.2] Appendix A.";\r
+          leaf id {\r
+            type mef-types:identifier45;\r
+            description\r
+              "This attribute identifies the label of a " +\r
+              "Class of Service (CoS) instance.";\r
+          }\r
+          choice cos-id {\r
+            description\r
+              "CoS identifier.";\r
+            case evc {\r
+              container cos-evc {\r
+                presence "EVC ID PCP.";\r
+                description\r
+                  "CoS ID EVC.";\r
+                leaf default-evc-cos-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/profiles/" +\r
+                            "cos-names/cos-name/name";\r
+                  }\r
+                  description\r
+                    "This attribute identifies the name of a " +\r
+                    "Class of Service (CoS) instance.";\r
+                }\r
+                leaf default-evc-color {\r
+                  type mef-types:cos-color-type;\r
+                  default "green";\r
+                  description\r
+                    "If the CoS ID = evc, then all service " +\r
+                    "frames are treated with the same color.";\r
+                  reference "MEF 10.3 Section 10.3";\r
+                }\r
+              }\r
+            }\r
+            case pcp {\r
+              container cos-pcp {\r
+                presence "CoS ID PCP.";\r
+                description\r
+                  "CoS ID PCP.";\r
+                leaf default-pcp-cos-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/profiles/" +\r
+                            "cos-names/cos-name/name";\r
+                  }\r
+                  description\r
+                    "Default value for CoS Name for PCP when it " +\r
+                    "has not been explicitly configured.";\r
+                }\r
+                leaf default-pcp-color {\r
+                  type mef-types:cos-color-type;\r
+                  default "green";\r
+                  description\r
+                    "If the CoS ID = pcp, then this value will " +\r
+                    "be used as the default Color when the PCP " +\r
+                    "value does not have an explicitly " +\r
+                    "configured Color.";\r
+                  reference "MEF 10.3 Section 10.3";\r
+                }\r
+                list pcp {\r
+                  key "pcp-value";\r
+                  description\r
+                    "PCP.";\r
+                  leaf pcp-value {\r
+                    type mef-types:ieee8021p-priority-type;\r
+                    description\r
+                      "Use the VLAN Tag IEEE 802.1p Priority " +\r
+                      "Code Point value (0..7) for CoS.";\r
+                  }\r
+                  leaf discard-value {\r
+                    type boolean;\r
+                    default "false";\r
+                    description\r
+                      "Set to True to discard Service Frames " +\r
+                      "that match to this PCP value.";\r
+                  }\r
+                  leaf cos-name {\r
+                    type leafref {\r
+                      path "/mef-global:mef-global/profiles/" +\r
+                            "cos-names/cos-name/name";\r
+                    }\r
+                    description\r
+                      "This attribute identifies the name of " +\r
+                      "a class of service (CoS) instance.";\r
+                  }\r
+                  leaf color {\r
+                    type mef-types:cos-color-type;\r
+                    default "green";\r
+                    description\r
+                      "EVC Per UNI: The CoS Color for " +\r
+                      "Service Frames.";\r
+                    reference "[MEF10.3] [R102], [R103]. ";\r
+                  }\r
+                }\r
+              }\r
+            }\r
+            case dscp {\r
+              container cos-dscp {\r
+                presence "CoS ID DSCP.";\r
+                description\r
+                  "CoS ID DSCP.";\r
+                leaf default-ipv4-cos-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/profiles/" +\r
+                            "cos-names/cos-name/name";\r
+                  }\r
+                  description\r
+                    "Default value for CoS Name for DSCP " +\r
+                    "IPv4 Packets when it has not been " +\r
+                    "explicitly configured.";\r
+                }\r
+                leaf default-ipv4-color {\r
+                  type mef-types:cos-color-type;\r
+                  default "green";\r
+                  description\r
+                    "If the CoS ID = dscp, then this value " +\r
+                    "will be used as the default Color when " +\r
+                    "the DSCP value for IPv4 does not have " +\r
+                    "an explicitly configured Color.";\r
+                  reference "MEF 10.3 Section 10.3";\r
+                }\r
+                leaf default-ipv6-cos-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/profiles/" +\r
+                            "cos-names/cos-name/name";\r
+                  }\r
+                  description\r
+                    "Default value for CoS Name for DSCP " +\r
+                    "IPv6 Packets when it has not been " +\r
+                    "explicitly configured.";\r
+                }\r
+                leaf default-ipv6-color {\r
+                  type mef-types:cos-color-type;\r
+                  default "green";\r
+                  description\r
+                    "If the CoS ID = dscp, then this value will " +\r
+                    "be used as the default Color when the " +\r
+                    "DSCP value for IPv6 does not have an " +\r
+                    "explicitly configured Color.";\r
+                  reference "MEF 10.3 Section 10.3";\r
+                }\r
+                list ipv4-dscp {\r
+                  key "dscp-value";\r
+                  description\r
+                    "DSCP value for IPv4 Packets.";\r
+                  leaf dscp-value {\r
+                    type inet:dscp;\r
+                    description\r
+                      "Map CoS to IPv4 and IPv6 DSCP values.";\r
+                  }\r
+                  leaf discard-value {\r
+                    type boolean;\r
+                    default "false";\r
+                    description\r
+                      "Set to True to discard Service Frames " +\r
+                      "that match to this DSCP value.";\r
+                  }\r
+                  leaf cos-name {\r
+                    type leafref {\r
+                      path "/mef-global:mef-global/profiles/" +\r
+                            "cos-names/cos-name/name";\r
+                    }\r
+                    description\r
+                      "This attribute identifies the name of a " +\r
+                      "Class of Service (CoS) instance.";\r
+                  }\r
+                  leaf color {\r
+                    type mef-types:cos-color-type;\r
+                    default "green";\r
+                    description\r
+                      "EVC Per UNI: The CoS Color for " +\r
+                      "Service Frames.";\r
+                    reference "[MEF10.3] [R102], [R103]. ";\r
+                  }\r
+                }\r
+                list ipv6-dscp {\r
+                  key "dscp-value";\r
+                  description\r
+                    "DSCP value for IPv6 Packets.";\r
+                  leaf dscp-value {\r
+                    type inet:dscp;\r
+                    description\r
+                      "Map CoS to IPv4 and IPv6 DSCP values.";\r
+                  }\r
+                  leaf discard-value {\r
+                    type boolean;\r
+                    default "false";\r
+                    description\r
+                      "Set to True to discard Service Frames " +\r
+                      "that match to this DSCP value.";\r
+                  }\r
+                  leaf cos-name {\r
+                    type leafref {\r
+                      path "/mef-global:mef-global/profiles/" +\r
+                            "cos-names/cos-name/name";\r
+                    }\r
+                    description\r
+                      "This attribute identifies the name of a " +\r
+                      "Class of Service (CoS) instance.";\r
+                  }\r
+                  leaf color {\r
+                    type mef-types:cos-color-type;\r
+                    default "green";\r
+                    description\r
+                      "EVC Per UNI: The CoS Color for " +\r
+                      "Service Frames.";\r
+                    reference "[MEF10.3] [R102], [R103]. ";\r
+                  }\r
+                }\r
+              }\r
+            }\r
+          }\r
+        }\r
+      }\r
+    }\r
+  }\r
+}
\ No newline at end of file
diff --git a/api/src/main/yang/mef-interfaces.yang b/api/src/main/yang/mef-interfaces.yang
new file mode 100644 (file)
index 0000000..74b1c6a
--- /dev/null
@@ -0,0 +1,874 @@
+module mef-interfaces {\r
+  namespace "http://metroethernetforum.org/ns/yang/mef-interfaces";\r
+  prefix mef-interfaces;\r
+  import ietf-yang-types {\r
+    prefix yang;\r
+  }\r
+  import mef-types {\r
+    prefix mef-types;\r
+  }\r
+  import mef-global {\r
+    prefix mef-global;\r
+  }\r
+  import mef-topology {\r
+    prefix mef-topology;\r
+  }\r
+  organization "Metro Ethernet Forum";\r
+  contact\r
+    "Web URL: http://metroethernetforum.org/\r
+     E-mail:  mibs@metroethernetforum.org\r
+     Postal:  Metro Ethernet Forum\r
+              6033 W. Century Boulevard, Suite 1107\r
+              Los Angeles, CA 90045\r
+              U.S.A.\r
+     Phone:   +1 310-642-2800\r
+     Fax:     +1 310-642-2808";\r
+  description\r
+    "This module implements the UNI functionality specified\r
+     in MEF 10.3, MEF 6.2, and MEF 7.2.\r
+      \r
+     Reference Overview:\r
+     A number of base documents have been used to create\r
+     the MEF Interfaces YANG Module. The following are the\r
+     abbreviations for the baseline documents:\r
+     [RFC 6991] refers to IETF RFC 6991 'Common YANG Data Types',\r
+     2013-07-15 \r
+     [RFC 6643] refers to IETF RFC 6643 'Translation of Structure\r
+     of Management Information\r
+     Version 2 (SMIv2) MIB Modules to YANG Modules', 2011-11-25 \r
+     [802.1AB] refers to 'Station and Media Access Control\r
+     Connectivity Discovery', IEEE 802.1AB-2009, September 2009\r
+     [802.1q] refers to IEEE 802.1Q-2011 'IEEE Standard for Local\r
+     and metropolitan area networks --Media Access Control (MAC)\r
+     Bridges and Virtual Bridged Local Area Networks, August 2011\r
+     [802-2001] refers to 'IEEE Standard for Local and Metropolitan\r
+     Area Networks: Overview and Architecture', IEEE 802-2001,\r
+     February 2002\r
+     [MEF10.3] refers to MEF 10.3\r
+     'Ethernet Services Attributes Phase 3', October 2013\r
+     [MEF6.2] refers to MEF 6.2\r
+     'EVC Ethernet Services Defintions Phase 3', August 2014\r
+     [MEF40] refers to MEF 40\r
+     'UNI and EVC Definition of Managed Objects', April 2013\r
+     [MEF45] refers to MEF 45 'Multi-CEN L2CP', August 2014\r
+     [MEF7.2] refers to MEF 7.2\r
+     'Carrier Ethernet Management Information Model', April 2013\r
+     [MEF7.3] refers to MEF 7.3\r
+     'Carrier Ethernet Management Information Model',\r
+     Working Draft #1 2015\r
+     [RFC 2737] refers to IETF RFC 2737 'Entity MIB (Version 2)',\r
+     December 1999\r
+     [RFC 2863] refers to IETF RFC 2863 'The Interfaces Group MIB',\r
+     June 2000\r
+     [RFC 3419] refers to IETF RFC 3419\r
+     'Textual Conventions for Transport Addresses', December 2002\r
+     [Y.1731] refers to ITU-T Y.1731\r
+     'OAM functions and mechanisms for Ethernet based networks',\r
+     July 2011\r
+     [Q.840.1] refers to ITU-T Q.840.1\r
+     'Requirements and analysis for NMS-EMS management interface\r
+     of Ethernet over Transport and Metro Ethernet\r
+     Network(EoT/MEN)' March 2007";\r
+  revision 2015-05-26 {\r
+    description\r
+      "Formal Project Review Draft 1.";\r
+    reference "EVC Ethernet Services Definitions YANG Modules " +\r
+            "(MEF XX), TBD";\r
+  }\r
+  container mef-interfaces {\r
+    description\r
+      "MEF Interfaces";\r
+    container unis {\r
+      description\r
+        "User Network Interface(UNI).";\r
+      list uni {\r
+        must "not(./ingress-bw-profile-per-uni) or " +\r
+                "((./ingress-bw-profile-per-uni) and " +\r
+                "not(./ingress-envelopes))" {\r
+          error-message "If there is a per UNI Ingress Bandwidth " +\r
+                "Profile, then there cannot be any other Ingress " +\r
+                "Bandwidth Profiles at that UNI.";\r
+          description\r
+            "If there is a per UNI Ingress Bandwidth Profile, " +\r
+            "then there cannot be any other Ingress Bandwidth " +\r
+            "Profiles at that UNI.";\r
+        }\r
+        must "not(./egress-bw-profile-per-uni) or " +\r
+                "((./egress-bw-profile-per-uni) and " +\r
+                "not(./egress-envelopes))" {\r
+          error-message "If there is a per UNI Egress Bandwidth " +\r
+                "Profile, then there cannot be any other Egress " +\r
+                "Bandwidth Profiles at that UNI.";\r
+          description\r
+            "If there is a per UNI Egress Bandwidth Profile, " +\r
+            "then there cannot be any other Egress Bandwidth " +\r
+            "Profiles at that UNI.";\r
+        }\r
+        must "(not(/mef-global:mef-global/mef-global:" +\r
+                "subscribers) and " +\r
+                "not(./subscriber)) or " +\r
+                "(/mef-global:mef-global/mef-global:" +\r
+                "subscribers and " +\r
+                "./subscriber)" {\r
+          error-message "If the Subscribers list has been " +\r
+                "populated, a UNI must be configured for " +\r
+                "a single Subscriber.";\r
+          description\r
+            "[MEF103] [R1] A UNI must be dedicated to a single " +\r
+            "Subscriber. This must statement is effectively " +\r
+            "a 'mandatory true' when the Global Subscribers " +\r
+            "list is being used.";\r
+        }\r
+        must "(not(/mef-global:mef-global/mef-global:cens) and " +\r
+                "not(./cen-id)) or " +\r
+                "(/mef-global:mef-global/mef-global:cens and " +\r
+                "./cen-id)" {\r
+          error-message "If the CENs list has been populated, " +\r
+                "a UNI must be configured for a single CEN.";\r
+          description\r
+            "[MEF103] [R57] A UNI must be dedicated to a " +\r
+            "single CEN. This must statement is effectively " +\r
+            "a 'mandatory true' when the Global CENs list " +\r
+            "is being used.";\r
+        }\r
+        key "uni-id";\r
+        description\r
+          "MEF UNI List.";\r
+        reference "[MEF6.2] Section 8.2.2.";\r
+        container physical-layers {\r
+          description\r
+            "The Physical Layer MUST operate in a full duplex " +\r
+            "mode. It is not configurable.";\r
+          reference "[MEF10.3] Section 9.2, [R61], [R62]";\r
+          container links {\r
+            presence "A UNI must have links.";\r
+            description\r
+              "The Physical Layer for each physical link " +\r
+              "implementing the UNI MUST be one of the " +\r
+              "PHYs listed in IEEE Std 802.3–2012 but " +\r
+              "excluding 1000BASE-PX-D and 1000BASE-PX-U.";\r
+            reference "[MEF10.3] Section 9.2 [R60]";\r
+            list link {\r
+              must "count(.) >= 1" {\r
+                error-message "A UNI must have at least one " +\r
+                        "physical link configured.";\r
+                description\r
+                  "A UNI must have at least one physical link " +\r
+                  "configured.";\r
+              }\r
+              key "device interface";\r
+              description\r
+                "A list of all the physical ports associated " +\r
+                "with this Link Layer.";\r
+              leaf device {\r
+                type leafref {\r
+                  path "/mef-topology:mef-topology/mef-topology:" +\r
+                        "devices/mef-topology:device/" +\r
+                        "mef-topology:dev-id";\r
+                }\r
+                description\r
+                  "The Physical Layer for each physical link " +\r
+                  "implementing the UNI MUST be one of the " +\r
+                  "PHYs listed in IEEE Std 802.3–2012 but " +\r
+                  "excluding 1000BASE-PX-D and 1000BASE-PX-U.";\r
+                reference "[MEF10.3] Section 9.2 [R60]";\r
+              }\r
+              leaf interface {\r
+                type leafref {\r
+                  path "/mef-topology:mef-topology/mef-topology:" +\r
+                        "devices/mef-topology:device" +\r
+                        "[mef-topology:dev-id = " +\r
+                        "current()/../device]" +\r
+                        "/mef-topology:interfaces/mef-topology:" +\r
+                        "interface/mef-topology:phy";\r
+                }\r
+                description\r
+                  "The Physical Layer for each physical link " +\r
+                  "implementing the UNI MUST be one of the " +\r
+                  "PHYs listed in IEEE Std 802.3–2012 but " +\r
+                  "excluding 1000BASE-PX-D and 1000BASE-PX-U.";\r
+                reference "[MEF10.3] Section 9.2 [R60]";\r
+              }\r
+              leaf ieee8023-phy {\r
+                type identityref {\r
+                  base mef-types:ieee-8023-interface-type;\r
+                }\r
+                must "(. != 'mef-types:" +\r
+                        "ieee8023-1000BASE-PX-D') and " +\r
+                        "(. != 'mef-types:ieee8023-1000BASE-PX-U')" {\r
+                  error-message "The Physical Layer for each " +\r
+                        "physical link implementing the UNI " +\r
+                        "cannot be 1000BASE-PX-D and 1000BASE-PX-U.";\r
+                  description\r
+                    "The Physical Layer for each physical " +\r
+                    "link implementing the UNI cannot be " +\r
+                    "1000BASE-PX-D and 1000BASE-PX-U.";\r
+                }\r
+                description\r
+                  "The Physical Layer for each physical link " +\r
+                  "implementing the UNI MUST be one of the " +\r
+                  "PHYs listed in IEEE Std 802.3–2012 but " +\r
+                  "excluding 1000BASE-PX-D and 1000BASE-PX-U.";\r
+                reference "[MEF10.3] Section 9.2 [R60]";\r
+              }\r
+              leaf connection-speed {\r
+                type mef-types:ext-if-physical-layer-type;\r
+                units "bits-per-second";\r
+                default "1G";\r
+                description\r
+                  "Physical Layer Connection Speed (Max Data Rate).";\r
+                reference "[MEF10.3] Section 9.2. [MEF6.2] " +\r
+                        "Section 8.2.2. [MEF20] [R80].";\r
+              }\r
+              leaf phy-auto-neg {\r
+                type mef-types:auto-negotiation-type;\r
+                default "on";\r
+                description\r
+                  "Auto-Negotiation ON/OFF/Auto.";\r
+                reference "[MEF6.2] Section 8.2.2. [MEF20] [R80]. " +\r
+                        "[MEF7.3] Section 10.2.2.";\r
+              }\r
+              leaf sync-mode-enabled {\r
+                type boolean;\r
+                must ".='false' or (.='true' and " +\r
+                        "../clock-accuracy)" {\r
+                  error-message "The quality of the clock " +\r
+                        "reference must be set if Synchronous " +\r
+                        "Mode is enabled.";\r
+                  description\r
+                    "The quality of the clock reference must " +\r
+                    "be set if Synchronous Mode is enabled.";\r
+                }\r
+                default "false";\r
+                description\r
+                  "Enabled or Disabled for each physical link " +\r
+                  "implementing the UNI.";\r
+                reference "[MEF10.3] Section 9.3. [MEF6.2] " +\r
+                        "Section 8.2.2. [MEF7.3] Section 10.2.2.";\r
+              }\r
+              leaf clock-accuracy {\r
+                type decimal64 {\r
+                  fraction-digits 3;\r
+                }\r
+                units "ppm";\r
+                description\r
+                  "ESMC:Ethernet Equipment Slave Clock Accuracy " +\r
+                  "in PPM. IEEE 802.3 standard specifies " +\r
+                  "that Ethernet clock accuracy is to be less " +\r
+                  "than or equal to +- 4.6 PPM.";\r
+                reference "[MEF10.3] Section 9.3, [R62]. " +\r
+                        "[MEF22.1], [IEEE802.3].";\r
+              }\r
+            }\r
+          }\r
+          leaf number-of-links {\r
+            type uint32 {\r
+              range "1..max";\r
+            }\r
+            must ". = count(../links/link)" {\r
+              error-message "The UNI Number of Links value " +\r
+                    "must match to the number of interfaces " +\r
+                    "in the link list.";\r
+              description\r
+                "The UNI Number of Links value must match " +\r
+                "to the number of interfaces in the link list.";\r
+            }\r
+            default "1";\r
+            description\r
+              "The number of links configured in the links list.";\r
+            reference "[MEF10.3] [R63]. [MEF7.3] Section 10.2.2.";\r
+          }\r
+        }\r
+        container ce-vlans {\r
+          description\r
+            "Each Device (and by extension UNIs) MUST have list " +\r
+            "of the CE-VLAN ID including mappings to configured " +\r
+            "EVCs if assigned. This list of ce-vlans is a " +\r
+            "complete list of all VLANs associated with this " +\r
+            "UNI. At the Service Module level, there are two " +\r
+            "lists: This one and the list of CE-VLAN IDs " +\r
+            "associated with the EVC's UNI List as part of " +\r
+            "the MEF Service Definition. ";\r
+          reference "[MEF10.3] Section 9.10, [R77], [R78]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+          list ce-vlan {\r
+            key "vid";\r
+            description\r
+              "A list of all EC-VLANs allowed ingres or egress " +\r
+              "on the UNI. This is the UNI-specific CE-VLAN ID " +\r
+              "listing as part of the Service Level " +\r
+              "CE-VLAN ID / EVC Map.";\r
+            reference "[MEF10.3] Section 9.10.1.";\r
+            leaf vid {\r
+              type mef-types:vlan-id-type;\r
+              description\r
+                "The Customer Edge VLAN ID is equivalent " +\r
+                "to a Static VLAN allowed on that port " +\r
+                "(ie. Port is not Forbidden). The " +\r
+                "association with the EVC is part of " +\r
+                "the EVC configuration.";\r
+              reference "[MEF10.3] Section 9.10.";\r
+            }\r
+          }\r
+        }\r
+        container ingress-envelopes {\r
+          presence "Ingress Bandwidth Profile Envelopes " +\r
+                "configured.";\r
+          description\r
+            "UNI Bandwidth Profile Flow Envelopes.";\r
+          reference "[MEF10.3] Section 9.15, Section 12.1. " +\r
+                "[MEF6.2] Section 8.2.1: [R3]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+          list envelope {\r
+            key "env-id";\r
+            description\r
+              "UNI Bandwidth Profile Flow Envelope List.";\r
+            reference "[MEF10.3] Section 9.15, Section 12.1. " +\r
+                    "[MEF6.2] Section 8.2.1, [R3], " +\r
+                    "Section 8.2.2, [R4]. [MEF7.3] " +\r
+                    "Section 10.2.2.";\r
+            container bwp-flows {\r
+              presence "Bandwidth Profile configured for " +\r
+                    "this envelope.";\r
+              description\r
+                "UNI Bandwidth Profile Flows per Envelope.";\r
+              reference "[MEF10.3] Section 12.1. " +\r
+                    "[MEF6.2] Section 10.1.";\r
+              list bwp-flow {\r
+                key "bw-profile";\r
+                ordered-by user;\r
+                description\r
+                  "UNI Bandwidth Profile Flow List per Envelope. " +\r
+                  "The order of entries in the list is user " +\r
+                  "controlled. The first element of the list " +\r
+                  "has the lowest priority and the last " +\r
+                  "element will have the highest priority.";\r
+                reference "[MEF10.3] Section 12.1. " +\r
+                        "[MEF6.2] Section 10.1. " +\r
+                        "[MEF6.2] Section 8.2.1, [R3]. ";\r
+                leaf bw-profile {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/mef-global:" +\r
+                            "profiles/mef-global:" +\r
+                            "ingress-bwp-flows/mef-global:" +\r
+                            "bwp-flow/mef-global:bw-profile";\r
+                  }\r
+                  must "(../../../../../token-share-enabled = " +\r
+                        "'true') or " +\r
+                        "((../../../../../token-share-enabled = " +\r
+                        "'false') and " +\r
+                        "(count(../../bwp-flow) = 1))" {\r
+                    error-message "A UNI with Token Share " +\r
+                            "Disabled MUST have exactly one " +\r
+                            "Bandwidth Profile Flow per envelope.";\r
+                    description\r
+                      "A UNI with Token Share Disabled MUST " +\r
+                      "have exactly one Bandwidth Profile Flow " +\r
+                      "per envelope.";\r
+                  }\r
+                  must "(../../../coupling-enabled = 'false') or " +\r
+                        "(/mef-global:mef-global/mef-global:" +\r
+                        "profiles/mef-global:" +\r
+                        "ingress-bwp-flows/mef-global:bwp-flow" +\r
+                        "[mef-global:bw-profile = current()]/" +\r
+                        "mef-global:coupling-enabled = 'false')" {\r
+                    error-message "If an Ingress Envelope's " +\r
+                            "Coupling Flag is Enabled, then " +\r
+                            "the Coupling Flags must be disabled " +\r
+                            "for all Bandwidth Profile Flows " +\r
+                            "mapped to the Envelope.";\r
+                    description\r
+                      "If an Ingress Envelope's Coupling Flag is " +\r
+                      "Enabled, then the Coupling Flags must " +\r
+                      "be disabled for all Bandwidth Profile " +\r
+                      "Flows mapped to the Envelope.";\r
+                  }\r
+                  description\r
+                    "If no Ingress Bandwidth Profile per UNI " +\r
+                    "has been defined (ie. 'No'), then the " +\r
+                    "behavior has been defined at the Service " +\r
+                    "Level of the configuration.";\r
+                  reference "[MEF10.3] Section 9.14, " +\r
+                        "Section 12.1, [R84], [R134]. " +\r
+                        "[MEF6.2] Section 8.2.1,[R3],[R136]. " +\r
+                        "Section 8.2.2, 10.1, [R6]. [MEF7.3] " +\r
+                        "Section 10.2.2.";\r
+                }\r
+              }\r
+            }\r
+            leaf env-id {\r
+              type mef-types:identifier45;\r
+              description\r
+                "This attribute identifies the Envelope of " +\r
+                "Bandwidth Profile Parameters.";\r
+              reference "[MEF10.3] Section 12.1.";\r
+            }\r
+            leaf coupling-enabled {\r
+              type boolean;\r
+              must "not(../bwp-flows) or " +\r
+                    "(../bwp-flows/bwp-flow[2]) or " +\r
+                    "(. = 'false')" {\r
+                error-message "When only one Bandwidth Profile " +\r
+                        "Flow is mapped to an envelope, Envelope " +\r
+                        "Coupling must be Disabled.";\r
+                description\r
+                  "When only one Bandwidth Profile Flow is " +\r
+                  "mapped to an envelope, Envelope " +\r
+                  "Coupling must be Disabled.";\r
+              }\r
+              default "false";\r
+              description\r
+                "The Envelope Coupling Flag (CF) attribute.";\r
+              reference "[MEF10.3] Section 12.1.";\r
+            }\r
+          }\r
+        }\r
+        container egress-envelopes {\r
+          presence "Egress Bandwidth Profile Envelopes configured.";\r
+          description\r
+            "UNI Bandwidth Profile Flow Envelopes.";\r
+          reference "[MEF10.3] Section 9.15, Section 12.1. " +\r
+                "[MEF6.2] Section 8.2.1: [R3]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+          list envelope {\r
+            key "env-id";\r
+            description\r
+              "UNI Bandwidth Profile Flow Envelope List.";\r
+            reference "[MEF10.3] Section 9.15, Section 12.1. " +\r
+                    "[MEF6.2] Section 8.2.1, [R3], " +\r
+                    "Section 8.2.2, [R4]. [MEF7.3] " +\r
+                    "Section 10.2.2.";\r
+            container bwp-flows {\r
+              presence "Bandwidth Profile configured for " +\r
+                    "this envelope.";\r
+              description\r
+                "UNI Bandwidth Profile Flows per Envelope.";\r
+              reference "[MEF10.3] Section 12.1. [MEF6.2] " +\r
+                    "Section 10.1.";\r
+              list bwp-flow {\r
+                key "bw-profile";\r
+                ordered-by user;\r
+                description\r
+                  "UNI Bandwidth Profile Flow List per Envelope. " +\r
+                  "The order of entries in the list is user " +\r
+                  "controlled. The first element of the list " +\r
+                  "has the lowest priority and the last element " +\r
+                  "will have the highest priority.";\r
+                reference "[MEF10.3] Section 12.1. " +\r
+                        "[MEF6.2] Section 10.1. " +\r
+                        "[MEF6.2] Section 8.2.1, [R3]. ";\r
+                leaf bw-profile {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/mef-global:" +\r
+                            "profiles/mef-global:egress-bwp-flows" +\r
+                            "/mef-global:bwp-flow/" +\r
+                            "mef-global:bw-profile";\r
+                  }\r
+                  must "(../../../../../token-share-enabled = " +\r
+                        "'true') or " +\r
+                        "((../../../../../token-share-enabled = " +\r
+                        "'false') and " +\r
+                        "(count(../../bwp-flow) = 1))" {\r
+                    error-message "A UNI with Token Share " +\r
+                            "Disabled must have exactly one " +\r
+                            "Bandwidth Profile Flow per envelope.";\r
+                    description\r
+                      "A UNI with Token Share Disabled must have " +\r
+                      "exactly one Bandwidth Profile Flow per " +\r
+                      "envelope.";\r
+                  }\r
+                  must "(../../../coupling-enabled = 'false') or " +\r
+                        "(/mef-global:mef-global/mef-global:" +\r
+                        "profiles/mef-global:" +\r
+                        "egress-bwp-flows/mef-global:bwp-flow" +\r
+                        "[mef-global:bw-profile = current()]/" +\r
+                        "mef-global:coupling-enabled = 'false')" {\r
+                    error-message "If an Egress Envelope's " +\r
+                            "Coupling Flag is Enabled, then the " +\r
+                            "Coupling Flags must be disabled " +\r
+                            "for all Bandwidth Profile Flows " +\r
+                            "mapped to the Envelope.";\r
+                    description\r
+                      "If an Egress Envelope's Coupling Flag " +\r
+                      "is Enabled, then the Coupling Flags must " +\r
+                      "be disabled for all Bandwidth Profile " +\r
+                      "Flows mapped to the Envelope.";\r
+                  }\r
+                  description\r
+                    "UNI Bandwidth Profile Flow per Envelope.";\r
+                  reference "[MEF10.3] Section 12.1. " +\r
+                        "[MEF6.2] Section 10.1. " +\r
+                        "[MEF6.2] Section 8.2.1, [R3], [R136]. ";\r
+                }\r
+              }\r
+            }\r
+            leaf env-id {\r
+              type mef-types:identifier45;\r
+              description\r
+                "This attribute identifies the Envelope of " +\r
+                "Bandwidth Profile Parameters.";\r
+              reference "[MEF10.3] Section 12.1.";\r
+            }\r
+            leaf coupling-enabled {\r
+              type boolean;\r
+              must "not(../bwp-flows) or " +\r
+                    "(../bwp-flows/bwp-flow[2]) or " +\r
+                    "(. = 'false')" {\r
+                error-message "When only one Bandwidth Profile " +\r
+                        "Flow is mapped to an envelope, " +\r
+                        "Envelope Coupling must be Disabled.";\r
+                description\r
+                  "When only one Bandwidth Profile Flow is " +\r
+                  "mapped to an envelope, Envelope Coupling " +\r
+                  "must be Disabled.";\r
+              }\r
+              default "false";\r
+              description\r
+                "The Envelope Coupling Flag (CF) attribute.";\r
+              reference "[MEF10.3] Section 12.1.";\r
+            }\r
+          }\r
+        }\r
+        container status {\r
+          description\r
+            "This group is related to the MEF 7.3 External " +\r
+            "Network Interface";\r
+          leaf oper-state-enabled {\r
+            type boolean;\r
+            default "false";\r
+            config false;\r
+            description\r
+              "Operational Status of the Link as " +\r
+              "Enabled/Disabled.";\r
+            reference "[MEF15]. [MEF7.3] Section 10.1.1.";\r
+          }\r
+          leaf available-status {\r
+            type mef-types:ext-if-availability-type;\r
+            default "not-installed";\r
+            config false;\r
+            description\r
+              "Availability Status of the Link.";\r
+            reference "[MEF15]. [MEF7.3] Section 10.1.1.";\r
+          }\r
+          leaf physical-layer {\r
+            type mef-types:ext-if-physical-layer-type;\r
+            default "1G";\r
+            config false;\r
+            description\r
+              "Physical Layer Connection Speed.";\r
+            reference "[MEF15]. [MEF7.3] Section 10.1.1.";\r
+          }\r
+          leaf number-of-links {\r
+            type uint32;\r
+            default "0";\r
+            config false;\r
+            description\r
+              "A count of the number of physical links in this " +\r
+              "physical layer.";\r
+            reference "[MEF15]. [MEF7.3] Section 10.1.1.";\r
+          }\r
+          leaf svc-frame-format {\r
+            type mef-types:svc-frame-format-type;\r
+            default "ctag";\r
+            config false;\r
+            description\r
+              "The format must be that of a MAC Frame specified " +\r
+              "in IEEE Std 802.3-2012 Clause 3.";\r
+            reference "[MEF10.3] Section 9.6. [MEF15]. " +\r
+                    "[MEF7.2]. [MEF7.3] Section 10.1.1.";\r
+          }\r
+        }\r
+        leaf cen-id {\r
+          when "/mef-global:mef-global/mef-global:cens" {\r
+            description\r
+              "Only configure when the Global CENs list " +\r
+              "has been populated.";\r
+          }\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:cens/" +\r
+                    "mef-global:cen/mef-global:cen-id";\r
+          }\r
+          description\r
+            "A CEN is defined as a network from a Service " +\r
+            "Provider (SP). The CEN ID must be unique for " +\r
+            "a specific Service Provider.";\r
+          reference "[MEF10.3] Section 7.";\r
+        }\r
+        leaf uni-id {\r
+          type mef-types:identifier45;\r
+          description\r
+            " The UNI IDs must be be unique within a specific CEN.";\r
+          reference "[MEF10.3] Section 9.1, [R1], [R57], [R58], " +\r
+                "[R59]. [MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf uni-type {\r
+          type mef-types:uni-mode-type;\r
+          default "uni";\r
+          description\r
+            " The UNI Type must be one of {UNI, VUNI}.";\r
+          reference "[MEF10.3] Section 9.1, [R1], [R57], [R58], " +\r
+                "[R59]. [MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf subscriber {\r
+          when "/mef-global:mef-global/mef-global:subscribers" {\r
+            description\r
+              "UNI Subscriber Attribute is only configurable " +\r
+              "when multiple Global Subscribers have been " +\r
+              "configured.";\r
+          }\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:subscribers/" +\r
+                    "mef-global:subscriber/mef-global:sub-id";\r
+          }\r
+          description\r
+            "A UNI MUST be dedicated to a single Subscriber. " +\r
+            "This value can only be configured if the " +\r
+            "'/mef-global/subscribers/subscriber' list " +\r
+            "has been populated.";\r
+          reference "[MEF10.3] Section 7.";\r
+        }\r
+        leaf admin-state-enabled {\r
+          type boolean;\r
+          default "true";\r
+          description\r
+            "Locked/Unlocked is inconsistent with Oper Status " +\r
+            "and will be confusing.";\r
+          reference "MEF 15. MEF 7.3 Section 10.1.1.";\r
+        }\r
+        leaf mac-address {\r
+          type yang:mac-address;\r
+          description\r
+            "MAC Address.";\r
+          reference "[MEF15]. [MEF7.3] Section 10.1.1.";\r
+        }\r
+        leaf uni-resiliency {\r
+          type mef-types:uni-resiliency-type;\r
+          must "(. != 'none') or ((. = 'none') and " +\r
+                "(../physical-layers/number-of-links = 1))" {\r
+            error-message "If uni-resiliency is 'none', " +\r
+                    "number-of-links must be 1.";\r
+            description\r
+              "If uni-resiliency is 'none', number-of-links " +\r
+              "must be 1.";\r
+          }\r
+          must "(. != 'dual-link-aggregation') or " +\r
+                "((. = 'dual-link-aggregation') and " +\r
+                "(../physical-layers/number-of-links = 2))" {\r
+            error-message "If uni-resiliency is " +\r
+                    "'dual-link-aggregation', " +\r
+                    "number-of-links must be 2.";\r
+            description\r
+              "If uni-resiliency is 'dual-link-aggregation', " +\r
+              "number-of-links must be 2.";\r
+          }\r
+          must "(. != 'other') or " +\r
+                "((. = 'other') and " +\r
+                "(../physical-layers/number-of-links > 2))" {\r
+            error-message "If uni-resiliency is 'other', " +\r
+                    "number-of-links must be 3 or greater.";\r
+            description\r
+              "If uni-resiliency is 'other', number-of-links " +\r
+              "must be 3 or greater.";\r
+          }\r
+          default "none";\r
+          description\r
+            "UNI Resiliency.";\r
+          reference "[MEF10.3] Section 9.5 [R64], [R65], [R66], " +\r
+                "[R67]. [MEF6.2] Section 8.2.2.";\r
+        }\r
+        leaf max-svc-frame-size {\r
+          type mef-types:max-svc-frame-size-type;\r
+          default "1600";\r
+          description\r
+            "This attribute describes the maximum service frame " +\r
+            "size for the UNI.";\r
+          reference "[MEF10.3] Section 9.7, [R71], MEF 6.2 " +\r
+                "Section 8.2.2 and MEF 22.1: [D2]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf svc-mux-enabled {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "Service Multiplexing Enable - Enable if to support " +\r
+            "multiple EVCs per UNI.";\r
+          reference "[MEF10.3] Section 9.8. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf bundling-enabled {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "When a UNI has Bundling Enabled, it MUST be able to " +\r
+            "support more than one CE-VLAN ID mapping to a " +\r
+            "particular EVC at the UNI.  When more than one " +\r
+            "CE-VLAN-ID is mapped to an EVC at a UNI, the " +\r
+            "EVC have CE-VLAN ID Preservation enabled";\r
+          reference "[MEF10.3] Section 9.12, [R25], [R77], " +\r
+                "[R78], [R80]. [MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf all-to-one-bundling-enabled {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "When all-to-one-bundling-enabled = true, all " +\r
+            "CE-VLAN IDs MUST map to a single EVC at the " +\r
+            "UNI. This also means that the UNI cannot " +\r
+            "have svc-mux-enabled = true. When " +\r
+            "all-to-one-bundling-enabled = true, " +\r
+            "all other UNIs in the EVC associating this UNI " +\r
+            "must have all-to-one-bundling-enabled = true. " +\r
+            "If this values is true, the value of " +\r
+            "ce-vlan-id-for-untagged-and-priority is not " +\r
+            "applicable.";\r
+          reference "[MEF10.3] Section 9.13, Table 12 " +\r
+                "(5 valid combinations), [R82], [R83]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf ce-vlan-id-for-untagged-and-priority {\r
+          type mef-types:vlan-id-type;\r
+          default "1";\r
+          description\r
+            "The ce-vlan-id-for-untagged-and-priority is " +\r
+            "equivalent to the Layer 2 PVID (Port VLAN ID) " +\r
+            "with the Q-BRIDGE-MIB option for frame admitance set " +\r
+            "to admitAll. With AdmitAll set, all Untagged and " +\r
+            "Priority Tagged Service Frames are treated with " +\r
+            "the CE-VLAN-ID tag on ingress. It is not applicable " +\r
+            "if All in One Bundling is enabled.";\r
+          reference "[MEF10.3] Section 9.9, [R73], [R74], " +\r
+                "[R75]. [MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf max-evc-count {\r
+          type uint32 {\r
+            range "1..max";\r
+          }\r
+          default "1";\r
+          description\r
+            "The Maximum Number of EVCs that can be supported " +\r
+            "by this UNI (Default 1).";\r
+          reference "[MEF10.3] Section 9.11, [R79]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf token-share-enabled {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "Token Share Enabled/Disabled is used to indicate " +\r
+            "whether a given UNI is capable of sharing tokens " +\r
+            "across Bandwidth Profile Flows in an envelope.";\r
+          reference "[MEF6.2] Section 8.2.1, [R2], [D1], [R3]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf ingress-bw-profile-per-uni {\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:ingress-bwp-flows/mef-global:" +\r
+                    "bwp-flow/mef-global:bw-profile";\r
+          }\r
+          description\r
+            "Ingress Bandwidth Profile for this UNI.";\r
+          reference "[MEF10.3] Section 9.15, Section 12.1. " +\r
+                "[MEF6.2] Section 8.2.1: [R3]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf egress-bw-profile-per-uni {\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:egress-bwp-flows/mef-global:" +\r
+                    "bwp-flow/mef-global:bw-profile";\r
+          }\r
+          description\r
+            "Egress Bandwidth Profile Flow for this UNI.";\r
+          reference "[MEF10.3] Section 9.15, Section 12.1. " +\r
+                "[MEF6.2] Section 8.2.1: [R3]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf link-oam-enabled {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "Link OAM Enabled/Disabled.";\r
+          reference "[MEF10.3] Section 9.16, [R86]. " +\r
+                "[MEF6.2] Section 8.2.2, [D3]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf uni-meg-enabled {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "Enables / Disables the Maintenance Entity Group (MEG).";\r
+          reference "[MEF10.3] Section 9.17, [R87]. " +\r
+                "[MEF30.1] Section 7.9. [MEF6.2] Section 8.2.2, " +\r
+                "[D4]. [MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf elmi-enabled {\r
+          type boolean;\r
+          must "(. = 'false') or " +\r
+                "(. = 'true' and " +\r
+                "(../elmi-profile))" {\r
+            error-message "ELMI Profile must be set if " +\r
+                    "ELMI is Enabled.";\r
+            description\r
+              "Ethernet Local Management Interface(ELMI) " +\r
+              "Profile ID must be set if ELMI is Enabled.";\r
+          }\r
+          default "false";\r
+          description\r
+            "Ethernet Local Management Interface(ELMI) " +\r
+            "Enabled / Disabled.";\r
+          reference "[MEF10.3] Section 9.18, [R88]. " +\r
+                "[MEF16]. [MEF6.2] Section 8.2.2, [D5]. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf elmi-profile {\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:elmi/mef-global:elmi-profile/" +\r
+                    "mef-global:id";\r
+          }\r
+          description\r
+            "The ELMI Profile is only applicable when ELMI " +\r
+            "is enabled. The E-LMI protocol is based on " +\r
+            "ITU-T Q.933, X.36 and other relevant " +\r
+            "recommendations as well as Frame Relay " +\r
+            "Local Management Interface (FR-LMI) " +\r
+            "Implementation Agreement document defined " +\r
+            "by the Frame Relay Forum and related " +\r
+            "ITU-T recommendations.";\r
+          reference "[MEF10.3] Section 9.18. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+        leaf l2cp-address-set {\r
+          type mef-types:l2cp-address-set-type;\r
+          default "aware-cta";\r
+          description\r
+            "The L2CP Address Set Service Attribute specifies " +\r
+            "the subset of the Bridge Reserved Addresses " +\r
+            "that are filtered (i.e. L2CP Frames with " +\r
+            "this destination address are Peered or " +\r
+            "Discarded but not Passed) at a L2CP Decision Point.";\r
+          reference "[MEF10.3] Section 9.19. " +\r
+                "[MEF45] Section 8.1, [R2] through [R9]. " +\r
+                "[MEF6.2] Section 8.2.2, [R1]. " +\r
+                "[MEF45] Section 8.1.";\r
+        }\r
+        leaf l2cp-peering-profile {\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:l2cp-peering/mef-global:" +\r
+                    "l2cp-profile/mef-global:id";\r
+          }\r
+          description\r
+            "L2CP Peering Profile for this UNI. This profile " +\r
+            "may contain groups of L2CP Destination " +\r
+            "MAC Addresses and protocols to be peered at " +\r
+            "the UNI (as opposed to being passed or discarded).";\r
+          reference "[MEF10.3] Section 9.19. " +\r
+                "[MEF45] Section 8.2. " +\r
+                "[MEF7.3] Section 10.2.2.";\r
+        }\r
+      }\r
+    }\r
+  }\r
+}
\ No newline at end of file
diff --git a/api/src/main/yang/mef-services.yang b/api/src/main/yang/mef-services.yang
new file mode 100644 (file)
index 0000000..f8fe3e3
--- /dev/null
@@ -0,0 +1,1955 @@
+module mef-services {\r
+  namespace "http://metroethernetforum.org/ns/yang/mef-services";\r
+  prefix mef-services;\r
+  import ietf-yang-types {\r
+    prefix yang;\r
+  }\r
+  import mef-types {\r
+    prefix mef-types;\r
+  }\r
+  import mef-global {\r
+    prefix mef-global;\r
+  }\r
+  import mef-interfaces {\r
+    prefix mef-interfaces;\r
+  }\r
+  organization "Metro Ethernet Forum";\r
+  contact\r
+    "Web URL: http://metroethernetforum.org/\r
+     E-mail:  mibs@metroethernetforum.org\r
+     Postal:  Metro Ethernet Forum\r
+              6033 W. Century Boulevard, Suite 1107\r
+              Los Angeles, CA 90045\r
+              U.S.A.\r
+     Phone:   +1 310-642-2800\r
+     Fax:     +1 310-642-2808";\r
+  description\r
+    "This module implements the Carrier Ethernet Services as\r
+     defined in MEF 10.3, MEF 6.2, and MEF 7.2.\r
+      \r
+     Reference Overview:\r
+      A number of base documents have been used to create the\r
+      MEF Services YANG Module. The\r
+      following are the abbreviations for the baseline documents:\r
+      [RFC 6991] refers to IETF RFC 6991 'Common YANG Data Types',\r
+      2013-07-15 \r
+      [RFC 6643] refers to IETF RFC 6643 'Translation of Structure\r
+      of Management Information\r
+      Version 2 (SMIv2) MIB Modules to YANG Modules', 2011-11-25 \r
+      [802.1AB] refers to 'Station and Media Access Control\r
+      Connectivity Discovery', IEEE 802.1AB-2009, September 2009\r
+      [802.1q] refers to IEEE 802.1Q-2011 'IEEE Standard for Local\r
+      and metropolitan area networks --Media Access Control (MAC)\r
+      Bridges and Virtual Bridged Local Area Networks, August 2011\r
+      [802-2001] refers to 'IEEE Standard for Local and Metropolitan\r
+      Area Networks: Overview and Architecture', IEEE 802-2001,\r
+      February 2002\r
+      [MEF10.3] refers to MEF 10.3\r
+      'Ethernet Services Attributes Phase 3', October 2013\r
+      [MEF6.2] refers to MEF 6.2\r
+      'EVC Ethernet Services Defintions Phase 3', August 2014\r
+      [MEF40] refers to MEF 40\r
+      'UNI and EVC Definition of Managed Objects', April 2013\r
+      [MEF45] refers to MEF 45 'Multi-CEN L2CP', August 2014\r
+      [MEF7.2] refers to MEF 7.2\r
+      'Carrier Ethernet Management Information Model', April 2013\r
+      [MEF7.3] refers to MEF 7.3\r
+      'Carrier Ethernet Management Information Model',\r
+      Working Draft #1 2015\r
+      [RFC 2737] refers to IETF RFC 2737 'Entity MIB (Version 2)',\r
+      December 1999\r
+      [RFC 2863] refers to IETF RFC 2863 'The Interfaces Group MIB',\r
+      June 2000\r
+      [RFC 3419] refers to IETF RFC 3419\r
+      'Textual Conventions for Transport Addresses', December 2002\r
+      [Y.1731] refers to ITU-T Y.1731\r
+      'OAM functions and mechanisms for Ethernet based networks',\r
+      July 2011\r
+      [Q.840.1] refers to ITU-T Q.840.1\r
+      'Requirements and analysis for NMS-EMS management interface\r
+      of Ethernet over Transport and Metro Ethernet\r
+      Network(EoT/MEN)' March 2007";\r
+  revision 2015-05-26 {\r
+    description\r
+      "Formal Project Review Draft 1.";\r
+    reference "EVC Ethernet Services Definitions YANG Modules " +\r
+            "(MEF XX), TBD";\r
+  }\r
+  container mef-services {\r
+    description\r
+      "MEF Services";\r
+    list mef-service {\r
+      must "(not(/mef-global:mef-global/mef-global:svc-providers)" +\r
+            " and " +\r
+            "not(./sp-id)) or " +\r
+            "(/mef-global:mef-global/mef-global:svc-providers and " +\r
+            "./sp-id)" {\r
+        error-message "If the Service Providers list has been " +\r
+                "populated, a Service Provider ID must be " +\r
+                "configured for a Service.";\r
+        description\r
+          "A Service sees a single Service Provider. This must " +\r
+          "statement is effectively a 'mandatory true' when " +\r
+          "the Global Service Providers list is being used.";\r
+      }\r
+      key "svc-id";\r
+      unique "evc/evc-id";\r
+      description\r
+        "Metro Ethernet Forum's Ethernet Services.";\r
+      container evc {\r
+        must "not(sls-uni-inclusions) or " +\r
+                "(sls-uni-inclusions and not(sls-uni-exclusions))" {\r
+          error-message "The EVC Performance SLS Exclusions and " +\r
+                "Inclusions List cannot both be configured for " +\r
+                "an EVC.";\r
+          description\r
+            "The EVC Performance SLS Exclusions and Inclusions " +\r
+            "List cannot both be configured for an EVC.";\r
+        }\r
+        must "(evc-type != 'rooted-multipoint') or " +\r
+                "((evc-type = 'rooted-multipoint') and " +\r
+                "not(sls-uni-exclusions) )" {\r
+          error-message "If EVC Type is Rooted-Multipoint, " +\r
+                "sls-uni-inclusions must be used instead of " +\r
+                "sls-uni-exclusions.";\r
+          description\r
+            "If EVC Type is Rooted-Multipoint, " +\r
+            "sls-uni-inclusions must be used instead of " +\r
+            "sls-uni-exclusions.";\r
+        }\r
+        description\r
+          "Ethernet Virtual Circuit(EVC) Configuration and Status.";\r
+        container unis {\r
+          description\r
+            "EVC Per Universal Network Interface(UNI) " +\r
+            "Configuration and Status.";\r
+          list uni {\r
+            must "not(evc-uni-ce-vlans/evc-uni-ce-vlan[2]) or " +\r
+                    "../../preserve-ce-vlan-id = 'true'" {\r
+              error-message "When more than one CE-VLAN-ID is " +\r
+                    "mapped to an EVC at a UNI, the EVC must have " +\r
+                    "CE-VLAN ID Preservation Enabled.";\r
+              description\r
+                "When more than one CE-VLAN-ID is mapped to " +\r
+                "an EVC at a UNI, the EVC must have CE-VLAN ID " +\r
+                "Preservation Enabled.";\r
+            }\r
+            must "/mef-interfaces:mef-interfaces/mef-interfaces:" +\r
+                    "unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                    "max-svc-frame-size >= current()/../../" +\r
+                    "mef-services:max-svc-frame-size]" {\r
+              error-message "The value of the EVC Maximum " +\r
+                    "Service Frame Size must be less than " +\r
+                    "or equal to all the UNI Maximum Service " +\r
+                    "Frame Sizes.";\r
+              description\r
+                "The value of the EVC Maximum Service Frame " +\r
+                "Size must be less than or equal to all the " +\r
+                "UNI Maximum Service Frame Sizes.";\r
+            }\r
+            must "(/mef-interfaces:mef-interfaces/mef-interfaces:" +\r
+                    "unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                    "bundling-enabled = 'true']) or " +\r
+                    "(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                    "all-to-one-bundling-enabled = 'true']) or " +\r
+                    "not(evc-uni-ce-vlans/evc-uni-ce-vlan[2])" {\r
+              error-message "If both Bundling and All-to-One " +\r
+                    "Bundling are disabled for a UNI, only one " +\r
+                    "CE VLAN ID can be configured for a specific " +\r
+                    "EVC on that UNI.";\r
+              description\r
+                "If both Bundling and All-to-One Bundling are " +\r
+                "disabled for a UNI, only one CE VLAN ID can be " +\r
+                "configured for a specific EVC on that UNI.";\r
+            }\r
+            must "(/mef-interfaces:mef-interfaces/mef-interfaces:" +\r
+                    "unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                    "all-to-one-bundling-enabled = 'false']) or " +\r
+                    "(count(/mef-services:mef-services/" +\r
+                    "mef-service/evc/unis/uni[uni-id = " +\r
+                    "current()/uni-id]) = 1)" {\r
+              error-message "If All-to-One Bundling is enabled " +\r
+                    "for any UNI in an EVC, all CE-VLAN IDs " +\r
+                    "mapped to any EVC for that UNI must map " +\r
+                    "to the same EVC ID.";\r
+              description\r
+                "If All-to-One Bundling is enabled for any UNI " +\r
+                "in an EVC, all CE-VLAN IDs mapped to any EVC " +\r
+                "for that UNI must map to the same EVC ID.";\r
+            }\r
+            must "((/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                    "ingress-bw-profile-per-uni]) or " +\r
+                    "(/mef-services:mef-services/mef-service/" +\r
+                    "evc/unis/uni" +\r
+                    "[uni-id = current()/mef-services:uni-id]" +\r
+                    "/ingress-bwp-flows-per-cos) or " +\r
+                    "(/mef-services:mef-services/mef-service/" +\r
+                    "evc/unis/uni" +\r
+                    "[uni-id = current()/mef-services:uni-id]" +\r
+                    "/ingress-bw-profile-per-evc)) or " +\r
+                    "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-envelopes)" {\r
+              error-message "If no Ingress Bandwidth Profiles " +\r
+                    "are specied for this UNI (BW Profile " +\r
+                    "Per UNI, BWP Flows Per CoS, nor BW Profile " +\r
+                    "Per EVC), then the UNI Ingress Envelopes " +\r
+                    "list must be empty.";\r
+              description\r
+                "If no Ingress Bandwidth Profiles are specied " +\r
+                "for this UNI (BW Profile Per UNI, BWP Flows " +\r
+                "Per CoS, nor BW Profile Per EVC), then the " +\r
+                "UNI Ingress Envelopes list must be empty.";\r
+            }\r
+            must "((/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                    "egress-bw-profile-per-uni]) or " +\r
+                    "(/mef-services:mef-services/mef-service/" +\r
+                    "evc/unis/uni" +\r
+                    "[uni-id = current()/mef-services:uni-id]" +\r
+                    "/egress-bwp-flows-per-eec) or " +\r
+                    "(/mef-services:mef-services/mef-service/" +\r
+                    "evc/unis/uni" +\r
+                    "[uni-id = current()/mef-services:uni-id]" +\r
+                    "/egress-bw-profile-per-evc)) or " +\r
+                    "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-envelopes)" {\r
+              error-message "If no Egress Bandwidth Profiles are " +\r
+                    "specied for this UNI (BW Profile Per UNI, " +\r
+                    "BWP Flows Per EEC, nor BW Profile Per EVC), " +\r
+                    "then the UNI Egress Envelopes list must be " +\r
+                    "empty.";\r
+              description\r
+                "If no Egress Bandwidth Profiles are specied " +\r
+                "for this UNI (BW Profile Per UNI, BWP Flows " +\r
+                "Per EEC, nor BW Profile Per EVC), then the UNI " +\r
+                "Egress Envelopes list must be empty.";\r
+            }\r
+            must "not(./ingress-bw-profile-per-evc) or " +\r
+                    "((./ingress-bw-profile-per-evc) and " +\r
+                    "not(./ingress-bwp-flows-per-cos))" {\r
+              error-message "If there is a per EVC Ingress " +\r
+                    "Bandwidth Profile on an EVC, then there " +\r
+                    "cannot be any per Class of Service Ingress " +\r
+                    "Bandwidth Profiles on that EVC.";\r
+              description\r
+                "If there is a per EVC Ingress Bandwidth Profile " +\r
+                "on an EVC, then there cannot be any per " +\r
+                "Class of Service Ingress Bandwidth Profiles " +\r
+                "on that EVC.";\r
+            }\r
+            must "not(./egress-bw-profile-per-evc) or " +\r
+                    "((./egress-bw-profile-per-evc) and " +\r
+                    "not(./egress-bwp-flows-per-eec))" {\r
+              error-message "If there is a per EVC Egress " +\r
+                    "Bandwidth Profile on an EVC, then there " +\r
+                    "cannot be any per Egress Equivalence " +\r
+                    "Class Identifier Bandwidth Profiles on " +\r
+                    "that EVC.";\r
+              description\r
+                "If there is a per EVC Egress Bandwidth " +\r
+                "Profile on an EVC, then there cannot be " +\r
+                "any per Egress Equivalence Class Identifier " +\r
+                "Bandwidth Profiles on that EVC.";\r
+            }\r
+            must "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-bw-profile-" +\r
+                    "per-uni) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:ingress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-bw-profile-per-uni]" +\r
+                    "[mef-global:cir = 0]) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:ingress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-bw-profile-per-uni]" +\r
+                    "[mef-global:cbs >= current()/../../" +\r
+                    "max-svc-frame-size])" {\r
+              error-message "Ingress Bandwidth Profile Per UNI: " +\r
+                    "If CIR > 0, CBS must be greater than or " +\r
+                    "equal to the EVC Max Service Frame Size " +\r
+                    "for the EVC.";\r
+              description\r
+                "Ingress Bandwidth Profile Per UNI: If CIR > 0, " +\r
+                "CBS must be greater than or equal to the " +\r
+                "EVC Max Service Frame Size for the EVC.";\r
+            }\r
+            must "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-bw-profile-per-uni) " +\r
+                    "or " +\r
+                    "(/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:egress-bwp-flows/mef-global:" +\r
+                    "bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-bw-profile-per-uni]" +\r
+                    "[mef-global:cir = 0]) or " +\r
+                    "(/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:ingress-bwp-flows/mef-global:" +\r
+                    "bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-bw-profile-per-uni]" +\r
+                    "[mef-global:cbs >= current()/../../" +\r
+                    "max-svc-frame-size])" {\r
+              error-message "Egress Bandwidth Profile Per UNI: " +\r
+                    "If CIR > 0, CBS must be greater than or " +\r
+                    "equal to the EVC Max Service Frame Size " +\r
+                    "for the EVC.";\r
+              description\r
+                "Egress Bandwidth Profile Per UNI: If CIR > 0, " +\r
+                "CBS must be greater than or equal to the " +\r
+                "EVC Max Service Frame Size for the EVC.";\r
+            }\r
+            must "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-envelopes) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:ingress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-envelopes/" +\r
+                    "mef-interfaces:envelope/mef-interfaces:" +\r
+                    "bwp-flows/mef-interfaces:bwp-flow/" +\r
+                    "mef-interfaces:bw-profile]" +\r
+                    "[mef-global:cir = 0]) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:ingress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-envelopes/" +\r
+                    "mef-interfaces:envelope/mef-interfaces:" +\r
+                    "bwp-flows/mef-interfaces:bwp-flow/" +\r
+                    "mef-interfaces:bw-profile]" +\r
+                    "[mef-global:cbs >= current()/../../" +\r
+                    "max-svc-frame-size])" {\r
+              error-message "Ingress Bandwidth Profile Envelope: " +\r
+                    "If CIR > 0, CBS must be greater than or " +\r
+                    "equal to the EVC Max Service Frame Size " +\r
+                    "for the EVC.";\r
+              description\r
+                "Ingress Bandwidth Profile Envelope: " +\r
+                "If CIR > 0, CBS must be greater than " +\r
+                "or equal to the EVC Max Service Frame " +\r
+                "Size for the EVC.";\r
+            }\r
+            must "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-envelopes) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:egress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = " +\r
+                    "/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-envelopes/" +\r
+                    "mef-interfaces:envelope/mef-interfaces:" +\r
+                    "bwp-flows/mef-interfaces:bwp-flow/" +\r
+                    "mef-interfaces:bw-profile]" +\r
+                    "[mef-global:cir = 0]) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:egress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-envelopes/" +\r
+                    "mef-interfaces:envelope/mef-interfaces:" +\r
+                    "bwp-flows/mef-interfaces:bwp-flow/" +\r
+                    "mef-interfaces:bw-profile]" +\r
+                    "[mef-global:cbs >= current()/../../" +\r
+                    "max-svc-frame-size])" {\r
+              error-message "Egress Bandwidth Profile " +\r
+                    "Envelope: If CIR > 0, CBS must be greater " +\r
+                    "than or equal to the EVC Max Service Frame " +\r
+                    "Size for the EVC.";\r
+              description\r
+                "Egress Bandwidth Profile Envelope: If CIR > 0, " +\r
+                "CBS must be greater than or equal to the " +\r
+                "EVC Max Service Frame Size for the EVC.";\r
+            }\r
+            must "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-bw-profile-per-uni) " +\r
+                    "or " +\r
+                    "(/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:ingress-bwp-flows/mef-global:" +\r
+                    "bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]/mef-interfaces:" +\r
+                    "ingress-bw-profile-per-uni]" +\r
+                    "[mef-global:eir = 0]) or " +\r
+                    "(/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:ingress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-bw-profile-per-uni]" +\r
+                    "[mef-global:ebs >= current()/../../" +\r
+                    "max-svc-frame-size])" {\r
+              error-message "Ingress Bandwidth Profile Per UNI: " +\r
+                    "If EIR > 0, EBS must be greater than or " +\r
+                    "equal to the EVC Max Service Frame Size " +\r
+                    "for the EVC.";\r
+              description\r
+                "Ingress Bandwidth Profile Per UNI: If EIR > 0, " +\r
+                "EBS must be greater than or equal to the " +\r
+                "EVC Max Service Frame Size for the EVC.";\r
+            }\r
+            must "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-bw-profile-" +\r
+                    "per-uni) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:egress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]/mef-interfaces:" +\r
+                    "egress-bw-profile-per-uni]" +\r
+                    "[mef-global:eir = 0]) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:ingress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]/mef-interfaces:" +\r
+                    "egress-bw-profile-per-uni]" +\r
+                    "[mef-global:ebs >= current()/../../" +\r
+                    "max-svc-frame-size])" {\r
+              error-message "Egress Bandwidth Profile Per UNI: " +\r
+                    "If EIR > 0, EBS must be greater than or " +\r
+                    "equal to the EVC Max Service Frame Size " +\r
+                    "for the EVC.";\r
+              description\r
+                "Egress Bandwidth Profile Per UNI: If EIR > 0, " +\r
+                "EBS must be greater than or equal to the " +\r
+                "EVC Max Service Frame Size for the EVC.";\r
+            }\r
+            must "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:" +\r
+                    "unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-envelopes) or " +\r
+                    "(/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:ingress-bwp-flows/mef-global:" +\r
+                    "bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-envelopes/" +\r
+                    "mef-interfaces:envelope/mef-interfaces:" +\r
+                    "bwp-flows/mef-interfaces:bwp-flow/" +\r
+                    "mef-interfaces:bw-profile]" +\r
+                    "[mef-global:eir = 0]) or " +\r
+                    "(/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:ingress-bwp-flows/mef-global:" +\r
+                    "bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:ingress-envelopes/" +\r
+                    "mef-interfaces:envelope/mef-interfaces:" +\r
+                    "bwp-flows/mef-interfaces:bwp-flow/" +\r
+                    "mef-interfaces:bw-profile]" +\r
+                    "[mef-global:ebs >= current()/../../" +\r
+                    "max-svc-frame-size])" {\r
+              error-message "Ingress Bandwidth Profile Envelope: " +\r
+                    "If EIR > 0, EBS must be greater than or " +\r
+                    "equal to the EVC Max Service Frame Size " +\r
+                    "for the EVC.";\r
+              description\r
+                "Ingress Bandwidth Profile Envelope: " +\r
+                "If EIR > 0, EBS must be greater than or equal " +\r
+                "to the EVC Max Service Frame Size for the EVC.";\r
+            }\r
+            must "not(/mef-interfaces:mef-interfaces/" +\r
+                    "mef-interfaces:unis/mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-envelopes) or " +\r
+                    "(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:egress-bwp-flows/" +\r
+                    "mef-global:bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-envelopes/" +\r
+                    "mef-interfaces:envelope/mef-interfaces:" +\r
+                    "bwp-flows/mef-interfaces:bwp-flow/" +\r
+                    "mef-interfaces:bw-profile]" +\r
+                    "[mef-global:eir = 0]) or " +\r
+                    "(/mef-global:mef-global/mef-global:profiles/" +\r
+                    "mef-global:egress-bwp-flows/mef-global:" +\r
+                    "bwp-flow" +\r
+                    "[mef-global:bw-profile = /mef-interfaces:" +\r
+                    "mef-interfaces/mef-interfaces:unis/" +\r
+                    "mef-interfaces:uni" +\r
+                    "[mef-interfaces:uni-id = current()/" +\r
+                    "mef-services:uni-id]" +\r
+                    "/mef-interfaces:egress-envelopes/" +\r
+                    "mef-interfaces:envelope/mef-interfaces:" +\r
+                    "bwp-flows/mef-interfaces:bwp-flow/" +\r
+                    "mef-interfaces:bw-profile]" +\r
+                    "[mef-global:ebs >= current()/../../" +\r
+                    "max-svc-frame-size])" {\r
+              error-message "Egress Bandwidth Profile Envelope: " +\r
+                    "If EIR > 0, EBS must be greater than or " +\r
+                    "equal to the EVC Max Service Frame Size " +\r
+                    "for the EVC.";\r
+              description\r
+                "Egress Bandwidth Profile Envelope: " +\r
+                "If EIR > 0, EBS must be greater than or " +\r
+                "equal to the EVC Max Service Frame Size " +\r
+                "for the EVC.";\r
+            }\r
+            key "uni-id";\r
+            description\r
+              "EVC Flow Points and EVC-UNI List defines the " +\r
+              "roles of each UNI in the Service. One UNI can " +\r
+              "be used by 0 or more EVCs.";\r
+            reference "[MEF10.3] Section 8.3. " +\r
+                    "[MEF7.3] Section 12.2.2.";\r
+            container evc-uni-ce-vlans {\r
+              description\r
+                "EVC Per UNI CE-VLAN IDs.";\r
+              list evc-uni-ce-vlan {\r
+                key "vid";\r
+                description\r
+                  "A list of the CE-VLAN IDs mapped to this UNI " +\r
+                  "for this EVC.";\r
+                reference "[MEF10.3] Section 8.6.1, [R24] " +\r
+                        "[R25], Section 9.10.2, Section 9.12, " +\r
+                        "[R76], [R81].";\r
+                leaf vid {\r
+                  type leafref {\r
+                    path "/mef-interfaces:mef-interfaces/" +\r
+                            "mef-interfaces:unis/" +\r
+                            "mef-interfaces:uni" +\r
+                            "[mef-interfaces:uni-id = " +\r
+                            "current()/../../../uni-id]" +\r
+                            "/mef-interfaces:ce-vlans/" +\r
+                            "mef-interfaces:ce-vlan/" +\r
+                            "mef-interfaces:vid";\r
+                  }\r
+                  must "not(current()/../../" +\r
+                        "evc-uni-ce-vlan[2]) or " +\r
+                        "(count(../../../../uni/evc-uni-ce-vlans/" +\r
+                        "evc-uni-ce-vlan" +\r
+                        "[vid = current()]) = " +\r
+                        "count(../../../../uni))" {\r
+                    error-message "If more than one CE-VLAN ID " +\r
+                            "is configured for a UNI as part of " +\r
+                            "an EVC, every CE VLAN-ID mapped to " +\r
+                            "that EVC must be configured for all " +\r
+                            "UNIs within that EVC.";\r
+                    description\r
+                      "If more than one CE-VLAN ID is configured " +\r
+                      "for a UNI as part of an EVC, every " +\r
+                      "CE VLAN-ID mapped to that EVC must be " +\r
+                      "configured for all UNIs within that EVC.";\r
+                  }\r
+                  description\r
+                    "VLAN Identifier.";\r
+                }\r
+              }\r
+            }\r
+            container ingress-bwp-flows-per-cos {\r
+              presence "Use Ingress Bandwidth Profiles Per CoS";\r
+              description\r
+                "EVC Per UNI Class of Service Identifiers " +\r
+                "corresponding to this EVC's Ingress Bandwidth " +\r
+                "Profile Flows.";\r
+              leaf coupling-enabled {\r
+                type boolean;\r
+                default "false";\r
+                description\r
+                  "EVC Per UNI Envelope Coupling Flag (CF) " +\r
+                  "attribute.";\r
+                reference "[MEF10.3] Section 12.1.";\r
+              }\r
+              list bwp-flow-per-cos {\r
+                key "cos-name";\r
+                description\r
+                  "EVC Per UNI: The list of Class of Service " +\r
+                  "Identifiers corresponding to this UNI's " +\r
+                  "Ingress Bandwidth Profile Flow.";\r
+                leaf cos-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/mef-global:" +\r
+                            "profiles/mef-global:cos-names/" +\r
+                            "mef-global:cos-name/mef-global:name";\r
+                  }\r
+                  description\r
+                    "EVC Per UNI: Class of Service Identifier " +\r
+                    "for this Bandwidth Profile Flow.";\r
+                  reference "[MEF7.3] Section 12.1.2.";\r
+                }\r
+                leaf bw-profile {\r
+                  type leafref {\r
+                    path "/mef-interfaces:mef-interfaces/" +\r
+                            "mef-interfaces:unis/" +\r
+                            "mef-interfaces:uni" +\r
+                            "[mef-interfaces:uni-id = " +\r
+                            "current()/../../../uni-id]" +\r
+                            "/mef-interfaces:ingress-envelopes/" +\r
+                            "mef-interfaces:envelope/" +\r
+                            "mef-interfaces:env-id";\r
+                  }\r
+                  mandatory true;\r
+                  description\r
+                    "EVC Per UNI: Ingress Bandwidth Profile " +\r
+                    "Envelope Per CoS ID. If this parameter " +\r
+                    "is not configured (ie. 'No') this " +\r
+                    "setting is configured else at the " +\r
+                    "UNI Level.";\r
+                  reference "[MEF10.3] Section 10.6, Table 28. " +\r
+                        "[MEF7.3] Section 12.1.2.";\r
+                }\r
+              }\r
+            }\r
+            container egress-bwp-flows-per-eec {\r
+              presence "Using Egress Bandwidth Profiles Per " +\r
+                    "Egress Equivalence Class";\r
+              description\r
+                "EVC Per UNI: The Egress Equivalence Class " +\r
+                "Identifiers corresponding to this EVC's Egress " +\r
+                "Bandwidth Profile Flows.";\r
+              leaf coupling-enabled {\r
+                type boolean;\r
+                default "false";\r
+                description\r
+                  "EVC Per UNI: The Envelope Coupling Flag (CF) " +\r
+                  "attribute.";\r
+                reference "[MEF10.3] Section 12.1.";\r
+              }\r
+              list bwp-flow-per-eec {\r
+                key "eec-name";\r
+                description\r
+                  "EVC Per UNI: The list of Egress Equivalence " +\r
+                  "Class Identifiers corresponding to this " +\r
+                  "EVC's Egress Bandwidth Profile Flow.";\r
+                leaf eec-name {\r
+                  type leafref {\r
+                    path "/mef-global:mef-global/mef-global:" +\r
+                            "profiles/mef-global:eec-names/" +\r
+                            "mef-global:eec-name/mef-global:name";\r
+                  }\r
+                  description\r
+                    "EVC Per UNI: Egress Equivalence Class " +\r
+                    "Identifier for this Bandwidth Profile Flow.";\r
+                  reference "[MEF7.3] Section 12.1.2.";\r
+                }\r
+                leaf bw-profile {\r
+                  type leafref {\r
+                    path "/mef-interfaces:mef-interfaces/" +\r
+                            "mef-interfaces:unis/" +\r
+                            "mef-interfaces:uni" +\r
+                            "[mef-interfaces:uni-id = " +\r
+                            "current()/../../../uni-id]" +\r
+                            "/mef-interfaces:egress-envelopes/" +\r
+                            "mef-interfaces:envelope/" +\r
+                            "mef-interfaces:env-id";\r
+                  }\r
+                  mandatory true;\r
+                  description\r
+                    "EVC Per UNI: Egress Bandwidth Profile " +\r
+                    "Envelope Per Equivance Class. If this " +\r
+                    "parameter is not configured (ie. 'No') " +\r
+                    "this setting is configured else at the " +\r
+                    "UNI Level.";\r
+                  reference "[MEF10.3] Section 10.6, Table 28. " +\r
+                        "[MEF7.3] Section 12.1.2.";\r
+                }\r
+              }\r
+            }\r
+            container status {\r
+              description\r
+                "EVC Per UNI: This status group is related to " +\r
+                "the MEF 7.3 Service Endpoint";\r
+              leaf oper-state-enabled {\r
+                type boolean;\r
+                default "false";\r
+                config false;\r
+                description\r
+                  "EVC Per UNI: Operational Status of the " +\r
+                  "Virtual Connection as Enabled/Disabled.";\r
+                reference "[MEF15]. [MEF7.3] Section 11.2.1.";\r
+              }\r
+              leaf available-status {\r
+                type mef-types:svc-endpoint-availability-type;\r
+                default "not-installed";\r
+                config false;\r
+                description\r
+                  "EVC Per UNI: Availability Status of the " +\r
+                  "Virtual Connection.";\r
+                reference "[MEF15]. [MEF7.3] Section 11.2.1.";\r
+              }\r
+            }\r
+            leaf uni-id {\r
+              type leafref {\r
+                path "/mef-interfaces:mef-interfaces/" +\r
+                        "mef-interfaces:unis/mef-interfaces:uni/" +\r
+                        "mef-interfaces:uni-id";\r
+              }\r
+              description\r
+                "EVC Per UNI: The UNI ID paired with the EVC ID " +\r
+                "in the containing list.";\r
+              reference "[MEF10.3] Section 8.3, Section 10.1.  " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf role {\r
+              type mef-types:evc-uni-role-type;\r
+              mandatory true;\r
+              description\r
+                "EVC Per UNI: The UNI Role MUST have the value " +\r
+                "of either 'root' or 'leaf'.";\r
+              reference "[MEF10.3] [R4], [R5], [R10], [R11], " +\r
+                    "[R12]. [MEF7.3] Section 12.2.2.";\r
+            }\r
+            leaf admin-state-enabled {\r
+              type boolean;\r
+              default "true";\r
+              description\r
+                "EVC Per UNI: Locked/Unlocked is inconsistent " +\r
+                "with Oper Status and will be confusing.";\r
+              reference "[MEF15]. [MEF7.3] Section 11.2.1.";\r
+            }\r
+            leaf color-id {\r
+              type mef-types:cos-color-identifier-type;\r
+              description\r
+                "EVC Per UNI: The Color Identifier for " +\r
+                "Service Frames.";\r
+              reference "[MEF10.3] Section 10.3. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf data-svc-frm-cos {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:profiles/" +\r
+                        "mef-global:cos/mef-global:cos-profile/" +\r
+                        "mef-global:id";\r
+              }\r
+              must "not(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:cos/" +\r
+                    "mef-global:cos-profile" +\r
+                    "[mef-global:id = current()]" +\r
+                    "/mef-global:cos-pcp) or " +\r
+                    "((/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:cos/" +\r
+                    "mef-global:cos-profile" +\r
+                    "[mef-global:id = current()]" +\r
+                    "/mef-global:cos-pcp) and " +\r
+                    "((../color-id = 'pcp') or " +\r
+                    "(../color-id = 'dei')) )" {\r
+                error-message "When the Class of Service " +\r
+                        "Identifier is based on PCP for a " +\r
+                        "given EVC at a given UNI, the Color " +\r
+                        "Identifier must be based on either " +\r
+                        "DEI or PCP.";\r
+                description\r
+                  "When the Class of Service Identifier is " +\r
+                  "based on PCP for a given EVC at a given UNI, " +\r
+                  "the Color Identifier must be based on either " +\r
+                  "DEI or PCP.";\r
+              }\r
+              must "not(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:cos/mef-global:" +\r
+                    "cos-profile" +\r
+                    "[mef-global:id = current()]/mef-global:" +\r
+                    "cos-dscp) or " +\r
+                    "((/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:cos/mef-global:" +\r
+                    "cos-profile" +\r
+                    "[mef-global:id = current()]/mef-global:" +\r
+                    "cos-dscp) and " +\r
+                    "(../color-id = 'dscp'))" {\r
+                error-message "When the Class of Service " +\r
+                        "Identifier is based on DSCP for a " +\r
+                        "given EVC at a given UNI, the Color " +\r
+                        "Identifier must be based DSCP.";\r
+                description\r
+                  "When the Class of Service Identifier is based " +\r
+                  "on DSCP for a given EVC at a given UNI, the " +\r
+                  "Color Identifier must be based DSCP.";\r
+              }\r
+              description\r
+                "EVC Per UNI: Ingress Data Service Frame " +\r
+                "CoS Profile.";\r
+              reference "[MEF10.3] Section 8.8, Section 10.2. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf l2cp-svc-frm-cos {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:" +\r
+                        "profiles/mef-global:l2cp-cos/mef-global:" +\r
+                        "l2cp-profile/mef-global:id";\r
+              }\r
+              description\r
+                "EVC Per UNI: Ingress Layer 2 Control Protocol " +\r
+                "Processing.";\r
+              reference "[MEF10.3] Section 8.8, Section 10.2. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf soam-svc-frm-cos {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:profiles/" +\r
+                        "mef-global:cos/mef-global:cos-profile/" +\r
+                        "mef-global:id";\r
+              }\r
+              must "(not(.) and not(../data-svc-frm-cos)) or " +\r
+                    "(. = ../data-svc-frm-cos)" {\r
+                error-message "For a given EVC at a given UNI, " +\r
+                        "the basis for the Class of Service " +\r
+                        "Identifier for ingress SOAM Service " +\r
+                        "Frames must be the same as that for " +\r
+                        "ingress Data Service Frames.";\r
+                description\r
+                  "For a given EVC at a given UNI, the basis " +\r
+                  "for the Class of Service Identifier for " +\r
+                  "ingress SOAM Service Frames must be the " +\r
+                  "same as that for ingress Data Service Frames.";\r
+              }\r
+              description\r
+                "EVC Per UNI: Ingress SOAM Service Frames.";\r
+              reference "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf data-svc-frm-eec {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:profiles/" +\r
+                        "mef-global:eec/mef-global:eec-profile/" +\r
+                        "mef-global:id";\r
+              }\r
+              must "not(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:eec/mef-global:" +\r
+                    "eec-profile" +\r
+                    "[mef-global:id = current()]" +\r
+                    "/mef-global:eec-pcp) or " +\r
+                    "((/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:eec/mef-global:" +\r
+                    "eec-profile" +\r
+                    "[mef-global:id = current()]" +\r
+                    "/mef-global:eec-pcp) and " +\r
+                    "((../color-id = 'pcp') or " +\r
+                    "(../color-id = 'dei')) )" {\r
+                error-message "When the Egress Equivalence " +\r
+                        "Class Identifier is based on PCP " +\r
+                        "for a given EVC at a given UNI, " +\r
+                        "the Color Identifier must be based " +\r
+                        "on either DEI or PCP.";\r
+                description\r
+                  "When the Egress Equivalence Class Identifier " +\r
+                  "is based on PCP for a given EVC at a " +\r
+                  "given UNI, the Color Identifier must " +\r
+                  "be based on either DEI or PCP.";\r
+              }\r
+              must "not(/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:eec/mef-global:" +\r
+                    "eec-profile" +\r
+                    "[mef-global:id = current()]" +\r
+                    "/mef-global:eec-dscp) or " +\r
+                    "((/mef-global:mef-global/mef-global:" +\r
+                    "profiles/mef-global:eec/mef-global:" +\r
+                    "eec-profile" +\r
+                    "[mef-global:id = current()]" +\r
+                    "/mef-global:eec-dscp) and " +\r
+                    "(../color-id = 'dscp'))" {\r
+                error-message "When the Egress Equivalence " +\r
+                        "Class Identifier is based on DSCP for " +\r
+                        "a given EVC at a given UNI, the Color " +\r
+                        "Identifier must be based DSCP.";\r
+                description\r
+                  "When the Egress Equivalence Class Identifier " +\r
+                  "is based on DSCP for a given EVC at a given " +\r
+                  "UNI, the Color Identifier must be based DSCP.";\r
+              }\r
+              description\r
+                "EVC Per UNI: Egress Data Service Frame Processing.";\r
+              reference "[MEF10.3] Section 10.4. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf l2cp-svc-frm-eec {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:profiles/" +\r
+                        "mef-global:l2cp-eec/mef-global:" +\r
+                        "l2cp-profile/mef-global:id";\r
+              }\r
+              description\r
+                "EVC Per UNI: Egress Layer 2 Control Protocol " +\r
+                "Processing.";\r
+              reference "[MEF10.3] Section 10.4. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf soam-svc-frm-eec {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:" +\r
+                        "profiles/mef-global:eec/mef-global:" +\r
+                        "eec-profile/mef-global:id";\r
+              }\r
+              must "(not(.) and not(../data-svc-frm-eec)) or " +\r
+                    "(. = ../data-svc-frm-eec)" {\r
+                error-message "For a given EVC at a given UNI, " +\r
+                        "the basis for the Egress Equivalence " +\r
+                        "Class Identifier for egress SOAM " +\r
+                        "Service Frames must be the same as " +\r
+                        "that for egress Data Service Frames.";\r
+                description\r
+                  "For a given EVC at a given UNI, the basis " +\r
+                  "for the Egress Equivalence Class Identifier " +\r
+                  "for egress SOAM Service Frames must be " +\r
+                  "the same as that for egress Data " +\r
+                  "Service Frames.";\r
+              }\r
+              description\r
+                "EVC Per UNI: Egress SOAM Service Frames.";\r
+              reference "[MEF10.3] Section 10.4. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf ingress-bw-profile-per-evc {\r
+              type leafref {\r
+                path "/mef-interfaces:mef-interfaces/" +\r
+                        "mef-interfaces:unis/" +\r
+                        "mef-interfaces:uni" +\r
+                        "[mef-interfaces:uni-id = " +\r
+                        "current()/../uni-id]" +\r
+                        "/mef-interfaces:ingress-envelopes/" +\r
+                        "mef-interfaces:envelope/" +\r
+                        "mef-interfaces:env-id";\r
+              }\r
+              description\r
+                "EVC Per UNI: Ingress Bandwidth Profile " +\r
+                "Envelope Per EVC. If this parameter is " +\r
+                "not configured (ie. 'No') this setting " +\r
+                "is configured else at the UNI Level.";\r
+              reference "[MEF10.3] Section 10.5. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf egress-bw-profile-per-evc {\r
+              type leafref {\r
+                path "/mef-interfaces:mef-interfaces/" +\r
+                        "mef-interfaces:unis/" +\r
+                        "mef-interfaces:uni" +\r
+                        "[mef-interfaces:uni-id = " +\r
+                        "current()/../uni-id]" +\r
+                        "/mef-interfaces:egress-envelopes/" +\r
+                        "mef-interfaces:envelope/mef-interfaces:" +\r
+                        "env-id";\r
+              }\r
+              description\r
+                "EVC Per UNI: Egress Bandwidth Profile Envelope " +\r
+                "Per EVC. If this parameter is not configured " +\r
+                "(ie. 'No') this setting is configured else at " +\r
+                "the UNI Level.";\r
+              reference "[MEF10.3] Section 10.7. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf src-mac-addr-limit-enabled {\r
+              type boolean;\r
+              default "false";\r
+              description\r
+                "EVC Per UNI: Source MAC Address Limit " +\r
+                "Enable / Disable. If Enabled, the values " +\r
+                "for the Source MAC Address Limit and Source " +\r
+                "MAC Address Interval must be set.";\r
+              reference "[MEF10.3] Section 10.9. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf src-mac-addr-limit {\r
+              type uint32 {\r
+                range "1..max";\r
+              }\r
+              description\r
+                "EVC Per UNI: Source MAC Address Limit. " +\r
+                "This value is used when the Source MAC Address " +\r
+                "Limit Enabled is true.";\r
+              reference "[MEF10.3] Section 10.9.";\r
+            }\r
+            leaf src-mac-addr-limit-interval {\r
+              type yang:timeticks;\r
+              default "0";\r
+              description\r
+                "EVC Per UNI: Source MAC Address Limit " +\r
+                "Interval. This value is used when the " +\r
+                "Source MAC Address Limit Enabled is true.";\r
+              reference "[MEF10.3] Section 10.9.";\r
+            }\r
+            leaf test-meg-enabled {\r
+              type boolean;\r
+              default "false";\r
+              description\r
+                "EVC Per UNI: Test MEG Enabled / Disabled.";\r
+              reference "[MEF10.3] Section 10.10. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf test-meg {\r
+              type mef-types:identifier45;\r
+              description\r
+                "EVC Per UNI: Test MEG Identifier.";\r
+              reference "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf subscriber-meg-mip-enabled {\r
+              type boolean;\r
+              default "false";\r
+              description\r
+                "EVC Per UNI: Subscriber MEG MIP " +\r
+                "Enabled / Disabled.";\r
+              reference "[MEF10.3] Section 10.11. " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf subscriber-meg-mip {\r
+              type mef-types:identifier45;\r
+              description\r
+                "EVC Per UNI: Subscriber MEG MIP Identifier.";\r
+              reference "[MEF7.3] Section 12.1.2.";\r
+            }\r
+          }\r
+        }\r
+        container status {\r
+          description\r
+            "This status group is related to the MEF 7.3 Virtual " +\r
+            "Connection";\r
+          leaf oper-state-enabled {\r
+            type boolean;\r
+            default "false";\r
+            config false;\r
+            description\r
+              "EVC Operational Status of the Virtual Connection " +\r
+              "as Enabled/Disabled.";\r
+            reference "[MEF7.3] Section 11.1.1.";\r
+          }\r
+          leaf available-status {\r
+            type mef-types:virt-cx-availability-type;\r
+            default "not-installed";\r
+            config false;\r
+            description\r
+              "EVC Availability Status of the Virtual Connection.";\r
+            reference "[MEF7.3] Section 11.1.1.";\r
+          }\r
+        }\r
+        container sls-inclusions-by-cos {\r
+          description\r
+            "SLS Inclusions by CoS: For this EVC, the following " +\r
+            "CoS Names/Labels are applicable.";\r
+          list sls-inclusion-by-cos {\r
+            key "cos-name";\r
+            description\r
+              "CoS Name.";\r
+            leaf cos-name {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:profiles/" +\r
+                        "mef-global:cos-names/mef-global:" +\r
+                        "cos-name/mef-global:name";\r
+              }\r
+              description\r
+                "EVC: This attribute identifies the name of " +\r
+                "a class of service (CoS) instance to be used " +\r
+                "for EVC Performance.";\r
+            }\r
+          }\r
+        }\r
+        container sls-uni-inclusions {\r
+          presence "EVC: Defines the EVC Flow Points (UNI) Pairs " +\r
+                "that must conform to the EVC's SLS Performance " +\r
+                "Metrics.";\r
+          description\r
+            "SLS UNI Inclusions List. The following pairs of UNI " +\r
+            "Interconnections are to required to meet the " +\r
+            "SLS Performance Objectives. Configing both SLS " +\r
+            "UNI Inclusions and SLS UNI Exclusions is not " +\r
+            "permitted.";\r
+          list sls-uni-inclusion-set {\r
+            must "uni-id1 != uni-id2" {\r
+              error-message "The two UNI IDs for a given " +\r
+                    "inclusion cannot be the same.";\r
+              description\r
+                "The two UNI IDs for a given inclusion " +\r
+                "cannot be the same.";\r
+            }\r
+            must "(../../evc-type != 'rooted-multipoint') or " +\r
+                    "((../../evc-type = 'rooted-multipoint') " +\r
+                    "and " +\r
+                    "not((../../unis/uni[uni-id = " +\r
+                    "current()/uni-id1]/role = 'leaf') and " +\r
+                    "(../../unis/uni[uni-id = current()/uni-id2]" +\r
+                    "/role = 'leaf')))" {\r
+              error-message "If EVC Type is Rooted-Multipoint, " +\r
+                    "sls-uni-inclusion UNI Pairs cannot both " +\r
+                    "be role 'leaf'.";\r
+              description\r
+                "If EVC Type is Rooted-Multipoint, " +\r
+                "sls-uni-inclusion UNI Pairs cannot " +\r
+                "both be role 'leaf'.";\r
+            }\r
+            key "pm-type pm-id uni-id1 uni-id2";\r
+            description\r
+              "EVC: Defines the EVC Flow Points (UNI) Pairs that " +\r
+              "must conform to the EVC's SLS Performance " +\r
+              "Metrics. Use of this list indicates that a " +\r
+              "complete set of UNI Pairs has been specified " +\r
+              "for the Performance Metrics defined in the " +\r
+              "selected SLS.";\r
+            leaf pm-type {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:slss/" +\r
+                        "mef-global:sls" +\r
+                        "[mef-global:sls-id = current()/../../../" +\r
+                        "evc-performance-sls]" +\r
+                        "/mef-global:perf-objs/mef-global:" +\r
+                        "perf-obj/mef-global:pm-type";\r
+              }\r
+              description\r
+                "EVC: Performance Metric.";\r
+              reference "[MEF10.3] Section 8.8.";\r
+            }\r
+            leaf pm-id {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:slss/" +\r
+                        "mef-global:sls" +\r
+                        "[mef-global:sls-id = current()/../../../" +\r
+                        "evc-performance-sls]" +\r
+                        "/mef-global:perf-objs/mef-global:perf-obj" +\r
+                        "[mef-global:pm-type = current()/../" +\r
+                        "pm-type]" +\r
+                        "/mef-global:pm-id";\r
+              }\r
+              description\r
+                "EVC: This is a friendly name for specific " +\r
+                "performance profile.";\r
+            }\r
+            leaf uni-id1 {\r
+              type leafref {\r
+                path "../../../unis/uni/uni-id";\r
+              }\r
+              description\r
+                "EVC: The UNI ID paired with the EVC ID in the " +\r
+                "containing list.";\r
+              reference "[MEF10.3] Section 8.3, Section 10.1.  " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf uni-id2 {\r
+              type leafref {\r
+                path "../../../unis/uni/uni-id";\r
+              }\r
+              description\r
+                "EVC: The UNI ID paired with the EVC ID in the " +\r
+                "containing list.";\r
+              reference "[MEF10.3] Section 8.3, Section 10.1.  " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+          }\r
+        }\r
+        container sls-uni-exclusions {\r
+          presence "Not all EVC Flow Points (UNI) must conform " +\r
+                "to the EVC SLS Performance Metrics.";\r
+          description\r
+            "EVC: Not all EVC Flow Points (UNI) must conform to " +\r
+            "the EVC SLS Performance Metrics. Use of this " +\r
+            "list indicates that all UNI Pairs EXCEPT for " +\r
+            "the ones indicated (per Performance Metric) must " +\r
+            "conform to the SLS.";\r
+          list sls-uni-exclusion-set {\r
+            must "uni-id1 != uni-id2" {\r
+              error-message "The two UNI IDs for a given " +\r
+                    "exclusion cannot be the same.";\r
+              description\r
+                "The two UNI IDs for a given exclusion cannot " +\r
+                "be the same as these pairs are invalid as " +\r
+                "defined in MEF 10.3.";\r
+            }\r
+            key "pm-type pm-id uni-id1 uni-id2";\r
+            description\r
+              "SLS UNI Exclusions List. The following pairs " +\r
+              "of UNI Interconnections are not required " +\r
+              "meet the SLS Performance Objectives. " +\r
+              "Configing both SLS UNI Inclusions and SLS " +\r
+              "UNI Exclusions is not permitted.";\r
+            leaf pm-type {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:" +\r
+                        "slss/mef-global:sls" +\r
+                        "[mef-global:sls-id = current()/../../../" +\r
+                        "evc-performance-sls]" +\r
+                        "/mef-global:perf-objs/mef-global:" +\r
+                        "perf-obj/mef-global:pm-type";\r
+              }\r
+              description\r
+                "EVC: Performance Metric.";\r
+              reference "[MEF10.3] Section 8.8.";\r
+            }\r
+            leaf pm-id {\r
+              type leafref {\r
+                path "/mef-global:mef-global/mef-global:slss/" +\r
+                        "mef-global:sls" +\r
+                        "[mef-global:sls-id = current()/../../../" +\r
+                        "evc-performance-sls]" +\r
+                        "/mef-global:perf-objs/mef-global:perf-obj" +\r
+                        "[mef-global:pm-type = current()/../" +\r
+                        "pm-type]" +\r
+                        "/mef-global:pm-id";\r
+              }\r
+              description\r
+                "EVC: This is a friendly name for specific " +\r
+                "performance profile.";\r
+            }\r
+            leaf uni-id1 {\r
+              type leafref {\r
+                path "../../../unis/uni/uni-id";\r
+              }\r
+              description\r
+                "EVC: The UNI ID paired with the EVC ID in the " +\r
+                "containing list.";\r
+              reference "[MEF10.3] Section 8.3, Section 10.1.  " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+            leaf uni-id2 {\r
+              type leafref {\r
+                path "../../../unis/uni/uni-id";\r
+              }\r
+              description\r
+                "EVC: The UNI ID paired with the EVC ID in the " +\r
+                "containing list.";\r
+              reference "[MEF10.3] Section 8.3, Section 10.1.  " +\r
+                    "[MEF7.3] Section 12.1.2.";\r
+            }\r
+          }\r
+        }\r
+        leaf evc-id {\r
+          type mef-types:evc-id-type;\r
+          mandatory true;\r
+          description\r
+            "The EVC ID must be unique across all EVCs in the CEN." +\r
+            " The EVC ID must be non-NULL.";\r
+          reference "[MEF10.3] Section 8.2 [R7]. " +\r
+                "[MEF7.3] Section 11.1.1, Section 12.2.2.";\r
+        }\r
+        leaf evc-status {\r
+          type mef-types:evc-status-type;\r
+          default "inactive";\r
+          config false;\r
+          description\r
+            "EVC Operational Status.";\r
+          reference "[MEF16] Section 5.3.";\r
+        }\r
+        leaf evc-type {\r
+          type mef-types:evc-type;\r
+          must "(. != 'point-to-point') or " +\r
+                "((. = 'point-to-point') and " +\r
+                "(count(../unis/uni[role = 'leaf']) = 0))" {\r
+            error-message "If EVC Type is Point-to-Point, all " +\r
+                    "UNI Roles must be root.";\r
+            description\r
+              "If EVC Type is Point-to-Point, all UNI Roles must " +\r
+              "be root.";\r
+          }\r
+          must "(. != 'multipoint-to-multipoint') or " +\r
+                "((. = 'multipoint-to-multipoint') and " +\r
+                "(count(../unis/uni[role = 'leaf']) = 0))" {\r
+            error-message "If EVC Type is " +\r
+                    "Multipoint-to-Multipoint, all UNI Roles " +\r
+                    "must be root.";\r
+            description\r
+              "If EVC Type is Multipoint-to-Multipoint, all UNI " +\r
+              "Roles must be root.";\r
+          }\r
+          must "(. != 'rooted-multipoint') or " +\r
+                "((. = 'rooted-multipoint') and " +\r
+                "(count(../unis/uni[role = 'root']) > 0) )" {\r
+            error-message "If EVC Type is Rooted-Multipoint, one " +\r
+                    "or more UNI Roles must be root.";\r
+            description\r
+              "If EVC Type is Rooted-Multipoint, one or more " +\r
+              "UNI Roles must be root.";\r
+          }\r
+          must "(. != 'point-to-point') or " +\r
+                "((. = 'point-to-point') and " +\r
+                "(count(../unis/uni) = 2))" {\r
+            error-message "If EVC Type is Point-to-Point, there " +\r
+                    "must be exactly 2 UNI configured for the EVC.";\r
+            description\r
+              "If EVC Type is Point-to-Point, there must be " +\r
+              "exactly 2 UNI configured for the EVC.";\r
+          }\r
+          must "(. != 'multipoint-to-multipoint') or " +\r
+                "((. = 'multipoint-to-multipoint') and " +\r
+                "(count(../unis/uni) > 1) and " +\r
+                "(count(../unis/uni) <= ../max-uni-count))" {\r
+            error-message "If EVC Type is " +\r
+                    "Multipoint-to-Multipoint, " +\r
+                    "there must be 2 or more UNI configured " +\r
+                    "for the EVC.";\r
+            description\r
+              "If EVC Type is Multipoint-to-Multipoint, " +\r
+              "there must be 2 or more UNI configured for " +\r
+              "the EVC.";\r
+          }\r
+          must "(. != 'rooted-multipoint') or " +\r
+                "((. = 'rooted-multipoint') and " +\r
+                "(count(../unis/uni) > 1) and " +\r
+                "(count(../unis/uni) <= ../max-uni-count))" {\r
+            error-message "If EVC Type is Rooted-Multipoint, " +\r
+                    "there must be 2 or more UNI configured for the EVC.";\r
+            description\r
+              "If EVC Type is Rooted-Multipoint, there must " +\r
+              "be 2 or more UNI configured for the EVC.";\r
+          }\r
+          must "(. != 'point-to-point') or " +\r
+                "((. = 'point-to-point') and " +\r
+                "(../max-uni-count = 2))" {\r
+            error-message "If EVC Type is Point-to-Point, " +\r
+                    "the value of max-uni-count must be 2.";\r
+            description\r
+              "If EVC Type is Point-to-Point, the value of " +\r
+              "max-uni-count must be 2.";\r
+          }\r
+          must "(. != 'multipoint-to-multipoint') or " +\r
+                "((. = 'multipoint-to-multipoint') and " +\r
+                "(../max-uni-count > 2))" {\r
+            error-message "If EVC Type is " +\r
+                    "Multipoint-to-Multipoint, the value of " +\r
+                    "max-uni-count must be at least 3.";\r
+            description\r
+              "If EVC Type is Multipoint-to-Multipoint, the " +\r
+              "value of max-uni-count must be at least 3.";\r
+          }\r
+          must "(. != 'rooted-multipoint') or " +\r
+                "((. = 'rooted-multipoint') and " +\r
+                "(../max-uni-count > 2))" {\r
+            error-message "If EVC Type is Rooted-Multipoint, " +\r
+                    "the value of max-uni-count must be at " +\r
+                    "least 3.";\r
+            description\r
+              "If EVC Type is Rooted-Multipoint, the value " +\r
+              "of max-uni-count must be at least 3.";\r
+          }\r
+          mandatory true;\r
+          description\r
+            "This EVC attribute describes the EVC as either " +\r
+            "Multipoint-To-Multipoint, Point-To-Point, or " +\r
+            "Rooted-Multipoint.";\r
+          reference "[MEF10.3] Section 8.1, [R4], [R5], " +\r
+                "[R10], [R11], [R12], [R13] and [R14]. " +\r
+                "[MEF7.3] Section 12.2.2.";\r
+        }\r
+        leaf admin-state-enabled {\r
+          type boolean;\r
+          default "true";\r
+          description\r
+            "EVC: Locked/Unlocked is inconsistent with " +\r
+            "Oper Status and will be confusing.";\r
+          reference "[MEF15]. [MEF7.3] Section 11.1.1.";\r
+        }\r
+        leaf elastic-enabled {\r
+          type boolean;\r
+          default "true";\r
+          description\r
+            "EVC: Elastic Enabled/Disabled.";\r
+          reference "[MEF7.3] Section 11.1.1.";\r
+        }\r
+        leaf elastic-service {\r
+          type mef-types:identifier45;\r
+          description\r
+            "EVC: Related to CE4Cloud Information Model.";\r
+          reference "[MEF7.3] Section 11.1.1.";\r
+        }\r
+        leaf max-uni-count {\r
+          type uint32 {\r
+            range "2..max";\r
+          }\r
+          must "(. > 2) or ((. = 2) and " +\r
+                "(../evc-type = 'point-to-point'))" {\r
+            error-message "If EVC Type is Point-to-Point, the " +\r
+                    "max-uni-count value must be 2.";\r
+            description\r
+              "If EVC Type is Point-to-Point, the max-uni-count " +\r
+              "value must be 2.";\r
+          }\r
+          must "(. = 2) or ((. > 2) and " +\r
+                "((../evc-type = 'multipoint-to-multipoint') or " +\r
+                "(../evc-type = 'rooted-multipoint')))" {\r
+            error-message "If EVC Type is " +\r
+                    "Multipoint-to-Multipoint or " +\r
+                    "Rooted-Multipoint, the max-uni-count value " +\r
+                    "must be at least 3.";\r
+            description\r
+              "If EVC Type is Multipoint-to-Multipoint or " +\r
+              "Rooted-Multipoint, the max-uni-count value " +\r
+              "must be at least 3.";\r
+          }\r
+          default "2";\r
+          description\r
+            "EVC:The Maximum Number of UNIs this EVC can be " +\r
+            "configured for (Default 2).If EVC Type is " +\r
+            "Multipoint-to-Multipoint or Rooted-Multipoint, " +\r
+            "the max-uni-count value must be at least 3. " +\r
+            "This value must be 2 for point-to-point mode.";\r
+          reference "[MEF10.3] [R14]. [MEF7.3] Section 12.2.2.";\r
+        }\r
+        leaf preserve-ce-vlan-id {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "EVC:An EVC with more than one CE-VLAN ID mapping " +\r
+            "to it must have the same list of CE-VLAN IDs " +\r
+            "mapping to the EVC at each UNI in the EVC.";\r
+          reference "[MEF10.3] Section 8.6.1, [R24] [R25], " +\r
+                "Section 9.10.2, Section 9.12, [R81], Figure 20. " +\r
+                "[MEF7.3] Section 12.2.2.";\r
+        }\r
+        leaf cos-preserve-ce-vlan-id {\r
+          type boolean;\r
+          default "false";\r
+          description\r
+            "EVC: Preserve CE-VLAN ID for CoS.";\r
+          reference "[MEF10.3] Section 8.6.2, [R26]. " +\r
+                "[MEF7.3] Section 12.2.2.";\r
+        }\r
+        leaf evc-performance-sls {\r
+          type leafref {\r
+            path "/mef-global:mef-global/mef-global:slss/" +\r
+                    "mef-global:sls/mef-global:sls-id";\r
+          }\r
+          description\r
+            "EVC: EVC-specific performance objectives and " +\r
+            "parameters. Note that an SLS can also specify " +\r
+            "performance objectives spanning more than one EVC. " +\r
+            "By default, all the UNI associated with the EVC " +\r
+            "have this SLS applied for them.";\r
+          reference "[MEF10.3] Section 8.8, Section 10. " +\r
+                "[MEF7.3] Section 12.2.2.";\r
+        }\r
+        leaf unicast-svc-frm-delivery {\r
+          type mef-types:data-svc-frame-delivery-type;\r
+          default "unconditional";\r
+          description\r
+            "EVC: Unicast Data Service Frame Delivery Mode " +\r
+            "(unconditional[default], conditional, or discard).";\r
+          reference "[MEF10.3] Section 8.5.2,[R16], [R17], " +\r
+                "Section 8.8, Section 11. [MEF7.3] Section 12.2.2.";\r
+        }\r
+        leaf multicast-svc-frm-delivery {\r
+          type mef-types:data-svc-frame-delivery-type;\r
+          default "unconditional";\r
+          description\r
+            "EVC: Multicast Data Service Frame Delivery Mode " +\r
+            "(unconditional[default], conditional, or discard).";\r
+          reference "[MEF10.3] Section 8.5.2, [R16], [R18], " +\r
+                "Section 8.8, Section 11. [MEF7.3] Section 12.2.2.";\r
+        }\r
+        leaf broadcast-svc-frm-delivery {\r
+          type mef-types:data-svc-frame-delivery-type;\r
+          default "unconditional";\r
+          description\r
+            "EVC: Broadcast Data Service Frame Delivery Mode " +\r
+            "(unconditional[default], conditional, or discard).";\r
+          reference "[MEF10.3] Section 8.5.2, [R16], [R19], " +\r
+                "Section 8.8, Section 11. [MEF7.3] Section 12.2.2.";\r
+        }\r
+        leaf evc-meg-id {\r
+          type mef-types:identifier45;\r
+          description\r
+            "EVC: Identifies the Maintenance Entity Group (MEG) " +\r
+            "for this EVC.";\r
+          reference "[MEF7.3] Section 12.2.2. MEF 35.1.";\r
+        }\r
+        leaf max-svc-frame-size {\r
+          type mef-types:max-svc-frame-size-type;\r
+          default "1600";\r
+          description\r
+            "EVC: This attribute describes the maximum service " +\r
+            "frame size for the EVC.";\r
+          reference "[MEF10.3] Section 8.9, Section 9.7, [R71], " +\r
+                "[MEF6.2] Section 8.2.2 and MEF 22.1: [D2]. " +\r
+                "[MEF7.3] Section 12.2.2.";\r
+        }\r
+      }\r
+      leaf svc-id {\r
+        type mef-types:retail-svc-id-type;\r
+        description\r
+          "The MEF Service ID is a simple key used to " +\r
+          "distinguish MEF Service Configuration Groups.";\r
+        reference "[MEF10.3] Section 7.";\r
+      }\r
+      leaf sp-id {\r
+        when "/mef-global:mef-global/mef-global:svc-providers" {\r
+          description\r
+            "Only configure when the Global Service Providers " +\r
+            "list has been populated.";\r
+        }\r
+        type leafref {\r
+          path "/mef-global:mef-global/mef-global:svc-providers/" +\r
+                "mef-global:svc-provider/mef-global:sp-id";\r
+        }\r
+        description\r
+          "The MEF Service Provider ID must be globally unique " +\r
+          "as all CENs and Subscribers must be supported by a " +\r
+          "specific Service Provider(SP). A SP can support " +\r
+          "multiple CENs.";\r
+        reference "[MEF10.3] Section 7.";\r
+      }\r
+      leaf svc-type {\r
+        type mef-types:mef-service-type;\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "svc-mux-enabled = 'true']) = 0))" {\r
+          error-message "For EPL, Service Multiplexing must be " +\r
+                "disabled for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EPL, Service Multiplexing must be disabled for " +\r
+            "all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "bundling-enabled = 'true']) = 0))" {\r
+          error-message "For EPL, Bundling must be disabled for " +\r
+                "all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EPL, Bundling must be disabled for all UNIs in " +\r
+            "the EVC UNI List.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/" +\r
+                "mef-services:uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "all-to-one-bundling-enabled = 'false']) = 0))" {\r
+          error-message "For EPL, All-to-One Bundling must be " +\r
+                "enabled for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EPL, All-to-One Bundling must be enabled for " +\r
+            "all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "max-evc-count != 1]) = 0))" {\r
+          error-message "For EPL, Max EVC Count must be 1 for " +\r
+                "all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EPL, Max EVC Count must be 1 for all UNIs " +\r
+            "in the EVC UNI List.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(count(../evc/unis/uni/egress-bwp-flows-per-eec/" +\r
+                "bwp-flow-per-eec) = 0))" {\r
+          error-message "For EPL, Egress Bandwidth Profile per " +\r
+                "Egress Equivalence Class cannot be set for " +\r
+                "all UNIs in the EVC per UNI List.";\r
+          description\r
+            "For EPL, Egress Bandwidth Profile per Egress " +\r
+            "Equivalence Class cannot be set for all UNIs in the " +\r
+            "EVC per UNI List.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(count(../evc/unis/uni" +\r
+                "[src-mac-addr-limit-enabled = 'true']) = 0) )" {\r
+          error-message "For EPL, Source MAC Address Limit must " +\r
+                "be disabled.";\r
+          description\r
+            "For EPL, Source MAC Address Limit must be disabled.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(../evc/evc-type = 'point-to-point'))" {\r
+          error-message "For EPL, EVC Type must be Point-to-Point.";\r
+          description\r
+            "For EPL, EVC Type must be Point-to-Point.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(../evc/unicast-svc-frm-delivery = " +\r
+                "'unconditional'))" {\r
+          error-message "For EPL, unicast-svc-frm-delivery " +\r
+                "must be unconditional.";\r
+          description\r
+            "For EPL, unicast-svc-frm-delivery must be " +\r
+            "unconditional.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(../evc/multicast-svc-frm-delivery = " +\r
+                "'unconditional'))" {\r
+          error-message "For EPL, multicast-svc-frm-delivery " +\r
+                "must be unconditional.";\r
+          description\r
+            "For EPL, multicast-svc-frm-delivery must be " +\r
+            "unconditional.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(../evc/broadcast-svc-frm-delivery = " +\r
+                "'unconditional'))" {\r
+          error-message "For EPL, broadcast-svc-frm-delivery " +\r
+                "must be unconditional.";\r
+          description\r
+            "For EPL, broadcast-svc-frm-delivery must be " +\r
+            "unconditional.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(../evc/preserve-ce-vlan-id = 'true'))" {\r
+          error-message "For EPL, CE-VLAN ID Preservation " +\r
+                "must be enabled.";\r
+          description\r
+            "For EPL, CE-VLAN ID Preservation must be enabled.";\r
+        }\r
+        must "(. != 'epl') or ((. = 'epl') and " +\r
+                "(../evc/cos-preserve-ce-vlan-id = 'true'))" {\r
+          error-message "For EPL, CE-VLAN ID CoS Preservation " +\r
+                "must be enabled.";\r
+          description\r
+            "For EPL, CE-VLAN ID CoS Preservation must be enabled.";\r
+        }\r
+        must "(. != 'evpl') or ((. = 'evpl') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "all-to-one-bundling-enabled = 'true']) = 0))" {\r
+          error-message "For EVPL, All-to-One Bundling must be " +\r
+                "disabled for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EVPL, All-to-One Bundling must be disabled for " +\r
+            "all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'evpl') or ((. = 'evpl') and " +\r
+                "((../evc/unicast-svc-frm-delivery != " +\r
+                "'unconditional') or " +\r
+                "(../evc/multicast-svc-frm-delivery != " +\r
+                "'unconditional') or " +\r
+                "(../evc/broadcast-svc-frm-delivery != " +\r
+                "'unconditional') or " +\r
+                "count(../evc/unis/uni" +\r
+                "[src-mac-addr-limit-enabled = 'true']) = 0))" {\r
+          error-message "For EVPL, Source MAC Address Limit must " +\r
+                "be disabled for all UNIs in the EVC per " +\r
+                "UNI List if all 3 -svc-frm-delivery values " +\r
+                "are unconditional.";\r
+          description\r
+            "For EVPL, Source MAC Address Limit must be disabled " +\r
+            "for all UNIs in the EVC per UNI List if all " +\r
+            "3 -svc-frm-delivery values are unconditional.";\r
+        }\r
+        must "(. != 'evpl') or ((. = 'evpl') and " +\r
+                "(../evc/evc-type = 'point-to-point'))" {\r
+          error-message "For EVPL, EVC Type must be Point-to-Point.";\r
+          description\r
+            "For EVPL, EVC Type must be Point-to-Point.";\r
+        }\r
+        must "(. != 'eplan') or ((. = 'eplan') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "svc-mux-enabled = 'true']) = 0))" {\r
+          error-message "For EP-LAN, Service Multiplexing must " +\r
+                "be disabled for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EP-LAN, Service Multiplexing must be disabled " +\r
+            "for all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'eplan') or ((. = 'eplan') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "bundling-enabled = 'true']) = 0))" {\r
+          error-message "For EP-LAN, Bundling must be disabled " +\r
+                "for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EP-LAN, Bundling must be disabled for all UNIs " +\r
+            "in the EVC UNI List.";\r
+        }\r
+        must "(. != 'eplan') or ((. = 'eplan') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/" +\r
+                "mef-services:uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "all-to-one-bundling-enabled = 'false']) = 0))" {\r
+          error-message "For EP-LAN, All-to-One Bundling " +\r
+                "must be enabled for all UNIs in the " +\r
+                "EVC UNI List.";\r
+          description\r
+            "For EP-LAN, All-to-One Bundling must be enabled " +\r
+            "for all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'eplan') or ((. = 'eplan') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/" +\r
+                "mef-services:uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "max-evc-count != 1]) = 0))" {\r
+          error-message "For EP-LAN, Max EVC Count must be 1 " +\r
+                "for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EP-LAN, Max EVC Count must be 1 for all UNIs in " +\r
+            "the EVC UNI List.";\r
+        }\r
+        must "(. != 'eplan') or ((. = 'eplan') and " +\r
+                "(../evc/evc-type = 'multipoint-to-multipoint'))" {\r
+          error-message "For EP-LAN, EVC Type must be " +\r
+                "Multipoint-to-Multipoint.";\r
+          description\r
+            "For EP-LAN, EVC Type must be " +\r
+            "Multipoint-to-Multipoint.";\r
+        }\r
+        must "(. != 'eplan') or ((. = 'eplan') and " +\r
+                "(../evc/preserve-ce-vlan-id = 'true'))" {\r
+          error-message "For EP-LAN, CE-VLAN ID Preservation " +\r
+                "must be enabled.";\r
+          description\r
+            "For EP-LAN, CE-VLAN ID Preservation must be enabled.";\r
+        }\r
+        must "(. != 'eplan') or ((. = 'eplan') and " +\r
+                "(../evc/cos-preserve-ce-vlan-id = 'true'))" {\r
+          error-message "For EP-LAN, CE-VLAN ID CoS Preservation " +\r
+                "must be enabled.";\r
+          description\r
+            "For EP-LAN, CE-VLAN ID CoS Preservation must be " +\r
+            "enabled.";\r
+        }\r
+        must "(. != 'evplan') or ((. = 'evplan') and " +\r
+                "(../evc/evc-type = 'multipoint-to-multipoint'))" {\r
+          error-message "For EVP-LAN, EVC Type must be " +\r
+                "Multipoint-to-Multipoint.";\r
+          description\r
+            "For EVP-LAN, EVC Type must be " +\r
+            "Multipoint-to-Multipoint.";\r
+        }\r
+        must "(. != 'evplan') or ((. = 'evplan') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "all-to-one-bundling-enabled = 'true']) = 0))" {\r
+          error-message "For EVP-LAN, All-to-One Bundling must " +\r
+                "be disabled for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EVP-LAN, All-to-One Bundling must be disabled " +\r
+            "for all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'eptree') or ((. = 'eptree') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "svc-mux-enabled = 'true']) = 0))" {\r
+          error-message "For EP-TREE, Service Multiplexing " +\r
+                "must be disabled for all UNIs in the " +\r
+                "EVC UNI List.";\r
+          description\r
+            "For EP-TREE, Service Multiplexing must be disabled " +\r
+            "for all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'eptree') or ((. = 'eptree') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "bundling-enabled = 'true']) = 0))" {\r
+          error-message "For EP-TREE, Bundling must be disabled " +\r
+                "for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EP-TREE, Bundling must be disabled for all UNIs " +\r
+            "in the EVC UNI List.";\r
+        }\r
+        must "(. != 'eptree') or ((. = 'eptree') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/" +\r
+                "mef-services:uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "all-to-one-bundling-enabled = 'false']) = 0))" {\r
+          error-message "For EP-TREE, All-to-One Bundling must " +\r
+                "be enabled for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EP-TREE, All-to-One Bundling must be enabled " +\r
+            "for all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'eptree') or ((. = 'eptree') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/" +\r
+                "mef-services:uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "max-evc-count != 1]) = 0))" {\r
+          error-message "For EP-TREE, Max EVC Count must be 1 " +\r
+                "for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EP-TREE, Max EVC Count must be 1 for all UNIs " +\r
+            "in the EVC UNI List.";\r
+        }\r
+        must "(. != 'eptree') or ((. = 'eptree') and " +\r
+                "(../evc/evc-type = 'rooted-multipoint'))" {\r
+          error-message "For EP-TREE, EVC Type must be " +\r
+                "Rooted-Multipoint.";\r
+          description\r
+            "For EP-TREE, EVC Type must be Rooted-Multipoint.";\r
+        }\r
+        must "(. != 'eptree') or ((. = 'eptree') and " +\r
+                "(../evc/preserve-ce-vlan-id = 'true'))" {\r
+          error-message "For EP-TREE, CE-VLAN ID Preservation " +\r
+                "must be enabled.";\r
+          description\r
+            "For EP-TREE, CE-VLAN ID Preservation must be enabled.";\r
+        }\r
+        must "(. != 'eptree') or ((. = 'eptree') and " +\r
+                "(../evc/cos-preserve-ce-vlan-id = 'true'))" {\r
+          error-message "For EP-TREE, CE-VLAN ID " +\r
+                "CoS Preservation must be enabled.";\r
+          description\r
+            "For EP-TREE, CE-VLAN ID CoS Preservation must be " +\r
+            "enabled.";\r
+        }\r
+        must "(. != 'evptree') or ((. = 'evptree') and " +\r
+                "(count(/mef-interfaces:mef-interfaces/" +\r
+                "mef-interfaces:unis/mef-interfaces:uni" +\r
+                "[mef-interfaces:uni-id = current()/../" +\r
+                "mef-services:evc/mef-services:unis/mef-services:" +\r
+                "uni/mef-services:uni-id]" +\r
+                "[mef-interfaces:uni-id/../mef-interfaces:" +\r
+                "all-to-one-bundling-enabled = 'true']) = 0))" {\r
+          error-message "For EVP-TREE, All-to-One Bundling " +\r
+                "must be disabled for all UNIs in the EVC UNI List.";\r
+          description\r
+            "For EVP-TREE, All-to-One Bundling must be disabled " +\r
+            "for all UNIs in the EVC UNI List.";\r
+        }\r
+        must "(. != 'evptree') or ((. = 'evptree') and " +\r
+                "(../evc/evc-type = 'rooted-multipoint'))" {\r
+          error-message "For EVP-TREE, EVC Type must be " +\r
+                "Rooted-Multipoint.";\r
+          description\r
+            "For EVP-TREE, EVC Type must be Rooted-Multipoint.";\r
+        }\r
+        description\r
+          "The MEF Service Type.";\r
+      }\r
+      leaf user-label {\r
+        type mef-types:identifier45;\r
+        description\r
+          "This MEF user label is set by the user to a value " +\r
+          "that is easier to identify than the Service ID.";\r
+      }\r
+      leaf svc-entity {\r
+        type mef-types:service-entity-type;\r
+        default "evc";\r
+        description\r
+          "MEF Service Entity.";\r
+        reference "[MEF12.2] Table 3.";\r
+      }\r
+    }\r
+  }\r
+}
\ No newline at end of file
diff --git a/api/src/main/yang/mef-topology.yang b/api/src/main/yang/mef-topology.yang
new file mode 100644 (file)
index 0000000..d4ab55d
--- /dev/null
@@ -0,0 +1,174 @@
+module mef-topology {\r
+  namespace "http://metroethernetforum.org/ns/yang/mef-topology";\r
+  prefix mef-topology;\r
+  import mef-types {\r
+    prefix mef-types;\r
+  }\r
+  organization "Metro Ethernet Forum";\r
+  contact\r
+    "Web URL: http://metroethernetforum.org/ \\\r
+     E-mail:  mibs@metroethernetforum.org \\\r
+     Postal:  Metro Ethernet Forum \\\r
+              6033 W. Century Boulevard, Suite 1107 \\\r
+              Los Angeles, CA 90045 \\\r
+              U.S.A. \\\r
+     Phone:   +1 310-642-2800 \\\r
+     Fax:     +1 310-642-2808";\r
+  description\r
+    "This module models the NMS level view of the network devices,\r
+     their physical interfaces, and the network topology.\r
+     When the NMS discovers a network device,it is to pull the\r
+     device configuration and operational status as expected for\r
+     an NMS. Once the NMS has a network device's configuration,\r
+     it creates the /mef-topology/devices/device{} entry and\r
+     populates the list of physical interfaces. The Peers entries\r
+     are populated as configuration to reflect physical cabling\r
+     interconnections.Hints could be detected from LLDP Neighbor\r
+     information[802.1AB].\r
+      \r
+     Reference Overview:\r
+     A number of base documents have been used to create\r
+     the MEF Topology YANG Module. The following are the\r
+     abbreviations for the baseline documents:\r
+     [RFC 6991] refers to IETF RFC 6991 'Common YANG Data Types',\r
+     2013-07-15 \r
+     [RFC 6643] refers to IETF RFC 6643 'Translation of Structure\r
+     of Management Information\r
+     Version 2 (SMIv2) MIB Modules to YANG Modules', 2011-11-25 \r
+     [802.1AB] refers to 'Station and Media Access Control\r
+     Connectivity Discovery', IEEE 802.1AB-2009, September 2009\r
+     [802.1q] refers to IEEE 802.1Q-2011 'IEEE Standard for Local\r
+     and metropolitan area networks --Media Access Control (MAC)\r
+     Bridges and Virtual Bridged Local Area Networks, August 2011\r
+     [802-2001] refers to 'IEEE Standard for Local and Metropolitan\r
+     Area Networks: Overview and Architecture', IEEE 802-2001,\r
+     February 2002\r
+     [MEF10.3] refers to MEF 10.3\r
+     'Ethernet Services Attributes Phase 3', October 2013\r
+     [MEF6.2] refers to MEF 6.2\r
+     'EVC Ethernet Services Defintions Phase 3', August 2014\r
+     [MEF40] refers to MEF 40\r
+     'UNI and EVC Definition of Managed Objects', April 2013\r
+     [MEF45] refers to MEF 45 'Multi-CEN L2CP', August 2014\r
+     [MEF7.2] refers to MEF 7.2\r
+     'Carrier Ethernet Management Information Model', April 2013\r
+     [MEF7.3] refers to MEF 7.3\r
+     'Carrier Ethernet Management Information Model',\r
+     Working Draft #1 2015\r
+     [RFC 2737] refers to IETF RFC 2737 'Entity MIB (Version 2)',\r
+     December 1999\r
+     [RFC 2863] refers to IETF RFC 2863 'The Interfaces Group MIB',\r
+     June 2000\r
+     [RFC 3419] refers to IETF RFC 3419\r
+     'Textual Conventions for Transport Addresses', December 2002\r
+     [Y.1731] refers to ITU-T Y.1731\r
+     'OAM functions and mechanisms for Ethernet based networks',\r
+     July 2011\r
+     [Q.840.1] refers to ITU-T Q.840.1\r
+     'Requirements and analysis for NMS-EMS management interface\r
+     of Ethernet over Transport and Metro Ethernet\r
+     Network(EoT/MEN)' March 2007";\r
+  revision 2015-05-26 {\r
+    description\r
+      "Formal Project Review Draft 1.";\r
+    reference "EVC Ethernet Services Definitions YANG Modules " +\r
+            "(MEF XX), TBD";\r
+  }    \r
+      \r
+  container mef-topology {\r
+    description\r
+      "MEF Topology";\r
+    container devices {\r
+      description\r
+        "Network Devices in the CEN.";\r
+      list device {\r
+        key "dev-id";\r
+        description\r
+          "Network Device List.";\r
+        container interfaces {\r
+          description\r
+            "Physical Ports/Interfaces associated with this " +\r
+            "Network Device.";\r
+          list interface {\r
+            key "phy";\r
+            description\r
+              "External Interface for the Network Device.";\r
+            leaf phy {\r
+              type mef-types:identifier45;\r
+              description\r
+                "The Phy Name for the Physical Port.";\r
+            }\r
+            leaf ieee8023-phy {\r
+              type identityref {\r
+                base mef-types:ieee-8023-interface-type;\r
+              }\r
+              description\r
+                "The Physical Layer for each physical link " +\r
+                "implementing the UNI MUST be one of the PHYs " +\r
+                "listed in IEEE Std 802.3–2012 but excluding " +\r
+                "1000BASE-PX-D and 1000BASE-PX-U.";\r
+              reference "[MEF10.3] Section 9.2 [R60].";\r
+            }\r
+          }\r
+        }\r
+        leaf role {\r
+          type mef-types:device-role;\r
+          default "ce";\r
+          description\r
+            "The role of this device in the network.";\r
+        }\r
+        leaf dev-id {\r
+          type mef-types:identifier45;\r
+          description\r
+            "Device Identifier.";\r
+        }\r
+      }\r
+    }\r
+    container connections {\r
+      description\r
+        "Physical Network Connections";      \r
+      list connection {\r
+        key "name";\r
+        leaf name {\r
+          type mef-types:identifier45;\r
+        }\r
+        container endpoint-1 {\r
+          description\r
+            "End Point 1";\r
+          leaf device {\r
+            type leafref {\r
+                path "../../../../devices/device/dev-id";\r
+            }\r
+            description\r
+              "Hostname or IP Address for the End Point's Device.";\r
+          }\r
+          leaf interface {\r
+            type leafref {\r
+              path "../../../../devices/device[dev-id = current()/../device]/interfaces/interface/phy";\r
+            }\r
+            description\r
+              "The Phy Name for the End Point's Physical Port.";\r
+          }\r
+        }\r
+        container endpoint-2 {\r
+          description\r
+            "End Point 2";\r
+          leaf device {\r
+            type leafref {\r
+              path "../../../../devices/device/dev-id";\r
+            }\r
+            description\r
+              "Hostname or IP Address for the End Point's Device.";\r
+          }\r
+          leaf interface {\r
+            type leafref {\r
+              path "../../../../devices/device[dev-id = current()/../device]/interfaces/interface/phy";\r
+            }\r
+            description\r
+              "The Phy Name for the End Point's Physical Port.";\r
+          }\r
+        }\r
+      }\r
+    }\r
+  }\r
+}
\ No newline at end of file
diff --git a/api/src/main/yang/mef-types.yang b/api/src/main/yang/mef-types.yang
new file mode 100644 (file)
index 0000000..258b3cb
--- /dev/null
@@ -0,0 +1,1172 @@
+module mef-types {\r
+  namespace "http://metroethernetforum.org/ns/yang/mef-types";\r
+  prefix mef-types;\r
+  organization "Metro Ethernet Forum";\r
+  contact\r
+    "Web URL: http://metroethernetforum.org/\r
+     E-mail:  mibs@metroethernetforum.org\r
+     Postal:  Metro Ethernet Forum\r
+              6033 W. Century Boulevard, Suite 1107\r
+              Los Angeles, CA 90045\r
+              U.S.A.\r
+     Phone:   +1 310-642-2800\r
+     Fax:     +1 310-642-2808";\r
+  description\r
+    "This module defines the YANG Type Definitions and shared\r
+     (templated) groupings of data elementsused by MEF YANG Modules.\r
+      \r
+     Reference Overview:\r
+     A number of base documents have been used to create\r
+     the MEF Types YANG Module. The following are the\r
+     abbreviations for the baseline documents:\r
+     [RFC 6991] refers to IETF RFC 6991 'Common YANG Data Types',\r
+     2013-07-15 \r
+     [RFC 6643] refers to IETF RFC 6643 'Translation of Structure\r
+     of Management Information\r
+     Version 2 (SMIv2) MIB Modules to YANG Modules', 2011-11-25 \r
+     [802.1AB] refers to 'Station and Media Access Control\r
+     Connectivity Discovery', IEEE 802.1AB-2009, September 2009\r
+     [802.1q] refers to IEEE 802.1Q-2011 'IEEE Standard for Local\r
+     and metropolitan area networks --Media Access Control (MAC)\r
+     Bridges and Virtual Bridged Local Area Networks, August 2011\r
+     [802-2001] refers to 'IEEE Standard for Local and Metropolitan\r
+     Area Networks: Overview and Architecture', IEEE 802-2001,\r
+     February 2002\r
+     [MEF10.3] refers to MEF 10.3\r
+     'Ethernet Services Attributes Phase 3', October 2013\r
+     [MEF6.2] refers to MEF 6.2\r
+     'EVC Ethernet Services Defintions Phase 3', August 2014\r
+     [MEF40] refers to MEF 40\r
+     'UNI and EVC Definition of Managed Objects', April 2013\r
+     [MEF45] refers to MEF 45 'Multi-CEN L2CP', August 2014\r
+     [MEF7.2] refers to MEF 7.2\r
+     'Carrier Ethernet Management Information Model', April 2013\r
+     [MEF7.3] refers to MEF 7.3\r
+     'Carrier Ethernet Management Information Model',\r
+     Working Draft #1 2015\r
+     [RFC 2737] refers to IETF RFC 2737 'Entity MIB (Version 2)',\r
+     December 1999\r
+     [RFC 2863] refers to IETF RFC 2863 'The Interfaces Group MIB',\r
+     June 2000\r
+     [RFC 3419] refers to IETF RFC 3419\r
+     'Textual Conventions for Transport Addresses', December 2002\r
+     [Y.1731] refers to ITU-T Y.1731\r
+     'OAM functions and mechanisms for Ethernet based networks',\r
+     July 2011\r
+     [Q.840.1] refers to ITU-T Q.840.1\r
+     'Requirements and analysis for NMS-EMS management interface\r
+     of Ethernet over Transport and Metro Ethernet\r
+     Network(EoT/MEN)' March 2007";\r
+  revision 2015-05-26 {\r
+    description\r
+      "Formal Project Review Draft 1.";\r
+    reference "EVC Ethernet Services Definitions YANG Modules " +\r
+            "(MEF XX), TBD";\r
+  }\r
+  identity ieee-8023-interface-type {\r
+    description\r
+      "Base identity from which specific IEEE 802.3-2012 " +\r
+      "interface types are derived. This list was taken " +\r
+      "from Section 1.4 'Definitions'.";\r
+  }\r
+  identity ieee8023-10BASE2 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BASE2";\r
+  }\r
+  identity ieee8023-10BASE5 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BASE5";\r
+  }\r
+  identity ieee8023-10BASE-F {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BASEF";\r
+  }\r
+  identity ieee8023-10BASE-FB {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BASE-FB";\r
+  }\r
+  identity ieee8023-1000BASE-PX-D {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-PX-D";\r
+  }\r
+  identity ieee8023-1000BASE-PX-U {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-PX-U";\r
+  }\r
+  identity ieee8023-10BASE-FL {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BASE-FL";\r
+  }\r
+  identity ieee8023-10BASE-FP {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BASE-FP";\r
+  }\r
+  identity ieee8023-10BASE-T {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BASE-T";\r
+  }\r
+  identity ieee8023-10BASE-Te {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BASE-Te";\r
+  }\r
+  identity ieee8023-10BROAD36 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10BROAD36";\r
+  }\r
+  identity ieee8023-10PASS-TS {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10PASS-TS";\r
+  }\r
+  identity ieee8023-100BASE-BX10 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "100BASE-BX10";\r
+  }\r
+  identity ieee8023-100BASE-FX {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "100BASE-FX";\r
+  }\r
+  identity ieee8023-100BASE-LX10 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "100BASE-LX10";\r
+  }\r
+  identity ieee8023-100BASE-T {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "100BASE-T";\r
+  }\r
+  identity ieee8023-100BASE-T2 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "100BASE-T2";\r
+  }\r
+  identity ieee8023-100BASE-T4 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "100BASE-T4";\r
+  }\r
+  identity ieee8023-100BASE-TX {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "100BASE-TX";\r
+  }\r
+  identity ieee8023-100BASE-X {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "100BASE-X";\r
+  }\r
+  identity ieee8023-1000BASE-BX10 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-BX10";\r
+  }\r
+  identity ieee8023-1000BASE-CX {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-CX";\r
+  }\r
+  identity ieee8023-1000BASE-KX {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-KX";\r
+  }\r
+  identity ieee8023-1000BASE-LX {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-LX";\r
+  }\r
+  identity ieee8023-1000BASE-LX10 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-LX10";\r
+  }\r
+  identity ieee8023-1000BASE-PX10 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-PX10";\r
+  }\r
+  identity ieee8023-1000BASE-PX20 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-PX20";\r
+  }\r
+  identity ieee8023-1000BASE-SX {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-SX";\r
+  }\r
+  identity ieee8023-1000BASE-T {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-T";\r
+  }\r
+  identity ieee8023-1000BASE-X {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "1000BASE-X";\r
+  }\r
+  identity ieee8023-10GBASE-CX4 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-CX4";\r
+  }\r
+  identity ieee8023-10GBASE-E {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-E";\r
+  }\r
+  identity ieee8023-10GBASE-ER {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-ER";\r
+  }\r
+  identity ieee8023-10GBASE-EW {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-EW";\r
+  }\r
+  identity ieee8023-10GBASE-KR {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-KR";\r
+  }\r
+  identity ieee8023-10GBASE-KX4 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-KX4";\r
+  }\r
+  identity ieee8023-10GBASE-L {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-L";\r
+  }\r
+  identity ieee8023-10GBASE-LR {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-LR";\r
+  }\r
+  identity ieee8023-10GBASE-LRM {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-LRM";\r
+  }\r
+  identity ieee8023-10GBASE-LW {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-LW";\r
+  }\r
+  identity ieee8023-10GBASE-LX4 {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-LX4";\r
+  }\r
+  identity ieee8023-10GBASE-PR {\r
+    base ieee-8023-interface-type;\r
+    description\r
+      "10GBASE-PR";\r
+  }\r
+  typedef identifier45 {\r
+    type string {\r
+      length "min..45";\r
+      pattern "[ -~]+";\r
+    }\r
+    description\r
+      "This type definition accepts any visible ASCII character " +\r
+      "plus the <space> character.The string must be an RFC 2579 " +\r
+      "Display String (RFC 854 ASCII 0.00-0.7f) but not contain " +\r
+      "the characters 0.00 through 0.1f. It does not accept " +\r
+      "the <delete> character (0.7f) despite the current MEF " +\r
+      "specification not disallowing it.";\r
+    reference "[MEF10.3] [R8], [R9]. [RFC2579]. [RFC854].";\r
+  }\r
+  typedef max-svc-frame-size-type {\r
+    type uint32 {\r
+      range "1522..16384";\r
+    }\r
+    units "bytes";\r
+    description\r
+      "Max Frame Size Type in bytes. Service Frames larger than " +\r
+      "this size will be discarded.";\r
+    reference "[MEF 10.3] Section 8.9 and Section 9.7.";\r
+  }\r
+  typedef retail-svc-id-type {\r
+    type uint32;\r
+    description\r
+      "General ID used by higher level applications that " +\r
+      "connect Subscribers information and SLA's with " +\r
+      "configured Ethernet Services.";\r
+    reference "[MEF10.3].";\r
+  }\r
+  typedef svc-provider-type {\r
+    type identifier45;\r
+    description\r
+      "Service Provider Type";\r
+    reference "[MEF10.3].";\r
+  }\r
+  typedef cen-type {\r
+    type identifier45;\r
+    description\r
+      "CEN Type";\r
+    reference "[MEF10.3].";\r
+  }\r
+  typedef subscriber-type {\r
+    type identifier45;\r
+    description\r
+      "Subscriber Type";\r
+    reference "[MEF10.3].";\r
+  }\r
+  typedef evc-id-type {\r
+    type identifier45;\r
+    description\r
+      "EVC ID Type";\r
+    reference "[MEF10.3].";\r
+  }\r
+  typedef simple-percent {\r
+    type decimal64 {\r
+      fraction-digits 2;\r
+      range "0.00 .. 100.00";\r
+    }\r
+    description "Percent.";\r
+  }\r
+  typedef vlan-id-type {\r
+    type uint32 {\r
+      range "1..4094";\r
+    }\r
+    description\r
+      "The VLAN-ID that uniquely identifies a VLAN.  This is the " +\r
+      "12-bit  VLAN-ID used in the VLAN Tag header. The range " +\r
+      "is defined by the REFERENCED specification. VLAN ID 0 is " +\r
+      "used for VLAN Unaware Mode.";\r
+    reference "IEEE Std 802.1Q 2003 Edition, Virtual Bridged " +\r
+            "Local Area Networks.";\r
+  }\r
+  typedef vlan-id-or-none-type {\r
+    type uint32 {\r
+      range "0..4094";\r
+    }\r
+    description\r
+      "The VLAN-ID that uniquely identifies a VLAN.  This is the " +\r
+      "12-bit VLAN-ID used in the VLAN Tag header. The range is " +\r
+      "defined by the REFERENCED specification. VLAN ID 0 is " +\r
+      "used for VLAN Unaware (ie. None) Mode";\r
+    reference "IEEE Std 802.1Q 2003 Edition, Virtual Bridged " +\r
+            "Local Area Networks.";\r
+  }\r
+  typedef vlan-id-or-all-type {\r
+    type uint32 {\r
+      range "1..4095";\r
+    }\r
+    description\r
+      "The VLAN-ID that uniquely identifies a VLAN.  This is the " +\r
+      "12-bit  VLAN-ID used in the VLAN Tag header. The range " +\r
+      "is defined by the REFERENCED specification. VLAN ID 4095 " +\r
+      "is used for VLAN Any Mode";\r
+    reference "IEEE Std 802.1Q 2003 Edition, Virtual Bridged " +\r
+            "Local Area Networks.";\r
+  }\r
+  typedef vlan-id-any-none-type {\r
+    type uint32 {\r
+      range "0..4095";\r
+    }\r
+    description\r
+      "The VLAN-ID that uniquely identifies a VLAN.  This is the " +\r
+      "12-bit VLAN-ID used in the VLAN Tag header. The range " +\r
+      "is defined by the REFERENCED specification. This " +\r
+      "typedef is for use with Operational Status information " +\r
+      "where VLAN ID 0 may be used for VLAN Unaware Mode and " +\r
+      "use of 4095 is Reserved / None.";\r
+    reference "IEEE Std 802.1Q 2003 Edition, Virtual Bridged " +\r
+            "Local Area Networks.";\r
+  }\r
+  typedef ieee-8021-priority {\r
+    type uint8 {\r
+      range "0..7";\r
+    }\r
+    description\r
+      "An 802.1Q user priority value.";\r
+    reference "IEEE 802.1Q";\r
+  }\r
+  typedef entity-admin-state-type {\r
+    type enumeration {\r
+      enum "unknown" {\r
+        description\r
+          "Unknown";\r
+      }\r
+      enum "locked" {\r
+        description\r
+          "Locked";\r
+      }\r
+      enum "shutting-down" {\r
+        description\r
+          "Shutting Down";\r
+      }\r
+      enum "unlocked" {\r
+        description\r
+          "Unlocked";\r
+      }\r
+    }\r
+    description\r
+      "Represents the various possible administrative states. " +\r
+      "A value of 'locked' means the resource is " +\r
+      "administratively prohibited from use.  A value of " +\r
+      "'shuttingDown' means that usage is administratively " +\r
+      "limited to current instances of use.A value of " +\r
+      "'unlocked' means the resource is not administratively " +\r
+      "prohibited from use.A value of 'unknown' means that " +\r
+      "this resource is unable to report administrative state.";\r
+    reference "ENTITY-STATE-TC-MIB";\r
+  }\r
+  typedef performance-metric-type {\r
+    type enumeration {\r
+      enum "one-way-frame-delay-performance" {\r
+        description\r
+          "One-way Frame Delay Performance.";\r
+      }\r
+      enum "one-way-frame-delay-range-performance" {\r
+        description\r
+          "One-way Frame Delay Range Performance.";\r
+      }\r
+      enum "one-way-mean-frame-delay-performance" {\r
+        description\r
+          "One-way Mean Frame Delay Performance.";\r
+      }\r
+      enum "one-way-inter-frame-delay-variation-performance" {\r
+        description\r
+          "One-way Inter-Frame Delay Variation Performance.";\r
+      }\r
+      enum "one-way-frame-loss-ratio-performance" {\r
+        description\r
+          "One-way Frame Loss Ratio Performance.";\r
+      }\r
+      enum "one-way-availability-performance" {\r
+        description\r
+          "One-way Availability Performance.";\r
+      }\r
+      enum "one-way-resiliency-performance-hli" {\r
+        description\r
+          "One-way Resiliency Performance expressed as High " +\r
+          "Loss Intervals.";\r
+      }\r
+      enum "one-way-resiliency-performance-chli" {\r
+        description\r
+          "One-way Resiliency Performance expressed as " +\r
+          "Consecutive High Loss Intervals.";\r
+      }\r
+      enum "one-way-group-availability-performance" {\r
+        description\r
+          "One-way Group Availability Performance.";\r
+      }\r
+      enum "one-way-multiple-evc-group-availability-performance" {\r
+        description\r
+          "One-way Multiple EVC Group Availability Performance.";\r
+      }\r
+    }\r
+    description\r
+      "Performance Metrics.";\r
+    reference "[MEF10.3] Section 8.8 and Section 11.";\r
+  }\r
+  typedef evc-type {\r
+    type enumeration {\r
+      enum "point-to-point" {\r
+        description\r
+          "Point to Point.";\r
+      }\r
+      enum "multipoint-to-multipoint" {\r
+        description\r
+          "Multipoint to Multipoint.";\r
+      }\r
+      enum "rooted-multipoint" {\r
+        description\r
+          "Rooted Multipoint.";\r
+      }\r
+    }\r
+    description\r
+      "EVC Type";\r
+    reference "[MEF10.3] Section 8.1.";\r
+  }\r
+  typedef evc-status-type {\r
+    type enumeration {\r
+      enum "new" {\r
+        description\r
+          "New.";\r
+      }\r
+      enum "active" {\r
+        description\r
+          "Active.";\r
+      }\r
+      enum "inactive" {\r
+        description\r
+          "Inactive (Not Active).";\r
+      }\r
+      enum "partially-active" {\r
+        description\r
+          "PartiallyActive.";\r
+      }\r
+    }\r
+    description\r
+      "EVC Status Type";\r
+    reference "[MEF16] Section 5.3.";\r
+  }\r
+  typedef evc-uni-role-type {\r
+    type enumeration {\r
+      enum "root" {\r
+        description\r
+          "Root Role for UNI. Valid setting for all service " +\r
+          "types. A UNI set to this value may send frames " +\r
+          "to UNIs configured as 'root' or 'leaf'.";\r
+      }\r
+      enum "leaf" {\r
+        description\r
+          "Leaf Role for UNI. Valid setting for Root-Multipoint " +\r
+          "EVCs only. A UNI set to this value may send frames " +\r
+          "to UNIs 'root'.";\r
+      }\r
+    }\r
+    description\r
+      "This object configures UNI type on an EVC.";\r
+    reference "[MEF10.3] Section 8.1.2.1.";\r
+  }\r
+  typedef data-svc-frame-delivery-type {\r
+    type enumeration {\r
+      enum "discard" {\r
+        description\r
+          "Service Frames are discarded.";\r
+      }\r
+      enum "unconditional" {\r
+        description\r
+          "Service Frames are unconditionally\r
+           delivered no matter the content of the\r
+           Service Frame. An example of this is\r
+           a Point-to-Point EVC";\r
+      }\r
+      enum "conditional" {\r
+        description\r
+          "Service Frame are conditionally\r
+           delivered to the destination UNI. The\r
+           condition is specified, for example via a\r
+           bandwidth profile or unicast MAC address\r
+           learning.";\r
+      }\r
+    }\r
+    description\r
+      "A MEF service can have one of three different " +\r
+      "delivery types.";\r
+  }\r
+  typedef uni-resiliency-type {\r
+    type enumeration {\r
+      enum "none" {\r
+        description\r
+          "No protection mechanism defined.";\r
+      }\r
+      enum "dual-link-aggregation" {\r
+        description\r
+          "Protection mechanism is Link Aggreg-\r
+           ation as specified in [802.3], with one link in\r
+           active mode and one link in standby mode.";\r
+      }\r
+      enum "other" {\r
+        description\r
+          "Protection method defined that is not\r
+           Link Aggregation active/standby mode.";\r
+      }\r
+    }\r
+    description\r
+      "This object type of resiliency mechanism for a " +\r
+      "specific UNI.";\r
+  }\r
+  typedef svc-frame-format-type {\r
+    type enumeration {\r
+      enum "no-tag" {\r
+        description\r
+          "No-tag indicates that all data on the interface is " +\r
+          "as untagged data.";\r
+      }\r
+      enum "ctag" {\r
+        description\r
+          "Ctag indicates that tagged data is associated with " +\r
+          "CE-VLAN ID or a C-TAG.";\r
+      }\r
+      enum "stag" {\r
+        description\r
+          "Stag indicates that tagged data is associated with " +\r
+          "a provider tag or S-TAG.";\r
+      }\r
+      enum "stag-ctag" {\r
+        description\r
+          "Stag-ctag indicates that service traffic identified " +\r
+          "with both an S-TAG (outer tag) and a C-TAG (inner tag).";\r
+      }\r
+    }\r
+    description\r
+      "The format must be that of a MAC Frame specified in " +\r
+      "IEEE Std 802.3-2012 Clause 3.";\r
+    reference "[MEF10.3] Section 9.6. [MEF15]. [MEF7.2]. " +\r
+            "[MEF7.3] Section 10.1.1. MEF-UNI-EVC-MIB.yang.";\r
+  }\r
+  typedef uni-mode-type {\r
+    type enumeration {\r
+      enum "uni" {\r
+        description\r
+          "UNI Mode.";\r
+      }\r
+      enum "vuni" {\r
+        description\r
+          "VUNI Mode.";\r
+      }\r
+    }\r
+    description\r
+      "This setting is used to configure a UNI as either a " +\r
+      "UNI or a VUNI";\r
+    reference "[MEF7.3] Section 10.2.2.";\r
+  }\r
+  typedef evc-cos-identifier-type {\r
+    type enumeration {\r
+      enum "evc" {\r
+        description\r
+          "The EVC ID, depends on the CE-VLAN ID / EVC Mapping " +\r
+          "at the UNI, will be used to map Service Frames to " +\r
+          "CoS Names/Labels.";\r
+        reference "MEF 10.3 Section 10.2.1.1 for " +\r
+                "Data Service Frames.";\r
+      }\r
+      enum "pcp" {\r
+        description\r
+          "The Priority Code Point(PCP) value within the " +\r
+          "CE-VLAN Tag will be used to map Service Frames " +\r
+          "to CoS Names/Labels.";\r
+        reference "MEF 10.3 Section 10.2.1.2: Priority Code " +\r
+                "Point (PCP) Field in the Customer VLAN Tag " +\r
+                "in a Tagged Service Frame. ";\r
+      }\r
+      enum "dscp" {\r
+        description\r
+          "The Differentiated Services Code Point(DSCP) value " +\r
+          "from the IP Packet's IP Header Differentiated " +\r
+          "Services Group, associated with the Service Frame, " +\r
+          "will be used to map Service Frames to CoS Names/Labels.";\r
+        reference "MEF 10.3 Section 10.2.1.3: AKA Internet " +\r
+                "Protocol. For a Data Service Frame carrying an " +\r
+                "IPv4 or and IPv6 packet.";\r
+      }\r
+    }\r
+    description\r
+      "[MEF10.3] Section 10.2.1.";\r
+  }\r
+  typedef evc-eec-identifier-type {\r
+    type enumeration {\r
+      enum "pcp" {\r
+        description\r
+          "The Priority Code Point(PCP) value within the " +\r
+          "CE-VLAN Tag will be used to map Service Frames " +\r
+          "to CoS Names/Labels.";\r
+        reference "MEF 10.3 Section 10.2.1.2: Priority Code " +\r
+                "Point (PCP) Field in the Customer VLAN Tag " +\r
+                "in a Tagged Service Frame.";\r
+      }\r
+      enum "dscp" {\r
+        description\r
+          "The Differentiated Services Code Point(DSCP) value " +\r
+          "from the IP Packet's IP Header Differentiated " +\r
+          "Services Group, associated with the Service Frame, " +\r
+          "will be used to map Service Frames to CoS Names/Labels.";\r
+        reference "MEF 10.3 Section 10.2.1.3: AKA Internet " +\r
+                "Protocol. For a Data Service Frame carrying " +\r
+                "an IPv4 or and IPv6 packet.";\r
+      }\r
+    }\r
+    description\r
+      "[MEF10.3] Section 10.2.1.";\r
+  }\r
+  typedef cos-color-identifier-type {\r
+    type enumeration {\r
+      enum "evc" {\r
+        description\r
+          "The EVC ID, depends on the CE-VLAN ID / EVC Mapping " +\r
+          "at the UNI, will be used to map Service Frames to " +\r
+          "CoS Names/Labels.";\r
+        reference "MEF 10.3 Section 10.2.1.1 for Data " +\r
+                "Service Frames.";\r
+      }\r
+      enum "pcp" {\r
+        description\r
+          "The Priority Code Point(PCP) value within the " +\r
+          "CE-VLAN Tag will be used to map Service Frames " +\r
+          "to CoS Names/Labels.";\r
+        reference "MEF 10.3 Section 10.2.1.2: Priority Code " +\r
+                "Point (PCP) Field in the Customer VLAN Tag " +\r
+                "in a Tagged Service Frame. ";\r
+      }\r
+      enum "dei" {\r
+        description\r
+          "Drop Eligible Indicator(DEI) field of the CE-VLAN Tag.";\r
+      }\r
+      enum "dscp" {\r
+        description\r
+          "The Differentiated Services Code Point(DSCP) value " +\r
+          "from the IP Packet's IP Header Differentiated " +\r
+          "Services Group, associated with the Service " +\r
+          "Frame, will be used to map Service Frames to " +\r
+          "CoS Names/Labels.";\r
+        reference "MEF 10.3 Section 10.2.1.3: AKA Internet " +\r
+                "Protocol. For a Data Service Frame carrying " +\r
+                "an IPv4 or and IPv6 packet.";\r
+      }\r
+    }\r
+    description\r
+      "CoS Color Identification Type.";\r
+    reference "[MEF23.1].";\r
+  }\r
+  typedef cos-color-type {\r
+    type enumeration {\r
+      enum "green" {\r
+        description\r
+          "Green.";\r
+      }\r
+      enum "yellow" {\r
+        description\r
+          "Yellow.";\r
+      }\r
+    }\r
+    description\r
+      "CoS Color.";\r
+    reference "[MEF23.1].";\r
+  }\r
+  typedef bwp-cir-type {\r
+    type uint32;\r
+    description\r
+      "Bandwidth Profile Committed Information Rate in " +\r
+      "Kilobits Per Second.";\r
+    reference "[MEF10.3] [R143], [R144].";\r
+  }\r
+  typedef bwp-cbs-type {\r
+    type uint32;\r
+    description\r
+      "Bandwidth Profile Committed Burst Size in Bytes.";\r
+    reference "[MEF10.3] [R145].";\r
+  }\r
+  typedef bwp-eir-type {\r
+    type uint32;\r
+    description\r
+      "Bandwidth Profile Excess Information Rate in " +\r
+      "Kilobits Per Second.";\r
+    reference "[MEF10.3] [R146], [R147].";\r
+  }\r
+  typedef bwp-ebs-type {\r
+    type uint32 {\r
+      range "0 .. 10000000";\r
+    }\r
+    description\r
+      "Excess Burst Size (EBS) in bytes: This parameter limits " +\r
+      "the maximum number of bytes available for a burst " +\r
+      "of Service Frames sent at the UNI line rate that " +\r
+      "will be declared Yellow by the Bandwidth Profile. " +\r
+      "If this value is 0, then no limit is assumed.";\r
+    reference "[MEF10.3] [R146], [R147].";\r
+  }\r
+  typedef elmi-polling-counter-type {\r
+    type uint16 {\r
+      range "1 .. max";\r
+    }\r
+    description\r
+      "ELMI Polling Counter.";\r
+    reference "[MEF16] Section 5.6.1.";\r
+  }\r
+  typedef elmi-status-error-threshold-type {\r
+    type uint8 {\r
+      range "2 .. 10";\r
+    }\r
+    description\r
+      "The count of consecutive ELMI status polling errors " +\r
+      "before raising an error.";\r
+    reference "[MEF16] Section 5.6.1.";\r
+  }\r
+  typedef elmi-polling-timer-type {\r
+    type uint8 {\r
+      range "5 .. 30";\r
+    }\r
+    description\r
+      "The type used for a timer started after tranmitting " +\r
+      "a Status Enquiry. If the timer expires, record " +\r
+      "the error if a STATUS message not received and " +\r
+      "resend Status Enquiry.";\r
+    reference "[MEF16] Section 5.6.1.";\r
+  }\r
+  typedef elmi-polling-verification-timer-type {\r
+    type uint8 {\r
+      range "5 .. 30";\r
+    }\r
+    description\r
+      "The type used for a timer started after tranmitting " +\r
+      "a Status Message. If a Status Enquiry is recieved before " +\r
+      "this timer expires, record the error.";\r
+    reference "[MEF16] Section 5.6.1.";\r
+  }\r
+  typedef bwp-color-mode-type {\r
+    type enumeration {\r
+      enum "color-blind" {\r
+        description\r
+          "Color Blind. Do not use CoS Color Configuration for " +\r
+          "this Bandwidth Profile.";\r
+      }\r
+      enum "color-aware" {\r
+        description\r
+          "Color Aware. Use CoS Color Configuration for this " +\r
+          "Bandwidth Profile.";\r
+      }\r
+    }\r
+    description\r
+      "This attribute describes the color mode (CM) to be " +\r
+      "applied as \"color-blind mode\" or \"color-aware mode\".";\r
+    reference "[MEF10.3] Section 10.3, [R151].";\r
+  }\r
+  typedef bwp-coupling-flag-type {\r
+    type enumeration {\r
+      enum "yellow-eir-only" {\r
+        description\r
+          "When CF is set to \"yellow-eir-only\", the volume of " +\r
+          "the yellow service frames admitted to the network " +\r
+          "cannot exceed EIR.";\r
+      }\r
+      enum "yellow-eir-plus-cir" {\r
+        description\r
+          "When CF is set to \"yellow-eir-plus-cir\", the " +\r
+          "volume of the yellow service frames admitted to " +\r
+          "the network is bounded by CIR + EIR depending on " +\r
+          "volume of the offered green Service Frames.";\r
+      }\r
+    }\r
+    description\r
+      "The Bandwidth Profile parameter that determines whether " +\r
+      "or not overflow tokens not used for Service Frames " +\r
+      "declared Green can be used as Yellow tokens.";\r
+    reference "[MEF10.3] Section 12.1. [MEF23.1] Section 8.1.";\r
+  }\r
+  typedef auto-negotiation-type {\r
+    type enumeration {\r
+      enum "on" {\r
+        description\r
+          "Phy Auto-negotiation Enabled.";\r
+      }\r
+      enum "off" {\r
+        description\r
+          "Phy Auto-negotiation Disabled.";\r
+      }\r
+    }\r
+    description\r
+      "Phy Auto-negotiation Enabled/Disabled.";\r
+    reference "[MEF20].";\r
+  }\r
+  typedef service-entity-type {\r
+    type enumeration {\r
+      enum "evc" {\r
+        description\r
+          "EVC.";\r
+      }\r
+      enum "tunnel-1" {\r
+        description\r
+          "Tunnel Type 1.";\r
+      }\r
+      enum "tunnel-2" {\r
+        description\r
+          "Tunnel Type 2.";\r
+      }\r
+      enum "ovc" {\r
+        description\r
+          "OVC.";\r
+      }\r
+    }\r
+    description\r
+      "MEF Service Entity Type.";\r
+    reference "[MEF12.2] Section 7.3, Table 3.";\r
+  }\r
+  typedef l2cp-handling-type {\r
+    type enumeration {\r
+      enum "discard" {\r
+        description\r
+          "Discard - An action taken at a L2CP Decision Point " +\r
+          "where a L2CP frame is neither delivered to a protocol " +\r
+          "entity, nor delivered to the External Interface " +\r
+          "where the L2CP Decision Point is located, nor " +\r
+          "propagated to L2CP Decision Points at other " +\r
+          "External Interfaces.";\r
+      }\r
+      enum "pass" {\r
+        description\r
+          "Pass(Tunnel) - An action taken at a L2CP Decision " +\r
+          "Point where a L2CP frame is either delivered to " +\r
+          "the External Interface where the L2CP Decision Point " +\r
+          "is located, or propagated to the L2CP Decision " +\r
+          "Points located at all other External Interfaces " +\r
+          "associated by the EVC or OVC.";\r
+      }\r
+      enum "peer" {\r
+        description\r
+          "Peer - An action taken at a L2CP Decision Point " +\r
+          "where a L2CP frame is delivered to a protocol " +\r
+          "entity determined by the Protocol Identifier " +\r
+          "in the L2CP Frame.";\r
+      }\r
+    }\r
+    description\r
+      "L2CP Service Frame handling option.";\r
+    reference "[MEF45] Table 8.";\r
+  }\r
+  typedef l2cp-address-set-type {\r
+    type enumeration {\r
+      enum "aware-cta" {\r
+        description\r
+          "C-VLAN Tag Aware (CTA), for VLAN-based services where" +\r
+          " the CE-VLAN ID is used to map a frame to a service.";\r
+      }\r
+      enum "blind-ctb" {\r
+        description\r
+          "C-VLAN Tag Blind (CTB), for Port-based services where " +\r
+          "the CE-VLAN ID is not used to map a frame to a service.";\r
+      }\r
+      enum "option2-blind-ctb2" {\r
+        description\r
+          "C-VLAN Tag Blind Option 2 (CTB-2), for point-to-point " +\r
+          "Port-based services that support the EPL Option 2 " +\r
+          "L2CP processing.";\r
+      }\r
+    }\r
+    description\r
+      "The L2CP Address Set Service Attribute specifies the " +\r
+      "subset of the Bridge Reserved Addresses that are " +\r
+      "filtered (i.e. L2CP Frames with this destination " +\r
+      "address are Peered or Discarded but not Passed) " +\r
+      "at a L2CP Decision Point.";\r
+    reference "[MEF10.3] Section 9.19. [MEF45] Section 8.1, " +\r
+            "[R2] through [R9]. [MEF6.2] Section 8.2.2, [R1]. " +\r
+            "[MEF45] Section 8.1.";\r
+  }\r
+  typedef l2cp-peering-protocol-type {\r
+    type enumeration {\r
+      enum "ethertype" {\r
+        description\r
+          "Ethertype.";\r
+      }\r
+      enum "llc" {\r
+        description\r
+          "LLC.";\r
+      }\r
+      enum "other" {\r
+        description\r
+          "Other: Not using LLC nor Ethertype to specify " +\r
+          "the Protocol ID.";\r
+      }\r
+    }\r
+    description\r
+      "The Peering Protocol Identifier is one of Ethertype, " +\r
+      "LLC, or Other.";\r
+    reference "[MEF45] Section 7.";\r
+  }\r
+  typedef ieee8021p-priority-type {\r
+    type uint8 {\r
+      range "0 .. 7";\r
+    }\r
+    description\r
+      "IEEE 802.1p VLAN Header Class of Service field. Used for " +\r
+      "Priority Code Point(PCP) configurations.";\r
+    reference "[MEF10.3] Section 10.2.1.";\r
+  }\r
+  typedef mef-service-type {\r
+    type enumeration {\r
+      enum "epl" {\r
+        description\r
+          "Ethernet Private Line Service (EPL) Point-to-Point " +\r
+          "EVC, all to one bundling";\r
+      }\r
+      enum "evpl" {\r
+        description\r
+          "Ethernet Virtual Private Line (EVPL) Point-to-Point " +\r
+          "EVC, bundling and/or multiplexing";\r
+      }\r
+      enum "eplan" {\r
+        description\r
+          "Ethernet Private LAN Service (EP-LAN) " +\r
+          "Multipoint-to-Multipoint EVC, all to one bundling";\r
+      }\r
+      enum "evplan" {\r
+        description\r
+          "Ethernet Virtual Private LAN Service (EVP-LAN) " +\r
+          "Multipoint-to-Multipoint EVC, bundling and/or " +\r
+          "multiplexing";\r
+      }\r
+      enum "eptree" {\r
+        description\r
+          "Ethernet Private Tree Service (EP-Tree) " +\r
+          "Rooted-Multipoint EVC, all to one bundling";\r
+      }\r
+      enum "evptree" {\r
+        description\r
+          "Ethernet Virtual Private Tree Service (EVP-Tree) " +\r
+          "Rooted-Multipoint EVC, bundling and/or multiplexing";\r
+      }\r
+    }\r
+    description\r
+      "This object indicates the specific Ethernet service type.";\r
+  }\r
+  typedef ext-if-availability-type {\r
+    type enumeration {\r
+      enum "in-test" {\r
+        description\r
+          "In-test is equivalent to the IETF RFC 2883 " +\r
+          "ifOperStatus 'testing' state.";\r
+      }\r
+      enum "failed" {\r
+        description\r
+          "Failed is to be interpretted along with " +\r
+          "Operational State.";\r
+      }\r
+      enum "power-off" {\r
+        description\r
+          "Power-off indicates the phy is down.";\r
+      }\r
+      enum "degraded" {\r
+        description\r
+          "Degraded is to be interpretted along with " +\r
+          "Operational State..";\r
+      }\r
+      enum "not-installed" {\r
+        description\r
+          "Not-installed is equivalent to the " +\r
+          "IETF RFC 2883 ifOperStatus 'notPresent' state.";\r
+      }\r
+    }\r
+    description\r
+      "Availability of the Physical Interface. The " +\r
+      "availability status type indicates that the Phy " +\r
+      "is functioning properly.  May  be  mapped  to  " +\r
+      "RFC  2863,  The Interfaces  Group  MIB  " +\r
+      "IfOperstatus. Values for availability status " +\r
+      "include: inTest, failed, powerOff, degraded, " +\r
+      "notInstalled.";\r
+    reference "[ITU-T X.731]. [MEF7.3] Section 10.1.1, " +\r
+            "[MEF15], [MEF7.2] Appendix II.";\r
+  }\r
+  typedef virt-cx-availability-type {\r
+    type enumeration {\r
+        enum "in-test" {\r
+            description\r
+              "In-test is equivalent to the " +\r
+              "IETF RFC 2883 ifOperStatus 'testing' state.";\r
+          }\r
+          enum "failed" {\r
+            description\r
+              "Failed is to be interpretted along " +\r
+              "with Operational State.";\r
+          }\r
+          enum "degraded" {\r
+            description\r
+              "Degraded is to be interpretted along " +\r
+              "with Operational State..";\r
+          }\r
+          enum "not-installed" {\r
+            description\r
+              "Not-installed is equivalent to the " +\r
+              "IETF RFC 2883 ifOperStatus 'notPresent' state.";\r
+          }\r
+    }\r
+    description\r
+    "Availability of the Virtual Connection. The " +\r
+    "availability status type indicates that the " +\r
+    "Virtual Connection is functioning properly. " +\r
+    "May be mapped to RFC 2863, The Interfaces Group MIB " +\r
+    "IfOperstatus. Values for availability status include: inTest," +\r
+    " failed, powerOff, degraded, notInstalled.";\r
+    reference "[ITU-T X.731]. [MEF7.3] Section 10.1.1, " +\r
+            "[MEF15], [MEF7.2] Appendix II.";\r
+  }\r
+  typedef svc-endpoint-availability-type {\r
+    type enumeration {\r
+        enum "in-test" {\r
+            description\r
+              "In-test is equivalent to the " +\r
+              "IETF RFC 2883 ifOperStatus 'testing' state.";\r
+          }\r
+          enum "failed" {\r
+            description\r
+              "Failed is to be interpretted along " +\r
+              "with Operational State.";\r
+          }\r
+          enum "degraded" {\r
+            description\r
+              "Degraded is to be interpretted along " +\r
+              "with Operational State..";\r
+          }\r
+          enum "not-installed" {\r
+            description\r
+              "Not-installed is equivalent to the " +\r
+              "IETF RFC 2883 ifOperStatus 'notPresent' state.";\r
+          }\r
+    }\r
+    description\r
+    "Availability of the Service Endpoint. The " +\r
+    "availability status type indicates that the " +\r
+    "Service Endpoint is functioning properly. " +\r
+    "May be mapped to RFC 2863. The Interfaces Group MIB " +\r
+    "IfOperstatus. Values for availability status include: " +\r
+    "inTest, failed, powerOff, degraded, notInstalled.";\r
+    reference "[ITU-T X.731]. [MEF7.3] Section 10.1.1, " +\r
+            "[MEF15], [MEF7.2] Appendix II.";\r
+  }\r
+  typedef ext-if-physical-layer-type {\r
+    type enumeration {\r
+      enum "10M" {\r
+        description\r
+          "10M bits-per-second.";\r
+      }\r
+      enum "100M" {\r
+        description\r
+          "100M bits-per-second.";\r
+      }\r
+      enum "1G" {\r
+        description\r
+          "1G bits-per-second.";\r
+      }\r
+      enum "10G" {\r
+        description\r
+          "10G bits-per-second.";\r
+      }\r
+      enum "40G" {\r
+        description\r
+          "40G bits-per-second.";\r
+      }\r
+      enum "100G" {\r
+        description\r
+          "100G bits-per-second.";\r
+      }\r
+    }\r
+    description\r
+      "The maximum theoretical bandwidth for the phy.";\r
+    reference "MEF 7.3 Section 10.1.1, MEF 6.2, MEF 10.3, MEF 26.1";\r
+  }\r
+  typedef device-role {\r
+    type enumeration {\r
+      enum "ce" {\r
+        description "Customer Edge(CE) Access Device";\r
+      }\r
+      enum "pe" {\r
+        description "Aggregation Router";\r
+      }\r
+      enum "p" {\r
+        description "Core Router";\r
+      }\r
+     } \r
+  } \r
+}
\ No newline at end of file