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
+ import ietf-yang-types { prefix yang; }\r
+ import ietf-inet-types { prefix inet; }\r
+ import mef-types { 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
+ "Web URL: http://metroethernetforum.org/ E-mail: mibs@metroethernetforum.org\r
+ Postal: Metro Ethernet Forum 6033 W. Century Boulevard, Suite\r
+ 1107 Los Angeles, CA 90045 U.S.A. Phone: +1 310-642-2800 Fax:\r
+ +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
+ "This module defines the shared profiles and related lists to\r
+ be referenced when configuring MEF Services. Service Providers\r
+ are expected to define a set of profiles for Service Attributes\r
+ associated with Bandwidth, L2CP, CoS, and so on. These are expected\r
+ to be slowly changing as they reflect the Products offered by\r
+ the Service Providers to their Subscribers. Reference Overview:\r
+ A number of base documents have been used to create the MEF Global\r
+ YANG Module. The following are the abbreviations for the baseline\r
+ documents: [RFC 6991] refers to IETF RFC 6991 'Common YANG Data\r
+ Types', 2013-07-15 [RFC 6643] refers to IETF RFC 6643 'Translation\r
+ of Structure of Management Information Version 2 (SMIv2) MIB Modules\r
+ to YANG Modules', 2011-11-25 [802.1AB] refers to 'Station and\r
+ Media Access Control Connectivity Discovery', IEEE 802.1AB-2009,\r
+ September 2009 [802.1q] refers to IEEE 802.1Q-2011 'IEEE Standard\r
+ for Local and metropolitan area networks --Media Access Control\r
+ (MAC) Bridges and Virtual Bridged Local Area Networks, August\r
+ 2011 [802-2001] refers to 'IEEE Standard for Local and Metropolitan\r
+ Area Networks: Overview and Architecture', IEEE 802-2001, February\r
+ 2002 [MEF10.3] refers to MEF 10.3 'Ethernet Services Attributes\r
+ Phase 3', October 2013 [MEF6.2] refers to MEF 6.2 'EVC Ethernet\r
+ Services Defintions Phase 3', August 2014 [MEF40] refers to MEF\r
+ 40 'UNI and EVC Definition of Managed Objects', April 2013 [MEF45]\r
+ refers to MEF 45 'Multi-CEN L2CP', August 2014 [MEF7.2] refers\r
+ to MEF 7.2 'Carrier Ethernet Management Information Model', April\r
+ 2013 [MEF7.3] refers to MEF 7.3 'Carrier Ethernet Management Information\r
+ Model', Working Draft #1 2015 [RFC 2737] refers to IETF RFC 2737\r
+ 'Entity MIB (Version 2)', December 1999 [RFC 2863] refers to IETF\r
+ RFC 2863 'The Interfaces Group MIB', June 2000 [RFC 3419] refers\r
+ to IETF RFC 3419 'Textual Conventions for Transport Addresses',\r
+ December 2002 [Y.1731] refers to ITU-T Y.1731 'OAM functions and\r
+ mechanisms for Ethernet based networks', July 2011 [Q.840.1] refers\r
+ to ITU-T Q.840.1 'Requirements and analysis for NMS-EMS management\r
+ interface of Ethernet over Transport and Metro Ethernet Network(EoT/MEN)'\r
+ 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
+ "Formal Project Review Draft 1.";\r
+ reference "EVC Ethernet Services Definitions YANG Modules (MEF XX), TBD";\r
}\r
container mef-global {\r
description\r
- "MEF Global Profiles";\r
+ "MEF Global Profiles";\r
grouping bwp-flows-group {\r
description\r
- "Bandwidth Profile Flows Group.";\r
+ "Bandwidth Profile Flows Group.";\r
list bwp-flow {\r
key "bw-profile";\r
description\r
- "Bandwidth Profiles.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
container svc-providers {\r
presence "Use non-default Service Providers";\r
description\r
- "Global Service Providers List.";\r
+ "Global Service Providers List.";\r
list svc-provider {\r
key "sp-id";\r
description\r
- "Service Provider Identifier.";\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
+ "The Service Provider ID identifies a unique SP that " +\r
+ "contains multiple CENs.";\r
reference "[MEF10.3] Section 7.";\r
}\r
}\r
container cens {\r
presence "Use non-default CEN";\r
description\r
- "Global CENs List.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
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
+ "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
+ "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
+ "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
+ "Global Service Level Specification(SLS) List.";\r
container perf-objs {\r
description\r
- "Performance Objectives for this SLS.";\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
+ "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
+ "'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
+ "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
+ "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
+ "'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
+ "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
+ "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
+ "'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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "cos-names/cos-name/name";\r
}\r
mandatory true;\r
description\r
- "CoS Name Identifier.";\r
+ "CoS Name Identifier.";\r
}\r
leaf fd-pp {\r
when "(../pm-type = 'one-way-frame-delay-" +\r
- "performance')" {\r
+ "performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "Frame Delay Performance Percentile.";\r
}\r
leaf fd-range-pp {\r
when "(../pm-type = 'one-way-frame-delay-range-" +\r
- "performance')" {\r
+ "performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "Frame Delay Range Performance Percentile.";\r
}\r
leaf fd-perf-obj {\r
when "(../pm-type = 'one-way-frame-delay-" +\r
- "performance')" {\r
+ "performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "Frame Delay Performance Objective.";\r
}\r
leaf fd-range-perf-obj {\r
when "(../pm-type = 'one-way-frame-delay-range-" +\r
- "performance')" {\r
+ "performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "Frame Delay Range Performance Objective.";\r
}\r
leaf fd-mean-perf-obj {\r
when "(../pm-type = 'one-way-mean-frame-delay-" +\r
- "performance')" {\r
+ "performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "Frame Delay Mean Performance Objective.";\r
}\r
leaf ifdv-pp {\r
when "(../pm-type = 'one-way-inter-frame-delay-" +\r
- "variation-performance')" {\r
+ "variation-performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "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
+ "variation-performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "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
+ "variation-performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "Inter-Frame Delay Variation Performance Objective.";\r
}\r
leaf flr-perf-obj {\r
when "(../pm-type = 'one-way-frame-loss-ratio-" +\r
- "performance')" {\r
+ "performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "Frame Loss Ratio Performance Objective.";\r
}\r
leaf avail-pp {\r
when "(../pm-type = 'one-way-availability-" +\r
- "performance')" {\r
+ "performance')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "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
+ "performance-hli')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "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
+ "performance-chli')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "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
+ "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
+ "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
+ "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
+ "performance-chli')" {\r
description\r
- "This PM Metric only applies to specific " +\r
- "Performance Objective Types.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "be unique for this Service Provider.";\r
}\r
leaf sp-id {\r
when "/mef-global:mef-global/mef-global:svc-" +\r
- "providers" {\r
+ "providers" {\r
description\r
- "Service Provider Identifier associated " +\r
- "with this SLS.";\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
+ "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
+ "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
container subscribers {\r
presence "Use non-default Subscribers.";\r
description\r
- "Subscribers List (Global).";\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
+ "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
+ "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
+ "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
+ "[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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "A CEN is defined as a network from a " +\r
+ "Service Provider (SP). ";\r
reference "[MEF10.3] Section 7.";\r
}\r
}\r
presence "Use to confirm whether ANY profiles have " +\r
"been configured";\r
description\r
- "Global Profiles.";\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
+ "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
+ "List of CoS Names.";\r
leaf name {\r
type mef-types:identifier45;\r
description\r
- "CoS Name.";\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
+ "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
+ "List of EEC Names.";\r
leaf name {\r
type mef-types:identifier45;\r
description\r
- "EEC Name.";\r
+ "EEC Name.";\r
}\r
}\r
}\r
container ingress-bwp-flows {\r
description\r
- "Ingress Bandwidth Profile Flows.";\r
+ "Ingress Bandwidth Profile Flows.";\r
uses bwp-flows-group;\r
}\r
container egress-bwp-flows {\r
description\r
- "Egress Bandwidth Profile Flows.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "cos-names/cos-name/name";\r
}\r
description\r
- "This attribute identifies the name of " +\r
- "a class of service (CoS).";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "eec-names/eec-name/name";\r
}\r
description\r
- "This attribute identifies the name of a " +\r
- "Egress Equivalence Class (EEC).";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "Ethernet Local Management Interface(ELMI).";\r
list elmi-profile {\r
key "id";\r
description\r
- "Ethernet Local Management Interface(ELMI) Profile ID.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "This attribute identifies the label of a " +\r
+ "Egress Equivance Class (EEC) instance.";\r
}\r
choice eec-id {\r
description\r
- "EEC Identifier.";\r
+ "EEC Identifier.";\r
case pcp {\r
container eec-pcp {\r
presence "EEC Mode PCP.";\r
description\r
- "EEC Mode PCP.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "eec-names/eec-name/name";\r
}\r
description\r
- "This attribute identifies the name of a " +\r
- "Egress Equivalence Class instance.";\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
+ "EVC Per UNI: The EEC Color for " +\r
+ "Service Frames.";\r
reference "[MEF10.3] [R102], [R103]. ";\r
}\r
}\r
container eec-dscp {\r
presence "EEC Mode DSCP.";\r
description\r
- "ECC Mode DSCP.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "DSCP value for IPv4 Packets.";\r
leaf dscp-value {\r
type inet:dscp;\r
description\r
- "Map CoS to IPv4 DSCP values.";\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
+ "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
+ "eec-names/eec-name/name";\r
}\r
description\r
- "This attribute identifies the name " +\r
- "of a Egress Equivalence Class instance.";\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
+ "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
+ "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
+ "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
+ "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
+ "eec-names/eec-name/name";\r
}\r
description\r
- "This attribute identifies the name of a " +\r
- "Egress Equivalence Class instance.";\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
+ "EVC Per UNI: The EEC Color for " +\r
+ "Service Frames.";\r
reference "[MEF10.3] [R102], [R103]. ";\r
}\r
}\r
}\r
container cos {\r
description\r
- "Class of Service (CoS) Profiles.";\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
+ "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
+ "This attribute identifies the label of a " +\r
+ "Class of Service (CoS) instance.";\r
}\r
choice cos-id {\r
description\r
- "CoS identifier.";\r
+ "CoS identifier.";\r
case evc {\r
container cos-evc {\r
presence "EVC ID PCP.";\r
description\r
- "CoS ID EVC.";\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
+ "cos-names/cos-name/name";\r
}\r
description\r
- "This attribute identifies the name of a " +\r
- "Class of Service (CoS) instance.";\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
+ "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
container cos-pcp {\r
presence "CoS ID PCP.";\r
description\r
- "CoS ID PCP.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "cos-names/cos-name/name";\r
}\r
description\r
- "This attribute identifies the name of " +\r
- "a class of service (CoS) instance.";\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
+ "EVC Per UNI: The CoS Color for " +\r
+ "Service Frames.";\r
reference "[MEF10.3] [R102], [R103]. ";\r
}\r
}\r
container cos-dscp {\r
presence "CoS ID DSCP.";\r
description\r
- "CoS ID DSCP.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "cos-names/cos-name/name";\r
}\r
description\r
- "This attribute identifies the name of a " +\r
- "Class of Service (CoS) instance.";\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
+ "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
+ "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
+ "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
+ "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
+ "cos-names/cos-name/name";\r
}\r
description\r
- "This attribute identifies the name of a " +\r
- "Class of Service (CoS) instance.";\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
+ "EVC Per UNI: The CoS Color for " +\r
+ "Service Frames.";\r
reference "[MEF10.3] [R102], [R103]. ";\r
}\r
}\r
}\r
}\r
}\r
- \r
+\r
grouping tenant {\r
- leaf name {\r
- type string;\r
- description "Tenant Name";\r
- }\r
+ leaf name {\r
+ type string;\r
+ description "Tenant Name";\r
+ }\r
}\r
- \r
+\r
container tenants-instances {\r
- list tenant-list {\r
- key name;\r
- unique name;\r
- uses tenant;\r
- }\r
+ list tenant-list {\r
+ key name;\r
+ unique name;\r
+ uses tenant;\r
+ }\r
}\r
}\r
-}
\ No newline at end of file
+}\r
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
+ import ietf-inet-types { prefix inet; }\r
+ import ietf-yang-types { prefix yang; }\r
+ import mef-types { prefix mef-types; }\r
+ import mef-global { prefix mef-global; }\r
+ import mef-topology { prefix mef-topology; }\r
+\r
+ import opendaylight-l2-types { prefix ethertype; }\r
+ // revision-date "2013-08-27";\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
+ "Web URL: http://metroethernetforum.org/ E-mail: mibs@metroethernetforum.org\r
+ Postal: Metro Ethernet Forum 6033 W. Century Boulevard, Suite\r
+ 1107 Los Angeles, CA 90045 U.S.A. Phone: +1 310-642-2800 Fax:\r
+ +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
+ "This module implements the UNI functionality specified in MEF\r
+ 10.3, MEF 6.2, and MEF 7.2. Reference Overview: A number of base\r
+ documents have been used to create the MEF Interfaces YANG Module.\r
+ The following are the abbreviations for the baseline documents:\r
+ [RFC 6991] refers to IETF RFC 6991 'Common YANG Data Types', 2013-07-15\r
+ [RFC 6643] refers to IETF RFC 6643 'Translation of Structure of\r
+ Management Information Version 2 (SMIv2) MIB Modules to YANG Modules',\r
+ 2011-11-25 [802.1AB] refers to 'Station and Media Access Control\r
+ Connectivity Discovery', IEEE 802.1AB-2009, September 2009 [802.1q]\r
+ refers to IEEE 802.1Q-2011 'IEEE Standard for Local and metropolitan\r
+ area networks --Media Access Control (MAC) Bridges and Virtual\r
+ Bridged Local Area Networks, August 2011 [802-2001] refers to\r
+ 'IEEE Standard for Local and Metropolitan Area Networks: Overview\r
+ and Architecture', IEEE 802-2001, February 2002 [MEF10.3] refers\r
+ to MEF 10.3 'Ethernet Services Attributes Phase 3', October 2013\r
+ [MEF6.2] refers to MEF 6.2 'EVC Ethernet Services Defintions Phase\r
+ 3', August 2014 [MEF40] refers to MEF 40 'UNI and EVC Definition\r
+ of Managed Objects', April 2013 [MEF45] refers to MEF 45 'Multi-CEN\r
+ L2CP', August 2014 [MEF7.2] refers to MEF 7.2 'Carrier Ethernet\r
+ Management Information Model', April 2013 [MEF7.3] refers to MEF\r
+ 7.3 'Carrier Ethernet Management Information Model', Working Draft\r
+ #1 2015 [RFC 2737] refers to IETF RFC 2737 'Entity MIB (Version\r
+ 2)', December 1999 [RFC 2863] refers to IETF RFC 2863 'The Interfaces\r
+ Group MIB', June 2000 [RFC 3419] refers to IETF RFC 3419 'Textual\r
+ Conventions for Transport Addresses', December 2002 [Y.1731] refers\r
+ to ITU-T Y.1731 'OAM functions and mechanisms for Ethernet based\r
+ networks', July 2011 [Q.840.1] refers to ITU-T Q.840.1 'Requirements\r
+ and analysis for NMS-EMS management interface of Ethernet over\r
+ Transport and Metro Ethernet Network(EoT/MEN)' March 2007";\r
revision 2015-05-26 {\r
description\r
- "Formal Project Review Draft 1.";\r
+ "Formal Project Review Draft 1.";\r
reference "EVC Ethernet Services Definitions YANG Modules " +\r
- "(MEF XX), TBD";\r
+ "(MEF XX), TBD";\r
}\r
container mef-interfaces {\r
description\r
- "MEF Interfaces";\r
+ "MEF Interfaces";\r
container unis {\r
description\r
- "User Network Interface(UNI).";\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
+ "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
+ "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
+ "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
+ "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
"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
+ "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
+ "[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
+ "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
+ "[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
+ "MEF UNI List.";\r
reference "[MEF6.2] Section 8.2.2.";\r
+ container ip-unis {\r
+ list ip-uni {\r
+ key "ip-uni-id";\r
+ leaf ip-uni-id {\r
+ type mef-types:identifier45;\r
+ }\r
+ leaf id {\r
+ type mef-types:identifier45;\r
+ }\r
+ leaf ip-address {\r
+ type inet:ip-prefix;\r
+ }\r
+ leaf vlan {\r
+ type ethertype:vlan-id;\r
+ }\r
+ container subnets {\r
+ list subnet {\r
+ key "subnet";\r
+ leaf subnet {\r
+ type inet:ip-prefix;\r
+ }\r
+ leaf gateway {\r
+ type inet:ip-address;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
container physical-layers {\r
description\r
- "The Physical Layer MUST operate in a full duplex " +\r
- "mode. It is not configurable.";\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
+ "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
+ "physical link configured.";\r
description\r
- "A UNI must have at least one physical link " +\r
- "configured.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
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
+ "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
+ "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
+ "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
+ "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
units "bits-per-second";\r
default "1G";\r
description\r
- "Physical Layer Connection Speed (Max Data Rate).";\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
+ "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
+ "Auto-Negotiation ON/OFF/Auto.";\r
reference "[MEF6.2] Section 8.2.2. [MEF20] [R80]. " +\r
- "[MEF7.3] Section 10.2.2.";\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
+ "../clock-accuracy)" {\r
error-message "The quality of the clock " +\r
- "reference must be set if Synchronous " +\r
- "Mode is enabled.";\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
+ "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
+ "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
+ "Section 8.2.2. [MEF7.3] Section 10.2.2.";\r
}\r
leaf clock-accuracy {\r
type decimal64 {\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
+ "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
+ "[MEF22.1], [IEEE802.3].";\r
}\r
}\r
}\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
+ "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
+ "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
+ "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
+ "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
+ "[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
+ "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
+ "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
+ "configured.";\r
description\r
- "UNI Bandwidth Profile Flow Envelopes.";\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
+ "[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
+ "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
+ "[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
+ "this envelope.";\r
description\r
- "UNI Bandwidth Profile Flows per Envelope.";\r
+ "UNI Bandwidth Profile Flows per Envelope.";\r
reference "[MEF10.3] Section 12.1. " +\r
- "[MEF6.2] Section 10.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
+ "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
+ "[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
+ "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
+ "'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
+ "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
+ "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
+ "(/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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "(../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
+ "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
+ "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
+ "The Envelope Coupling Flag (CF) attribute.";\r
reference "[MEF10.3] Section 12.1.";\r
}\r
}\r
container egress-envelopes {\r
presence "Egress Bandwidth Profile Envelopes configured.";\r
description\r
- "UNI Bandwidth Profile Flow Envelopes.";\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
+ "[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
+ "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
+ "[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
+ "this envelope.";\r
description\r
- "UNI Bandwidth Profile Flows per Envelope.";\r
+ "UNI Bandwidth Profile Flows per Envelope.";\r
reference "[MEF10.3] Section 12.1. [MEF6.2] " +\r
- "Section 10.1.";\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
+ "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
+ "[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
+ "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
+ "'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
+ "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
+ "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
+ "(/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
+ "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
+ "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
+ "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
+ "[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
+ "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
+ "(../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
+ "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
+ "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
+ "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
+ "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
+ "Operational Status of the Link as " +\r
+ "Enabled/Disabled.";\r
reference "[MEF15]. [MEF7.3] Section 10.1.1.";\r
}\r
leaf available-status {\r
default "not-installed";\r
config false;\r
description\r
- "Availability Status of the Link.";\r
+ "Availability Status of the Link.";\r
reference "[MEF15]. [MEF7.3] Section 10.1.1.";\r
}\r
leaf physical-layer {\r
default "1G";\r
config false;\r
description\r
- "Physical Layer Connection Speed.";\r
+ "Physical Layer Connection Speed.";\r
reference "[MEF15]. [MEF7.3] Section 10.1.1.";\r
}\r
leaf number-of-links {\r
default "0";\r
config false;\r
description\r
- "A count of the number of physical links in this " +\r
- "physical layer.";\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
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
+ "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
+ "[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
+ "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
+ "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
+ "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
+ " 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
+ "[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
+ " 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
+ "[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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "(../physical-layers/number-of-links = 1))" {\r
error-message "If uni-resiliency is 'none', " +\r
- "number-of-links must be 1.";\r
+ "number-of-links must be 1.";\r
description\r
- "If uni-resiliency is 'none', number-of-links " +\r
- "must be 1.";\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
+ "((. = '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
+ "'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
+ "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
+ "((. = '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
+ "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
+ "If uni-resiliency is 'other', number-of-links " +\r
+ "must be 3 or greater.";\r
}\r
default "none";\r
description\r
- "UNI Resiliency.";\r
+ "UNI Resiliency.";\r
reference "[MEF10.3] Section 9.5 [R64], [R65], [R66], " +\r
- "[R67]. [MEF6.2] Section 8.2.2.";\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
+ "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
+ "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
+ "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
+ "[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
+ "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
+ "[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
+ "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
+ "(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
+ "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
+ "[R75]. [MEF7.3] Section 10.2.2.";\r
}\r
leaf max-evc-count {\r
type uint32 {\r
}\r
default "1";\r
description\r
- "The Maximum Number of EVCs that can be supported " +\r
- "by this UNI (Default 1).";\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
+ "[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
+ "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
+ "[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
+ "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
+ "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
+ "[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
+ "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
+ "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
+ "[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
+ "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
+ "[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
+ "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
+ "[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
+ "(. = 'true' and " +\r
+ "(../elmi-profile))" {\r
error-message "ELMI Profile must be set if " +\r
- "ELMI is Enabled.";\r
+ "ELMI is Enabled.";\r
description\r
- "Ethernet Local Management Interface(ELMI) " +\r
- "Profile ID must be set if ELMI is Enabled.";\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
+ "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
+ "[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
+ "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
+ "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
+ "[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
+ "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
+ "[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
+ "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
+ "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
+ "[MEF45] Section 8.2. " +\r
+ "[MEF7.3] Section 10.2.2.";\r
}\r
leaf tenant-id {\r
- type leafref {\r
- path "/mef-global:mef-global/mef-global:tenants-instances/mef-global:tenant-list/mef-global:name";\r
- }\r
- } \r
+ type leafref {\r
+ path "/mef-global:mef-global/mef-global:tenants-instances/mef-global:tenant-list/mef-global:name";\r
+ }\r
+ }\r
}\r
}\r
}\r
-}
\ No newline at end of file
+}\r
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
+ import ietf-yang-types { prefix yang; }\r
+ import ietf-inet-types { prefix inet; }\r
+ import mef-types { prefix mef-types; }\r
+ import mef-global { prefix mef-global; }\r
+ import mef-interfaces { prefix mef-interfaces; }\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
+ "Web URL: http://metroethernetforum.org/ E-mail: mibs@metroethernetforum.org\r
+ Postal: Metro Ethernet Forum 6033 W. Century Boulevard, Suite\r
+ 1107 Los Angeles, CA 90045 U.S.A. Phone: +1 310-642-2800 Fax:\r
+ +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
+ "This module implements the Carrier Ethernet Services as defined\r
+ in MEF 10.3, MEF 6.2, and MEF 7.2. Reference Overview: A number\r
+ of base documents have been used to create the MEF Services YANG\r
+ Module. The following are the abbreviations for the baseline documents:\r
+ [RFC 6991] refers to IETF RFC 6991 'Common YANG Data Types', 2013-07-15\r
+ [RFC 6643] refers to IETF RFC 6643 'Translation of Structure of\r
+ Management Information Version 2 (SMIv2) MIB Modules to YANG Modules',\r
+ 2011-11-25 [802.1AB] refers to 'Station and Media Access Control\r
+ Connectivity Discovery', IEEE 802.1AB-2009, September 2009 [802.1q]\r
+ refers to IEEE 802.1Q-2011 'IEEE Standard for Local and metropolitan\r
+ area networks --Media Access Control (MAC) Bridges and Virtual\r
+ Bridged Local Area Networks, August 2011 [802-2001] refers to\r
+ 'IEEE Standard for Local and Metropolitan Area Networks: Overview\r
+ and Architecture', IEEE 802-2001, February 2002 [MEF10.3] refers\r
+ to MEF 10.3 'Ethernet Services Attributes Phase 3', October 2013\r
+ [MEF6.2] refers to MEF 6.2 'EVC Ethernet Services Defintions Phase\r
+ 3', August 2014 [MEF40] refers to MEF 40 'UNI and EVC Definition\r
+ of Managed Objects', April 2013 [MEF45] refers to MEF 45 'Multi-CEN\r
+ L2CP', August 2014 [MEF7.2] refers to MEF 7.2 'Carrier Ethernet\r
+ Management Information Model', April 2013 [MEF7.3] refers to MEF\r
+ 7.3 'Carrier Ethernet Management Information Model', Working Draft\r
+ #1 2015 [RFC 2737] refers to IETF RFC 2737 'Entity MIB (Version\r
+ 2)', December 1999 [RFC 2863] refers to IETF RFC 2863 'The Interfaces\r
+ Group MIB', June 2000 [RFC 3419] refers to IETF RFC 3419 'Textual\r
+ Conventions for Transport Addresses', December 2002 [Y.1731] refers\r
+ to ITU-T Y.1731 'OAM functions and mechanisms for Ethernet based\r
+ networks', July 2011 [Q.840.1] refers to ITU-T Q.840.1 'Requirements\r
+ and analysis for NMS-EMS management interface of Ethernet over\r
+ Transport and Metro Ethernet Network(EoT/MEN)' March 2007";\r
revision 2015-05-26 {\r
description\r
- "Formal Project Review Draft 1.";\r
+ "Formal Project Review Draft 1.";\r
reference "EVC Ethernet Services Definitions YANG Modules " +\r
- "(MEF XX), TBD";\r
+ "(MEF XX), TBD";\r
}\r
- \r
+\r
container mef-services {\r
description\r
- "MEF Services";\r
+ "MEF Services";\r
list mef-service {\r
must "(not(/mef-global:mef-global/mef-global:svc-providers)" +\r
" and " +\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
+ "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
+ unique "ipvc/ipvc-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
+ "Metro Ethernet Forum's Ethernet Services.";\r
+ choice mef-service-choice {\r
+ case ipvc-choice {\r
+ container ipvc {\r
+ container unis {\r
+ list uni {\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
+ }\r
+ leaf ip-uni-id {\r
+ type mef-types:identifier45;\r
+ }\r
+\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
+ description\r
+ "VLAN Identifier.";\r
+ }\r
+ }\r
+ }\r
+ }\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
+ leaf ipvc-id {\r
+ type mef-types:evc-id-type;\r
+ mandatory true;\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
+ leaf ipvc-type {\r
+ type mef-types:ipvc-type;\r
+\r
+ mandatory true;\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
+ "This IPVC attribute describes the IPVC as either " +\r
+ "Cloud-access, Multipoint, or " +\r
+ "Rooted-Multipoint.";\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
+ }\r
+ }\r
+ case evc-choice {\r
+ container evc {\r
+\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
- "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
+ "The EVC Performance SLS Exclusions and Inclusions " +\r
+ "List cannot both be configured for an 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
+ 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
- "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
+ "If EVC Type is Rooted-Multipoint, " +\r
+ "sls-uni-inclusions must be used instead of " +\r
+ "sls-uni-exclusions.";\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
+ "Ethernet Virtual Circuit(EVC) Configuration and Status.";\r
+ container unis {\r
description\r
- "EVC Per UNI CE-VLAN IDs.";\r
- list evc-uni-ce-vlan {\r
- key "vid";\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
- "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
+ "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/" +\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
+ "mef-interfaces:unis/mef-interfaces:uni/" +\r
+ "mef-interfaces:uni-id";\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
+ "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
- "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
+ "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
- "VLAN Identifier.";\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
- }\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
+ leaf l2cp-svc-frm-cos {\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
+ "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: Class of Service Identifier " +\r
- "for this Bandwidth Profile Flow.";\r
+ "EVC Per UNI: Ingress SOAM Service Frames.";\r
reference "[MEF7.3] Section 12.1.2.";\r
}\r
- leaf bw-profile {\r
+ leaf data-svc-frm-eec {\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
+ 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
- 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
+ "EVC Per UNI: Egress Data Service Frame Processing.";\r
+ reference "[MEF10.3] Section 10.4. " +\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
+ 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-names/" +\r
- "mef-global:eec-name/mef-global:name";\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 Equivalence Class " +\r
- "Identifier for this Bandwidth Profile Flow.";\r
- reference "[MEF7.3] Section 12.1.2.";\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 bw-profile {\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:egress-envelopes/" +\r
- "mef-interfaces:envelope/" +\r
- "mef-interfaces:env-id";\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: 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
+ "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
- "EVC Per UNI: This status group is related to " +\r
- "the MEF 7.3 Service Endpoint";\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 Per UNI: Operational Status of the " +\r
- "Virtual Connection as Enabled/Disabled.";\r
- reference "[MEF15]. [MEF7.3] Section 11.2.1.";\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:svc-endpoint-availability-type;\r
+ type mef-types:virt-cx-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
+ "EVC Availability Status of the Virtual Connection.";\r
+ reference "[MEF7.3] Section 11.1.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
+ 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
- "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
+ "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
- leaf role {\r
- type mef-types:evc-uni-role-type;\r
- mandatory true;\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 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
+ "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 admin-state-enabled {\r
- type boolean;\r
- default "true";\r
+ leaf evc-id {\r
+ type mef-types:evc-id-type;\r
+ mandatory 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
+ "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 color-id {\r
- type mef-types:cos-color-identifier-type;\r
+ leaf evc-status {\r
+ type mef-types:evc-status-type;\r
+ config false;\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
+ "EVC Operational Status.";\r
+ reference "[MEF16] Section 5.3.";\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
+ 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
- "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
+ "If EVC Type is Point-to-Point, all UNI Roles must " +\r
+ "be root.";\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
+ 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
- "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
+ "If EVC Type is Multipoint-to-Multipoint, all UNI " +\r
+ "Roles must be root.";\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
+ 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
- "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
+ "If EVC Type is Rooted-Multipoint, one or more " +\r
+ "UNI Roles must be root.";\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
+ 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 "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
+ 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
- "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
+ "If EVC Type is Multipoint-to-Multipoint, " +\r
+ "there must be 2 or more UNI configured for " +\r
+ "the EVC.";\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
+ 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
- "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
+ "If EVC Type is Rooted-Multipoint, there must " +\r
+ "be 2 or more UNI configured for the EVC.";\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
+ 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
- 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
+ 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 "(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
+ 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
- "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
+ "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
- "EVC Per UNI: Egress SOAM Service Frames.";\r
- reference "[MEF10.3] Section 10.4. " +\r
- "[MEF7.3] Section 12.1.2.";\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 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
+ leaf admin-state-enabled {\r
+ type boolean;\r
+ default "true";\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
+ "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 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
+ leaf elastic-enabled {\r
+ type boolean;\r
+ default "true";\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
+ "EVC: Elastic Enabled/Disabled.";\r
+ reference "[MEF7.3] Section 11.1.1.";\r
}\r
- leaf src-mac-addr-limit-enabled {\r
- type boolean;\r
- default "false";\r
+ leaf elastic-service {\r
+ type mef-types:identifier45;\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
+ "EVC: Related to CE4Cloud Information Model.";\r
+ reference "[MEF7.3] Section 11.1.1.";\r
}\r
- leaf src-mac-addr-limit {\r
+ leaf max-uni-count {\r
type uint32 {\r
- range "1..max";\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 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
+ "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 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
+ leaf preserved-vlan {\r
+ type uint32;\r
}\r
- leaf test-meg-enabled {\r
+ leaf preserve-ce-vlan-id {\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
+ "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 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
+ leaf cos-preserve-ce-vlan-id {\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
+ "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
- 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
+ leaf evc-performance-sls {\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
+ "mef-global:sls/mef-global:sls-id";\r
}\r
description\r
- "EVC: Performance Metric.";\r
- reference "[MEF10.3] Section 8.8.";\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 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
+ leaf unicast-svc-frm-delivery {\r
+ type mef-types:data-svc-frame-delivery-type;\r
+ default "unconditional";\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
+ "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 uni-id2 {\r
- type leafref {\r
- path "../../../unis/uni/uni-id";\r
- }\r
+ leaf multicast-svc-frm-delivery {\r
+ type mef-types:data-svc-frame-delivery-type;\r
+ default "unconditional";\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
+ "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
- }\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
+ leaf broadcast-svc-frm-delivery {\r
+ type mef-types:data-svc-frame-delivery-type;\r
+ default "unconditional";\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
+ "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
- 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
+ leaf evc-meg-id {\r
+ type mef-types:identifier45;\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
+ "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 uni-id2 {\r
- type leafref {\r
- path "../../../unis/uni/uni-id";\r
- }\r
+ leaf max-svc-frame-size {\r
+ type mef-types:max-svc-frame-size-type;\r
+ default "1600";\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
+ "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
}\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
- 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 preserved-vlan {\r
- type uint32;\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
+ "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
+ "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
+ "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
+ "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
"[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
+ "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
+ "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: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
+ "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
+ "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: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
+ "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
+ "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: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
+ "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
+ "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
+ "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
+ "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
+ "be disabled.";\r
description\r
- "For EPL, Source MAC Address Limit must be disabled.";\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
+ "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
+ "must be unconditional.";\r
description\r
- "For EPL, unicast-svc-frm-delivery must be " +\r
- "unconditional.";\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
+ "must be unconditional.";\r
description\r
- "For EPL, multicast-svc-frm-delivery must be " +\r
- "unconditional.";\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
+ "must be unconditional.";\r
description\r
- "For EPL, broadcast-svc-frm-delivery must be " +\r
- "unconditional.";\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
+ "must be enabled.";\r
description\r
- "For EPL, CE-VLAN ID Preservation must be enabled.";\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
+ "must be enabled.";\r
description\r
- "For EPL, CE-VLAN ID CoS Preservation must be enabled.";\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: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
+ "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
+ "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
"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
+ "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
+ "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
+ "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: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
+ "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
+ "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: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
+ "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
+ "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: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
+ "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
+ "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: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
+ "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
+ "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
+ "Multipoint-to-Multipoint.";\r
description\r
- "For EP-LAN, EVC Type must be " +\r
- "Multipoint-to-Multipoint.";\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
+ "must be enabled.";\r
description\r
- "For EP-LAN, CE-VLAN ID Preservation must be enabled.";\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
+ "must be enabled.";\r
description\r
- "For EP-LAN, CE-VLAN ID CoS Preservation must be " +\r
- "enabled.";\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
+ "Multipoint-to-Multipoint.";\r
description\r
- "For EVP-LAN, EVC Type must be " +\r
- "Multipoint-to-Multipoint.";\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: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
+ "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
+ "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: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
+ "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
+ "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: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
+ "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
+ "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: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
+ "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
+ "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: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
+ "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
+ "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
+ "Rooted-Multipoint.";\r
description\r
- "For EP-TREE, EVC Type must be Rooted-Multipoint.";\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
+ "must be enabled.";\r
description\r
- "For EP-TREE, CE-VLAN ID Preservation must be enabled.";\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
+ "CoS Preservation must be enabled.";\r
description\r
- "For EP-TREE, CE-VLAN ID CoS Preservation must be " +\r
- "enabled.";\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: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
+ "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
+ "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
+ "Rooted-Multipoint.";\r
description\r
- "For EVP-TREE, EVC Type must be Rooted-Multipoint.";\r
+ "For EVP-TREE, EVC Type must be Rooted-Multipoint.";\r
}\r
description\r
- "The MEF Service Type.";\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
+ "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
+ "MEF Service Entity.";\r
reference "[MEF12.2] Table 3.";\r
}\r
leaf tenant-id {\r
- type leafref{\r
- path "/mef-global:mef-global/mef-global:tenants-instances/mef-global:tenant-list/mef-global:name";\r
- }\r
- } \r
+ type leafref {\r
+ path "/mef-global:mef-global/mef-global:tenants-instances/mef-global:tenant-list/mef-global:name";\r
+ }\r
+ }\r
}\r
}\r
-}
\ No newline at end of file
+}\r
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
+ import mef-types { 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
+ "Web URL: http://metroethernetforum.org/ \\ E-mail: mibs@metroethernetforum.org\r
+ \\ Postal: Metro Ethernet Forum \\ 6033 W. Century Boulevard,\r
+ Suite 1107 \\ Los Angeles, CA 90045 \\ U.S.A. \\ 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
+ their physical interfaces, and the network topology. When the\r
+ NMS discovers a network device,it is to pull the device configuration\r
+ and operational status as expected for an NMS. Once the NMS has\r
+ a network device's configuration, it creates the /mef-topology/devices/device{}\r
+ entry and populates the list of physical interfaces. The Peers\r
+ entries are populated as configuration to reflect physical cabling\r
+ interconnections.Hints could be detected from LLDP Neighbor information[802.1AB].\r
+ Reference Overview: A number of base documents have been used\r
+ to create the MEF Topology YANG Module. The following are the\r
+ abbreviations for the baseline documents: [RFC 6991] refers to\r
+ IETF RFC 6991 'Common YANG Data Types', 2013-07-15 [RFC 6643]\r
+ refers to IETF RFC 6643 'Translation of Structure of Management\r
+ Information Version 2 (SMIv2) MIB Modules to YANG Modules', 2011-11-25\r
+ [802.1AB] refers to 'Station and Media Access Control Connectivity\r
+ Discovery', IEEE 802.1AB-2009, September 2009 [802.1q] refers\r
+ to IEEE 802.1Q-2011 'IEEE Standard for Local and metropolitan\r
+ area networks --Media Access Control (MAC) Bridges and Virtual\r
+ Bridged Local Area Networks, August 2011 [802-2001] refers to\r
+ 'IEEE Standard for Local and Metropolitan Area Networks: Overview\r
+ and Architecture', IEEE 802-2001, February 2002 [MEF10.3] refers\r
+ to MEF 10.3 'Ethernet Services Attributes Phase 3', October 2013\r
+ [MEF6.2] refers to MEF 6.2 'EVC Ethernet Services Defintions Phase\r
+ 3', August 2014 [MEF40] refers to MEF 40 'UNI and EVC Definition\r
+ of Managed Objects', April 2013 [MEF45] refers to MEF 45 'Multi-CEN\r
+ L2CP', August 2014 [MEF7.2] refers to MEF 7.2 'Carrier Ethernet\r
+ Management Information Model', April 2013 [MEF7.3] refers to MEF\r
+ 7.3 'Carrier Ethernet Management Information Model', Working Draft\r
+ #1 2015 [RFC 2737] refers to IETF RFC 2737 'Entity MIB (Version\r
+ 2)', December 1999 [RFC 2863] refers to IETF RFC 2863 'The Interfaces\r
+ Group MIB', June 2000 [RFC 3419] refers to IETF RFC 3419 'Textual\r
+ Conventions for Transport Addresses', December 2002 [Y.1731] refers\r
+ to ITU-T Y.1731 'OAM functions and mechanisms for Ethernet based\r
+ networks', July 2011 [Q.840.1] refers to ITU-T Q.840.1 'Requirements\r
+ and analysis for NMS-EMS management interface of Ethernet over\r
+ Transport and Metro Ethernet Network(EoT/MEN)' March 2007";\r
revision 2015-05-26 {\r
description\r
- "Formal Project Review Draft 1.";\r
+ "Formal Project Review Draft 1.";\r
reference "EVC Ethernet Services Definitions YANG Modules " +\r
- "(MEF XX), TBD";\r
- } \r
- \r
+ "(MEF XX), TBD";\r
+ }\r
+\r
container mef-topology {\r
description\r
- "MEF Topology";\r
+ "MEF Topology";\r
container devices {\r
description\r
- "Network Devices in the CEN.";\r
+ "Network Devices in the CEN.";\r
list device {\r
key "dev-id";\r
description\r
- "Network Device List.";\r
+ "Network Device List.";\r
container interfaces {\r
description\r
- "Physical Ports/Interfaces associated with this " +\r
- "Network Device.";\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
+ "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
+ "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
+ "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
type mef-types:device-role;\r
default "ce";\r
description\r
- "The role of this device in the network.";\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
+ "Device Identifier.";\r
}\r
leaf device-name {\r
- type string;\r
+ type string;\r
}\r
}\r
}\r
container connections {\r
description\r
- "Physical Network Connections"; \r
+ "Physical Network Connections";\r
list connection {\r
key "name";\r
leaf name {\r
}\r
container endpoint-1 {\r
description\r
- "End Point 1";\r
+ "End Point 1";\r
leaf device {\r
type leafref {\r
- path "../../../../devices/device/dev-id";\r
+ path "../../../../devices/device/dev-id";\r
}\r
description\r
- "Hostname or IP Address for the End Point's Device.";\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
+ "The Phy Name for the End Point's Physical Port.";\r
}\r
}\r
container endpoint-2 {\r
description\r
- "End Point 2";\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
+ "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
+ "The Phy Name for the End Point's Physical Port.";\r
}\r
}\r
}\r
}\r
}\r
-}
\ No newline at end of file
+}\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
+ "Web URL: http://metroethernetforum.org/ E-mail: mibs@metroethernetforum.org\r
+ Postal: Metro Ethernet Forum 6033 W. Century Boulevard, Suite\r
+ 1107 Los Angeles, CA 90045 U.S.A. Phone: +1 310-642-2800 Fax:\r
+ +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
+ "This module defines the YANG Type Definitions and shared (templated)\r
+ groupings of data elementsused by MEF YANG Modules. Reference\r
+ Overview: A number of base documents have been used to create\r
+ the MEF Types YANG Module. The following are the abbreviations\r
+ for the baseline documents: [RFC 6991] refers to IETF RFC 6991\r
+ 'Common YANG Data Types', 2013-07-15 [RFC 6643] refers to IETF\r
+ RFC 6643 'Translation of Structure of Management Information Version\r
+ 2 (SMIv2) MIB Modules to YANG Modules', 2011-11-25 [802.1AB] refers\r
+ to 'Station and Media Access Control Connectivity Discovery',\r
+ IEEE 802.1AB-2009, September 2009 [802.1q] refers to IEEE 802.1Q-2011\r
+ 'IEEE Standard for Local and metropolitan area networks --Media\r
+ Access Control (MAC) Bridges and Virtual Bridged Local Area Networks,\r
+ August 2011 [802-2001] refers to 'IEEE Standard for Local and\r
+ Metropolitan Area Networks: Overview and Architecture', IEEE 802-2001,\r
+ February 2002 [MEF10.3] refers to MEF 10.3 'Ethernet Services\r
+ Attributes Phase 3', October 2013 [MEF6.2] refers to MEF 6.2 'EVC\r
+ Ethernet Services Defintions Phase 3', August 2014 [MEF40] refers\r
+ to MEF 40 'UNI and EVC Definition of Managed Objects', April 2013\r
+ [MEF45] refers to MEF 45 'Multi-CEN L2CP', August 2014 [MEF7.2]\r
+ refers to MEF 7.2 'Carrier Ethernet Management Information Model',\r
+ April 2013 [MEF7.3] refers to MEF 7.3 'Carrier Ethernet Management\r
+ Information Model', Working Draft #1 2015 [RFC 2737] refers to\r
+ IETF RFC 2737 'Entity MIB (Version 2)', December 1999 [RFC 2863]\r
+ refers to IETF RFC 2863 'The Interfaces Group MIB', June 2000\r
+ [RFC 3419] refers to IETF RFC 3419 'Textual Conventions for Transport\r
+ Addresses', December 2002 [Y.1731] refers to ITU-T Y.1731 'OAM\r
+ functions and mechanisms for Ethernet based networks', July 2011\r
+ [Q.840.1] refers to ITU-T Q.840.1 'Requirements and analysis for\r
+ NMS-EMS management interface of Ethernet over Transport and Metro\r
+ Ethernet Network(EoT/MEN)' March 2007";\r
revision 2015-05-26 {\r
description\r
- "Formal Project Review Draft 1.";\r
+ "Formal Project Review Draft 1.";\r
reference "EVC Ethernet Services Definitions YANG Modules " +\r
- "(MEF XX), TBD";\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
+ "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
+ "10BASE2";\r
}\r
identity ieee8023-10BASE5 {\r
base ieee-8023-interface-type;\r
description\r
- "10BASE5";\r
+ "10BASE5";\r
}\r
identity ieee8023-10BASE-F {\r
base ieee-8023-interface-type;\r
description\r
- "10BASEF";\r
+ "10BASEF";\r
}\r
identity ieee8023-10BASE-FB {\r
base ieee-8023-interface-type;\r
description\r
- "10BASE-FB";\r
+ "10BASE-FB";\r
}\r
identity ieee8023-1000BASE-PX-D {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-PX-D";\r
+ "1000BASE-PX-D";\r
}\r
identity ieee8023-1000BASE-PX-U {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-PX-U";\r
+ "1000BASE-PX-U";\r
}\r
identity ieee8023-10BASE-FL {\r
base ieee-8023-interface-type;\r
description\r
- "10BASE-FL";\r
+ "10BASE-FL";\r
}\r
identity ieee8023-10BASE-FP {\r
base ieee-8023-interface-type;\r
description\r
- "10BASE-FP";\r
+ "10BASE-FP";\r
}\r
identity ieee8023-10BASE-T {\r
base ieee-8023-interface-type;\r
description\r
- "10BASE-T";\r
+ "10BASE-T";\r
}\r
identity ieee8023-10BASE-Te {\r
base ieee-8023-interface-type;\r
description\r
- "10BASE-Te";\r
+ "10BASE-Te";\r
}\r
identity ieee8023-10BROAD36 {\r
base ieee-8023-interface-type;\r
description\r
- "10BROAD36";\r
+ "10BROAD36";\r
}\r
identity ieee8023-10PASS-TS {\r
base ieee-8023-interface-type;\r
description\r
- "10PASS-TS";\r
+ "10PASS-TS";\r
}\r
identity ieee8023-100BASE-BX10 {\r
base ieee-8023-interface-type;\r
description\r
- "100BASE-BX10";\r
+ "100BASE-BX10";\r
}\r
identity ieee8023-100BASE-FX {\r
base ieee-8023-interface-type;\r
description\r
- "100BASE-FX";\r
+ "100BASE-FX";\r
}\r
identity ieee8023-100BASE-LX10 {\r
base ieee-8023-interface-type;\r
description\r
- "100BASE-LX10";\r
+ "100BASE-LX10";\r
}\r
identity ieee8023-100BASE-T {\r
base ieee-8023-interface-type;\r
description\r
- "100BASE-T";\r
+ "100BASE-T";\r
}\r
identity ieee8023-100BASE-T2 {\r
base ieee-8023-interface-type;\r
description\r
- "100BASE-T2";\r
+ "100BASE-T2";\r
}\r
identity ieee8023-100BASE-T4 {\r
base ieee-8023-interface-type;\r
description\r
- "100BASE-T4";\r
+ "100BASE-T4";\r
}\r
identity ieee8023-100BASE-TX {\r
base ieee-8023-interface-type;\r
description\r
- "100BASE-TX";\r
+ "100BASE-TX";\r
}\r
identity ieee8023-100BASE-X {\r
base ieee-8023-interface-type;\r
description\r
- "100BASE-X";\r
+ "100BASE-X";\r
}\r
identity ieee8023-1000BASE-BX10 {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-BX10";\r
+ "1000BASE-BX10";\r
}\r
identity ieee8023-1000BASE-CX {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-CX";\r
+ "1000BASE-CX";\r
}\r
identity ieee8023-1000BASE-KX {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-KX";\r
+ "1000BASE-KX";\r
}\r
identity ieee8023-1000BASE-LX {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-LX";\r
+ "1000BASE-LX";\r
}\r
identity ieee8023-1000BASE-LX10 {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-LX10";\r
+ "1000BASE-LX10";\r
}\r
identity ieee8023-1000BASE-PX10 {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-PX10";\r
+ "1000BASE-PX10";\r
}\r
identity ieee8023-1000BASE-PX20 {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-PX20";\r
+ "1000BASE-PX20";\r
}\r
identity ieee8023-1000BASE-SX {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-SX";\r
+ "1000BASE-SX";\r
}\r
identity ieee8023-1000BASE-T {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-T";\r
+ "1000BASE-T";\r
}\r
identity ieee8023-1000BASE-X {\r
base ieee-8023-interface-type;\r
description\r
- "1000BASE-X";\r
+ "1000BASE-X";\r
}\r
identity ieee8023-10GBASE-CX4 {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-CX4";\r
+ "10GBASE-CX4";\r
}\r
identity ieee8023-10GBASE-E {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-E";\r
+ "10GBASE-E";\r
}\r
identity ieee8023-10GBASE-ER {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-ER";\r
+ "10GBASE-ER";\r
}\r
identity ieee8023-10GBASE-EW {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-EW";\r
+ "10GBASE-EW";\r
}\r
identity ieee8023-10GBASE-KR {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-KR";\r
+ "10GBASE-KR";\r
}\r
identity ieee8023-10GBASE-KX4 {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-KX4";\r
+ "10GBASE-KX4";\r
}\r
identity ieee8023-10GBASE-L {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-L";\r
+ "10GBASE-L";\r
}\r
identity ieee8023-10GBASE-LR {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-LR";\r
+ "10GBASE-LR";\r
}\r
identity ieee8023-10GBASE-LRM {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-LRM";\r
+ "10GBASE-LRM";\r
}\r
identity ieee8023-10GBASE-LW {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-LW";\r
+ "10GBASE-LW";\r
}\r
identity ieee8023-10GBASE-LX4 {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-LX4";\r
+ "10GBASE-LX4";\r
}\r
identity ieee8023-10GBASE-PR {\r
base ieee-8023-interface-type;\r
description\r
- "10GBASE-PR";\r
+ "10GBASE-PR";\r
}\r
typedef identifier45 {\r
type string {\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
+ "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
}\r
units "bytes";\r
description\r
- "Max Frame Size Type in bytes. Service Frames larger than " +\r
- "this size will be discarded.";\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
+ "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
+ "Service Provider Type";\r
reference "[MEF10.3].";\r
}\r
typedef cen-type {\r
type identifier45;\r
description\r
- "CEN Type";\r
+ "CEN Type";\r
reference "[MEF10.3].";\r
}\r
typedef subscriber-type {\r
type identifier45;\r
description\r
- "Subscriber Type";\r
+ "Subscriber Type";\r
reference "[MEF10.3].";\r
}\r
typedef evc-id-type {\r
type identifier45;\r
description\r
- "EVC ID Type";\r
+ "EVC ID Type";\r
reference "[MEF10.3].";\r
}\r
typedef simple-percent {\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "Unknown";\r
}\r
enum "locked" {\r
description\r
- "Locked";\r
+ "Locked";\r
}\r
enum "shutting-down" {\r
description\r
- "Shutting Down";\r
+ "Shutting Down";\r
}\r
enum "unlocked" {\r
description\r
- "Unlocked";\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
+ "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
+ "One-way Frame Delay Performance.";\r
}\r
enum "one-way-frame-delay-range-performance" {\r
description\r
- "One-way Frame Delay Range Performance.";\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
+ "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
+ "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
+ "One-way Frame Loss Ratio Performance.";\r
}\r
enum "one-way-availability-performance" {\r
description\r
- "One-way Availability Performance.";\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
+ "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
+ "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
+ "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
+ "One-way Multiple EVC Group Availability Performance.";\r
}\r
}\r
description\r
- "Performance Metrics.";\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
+ "Point to Point.";\r
}\r
enum "multipoint-to-multipoint" {\r
description\r
- "Multipoint to Multipoint.";\r
+ "Multipoint to Multipoint.";\r
}\r
enum "rooted-multipoint" {\r
description\r
- "Rooted Multipoint.";\r
+ "Rooted Multipoint.";\r
}\r
}\r
description\r
- "EVC Type";\r
+ "EVC Type";\r
reference "[MEF10.3] Section 8.1.";\r
}\r
+ typedef ipvc-type {\r
+ type enumeration {\r
+ enum "multipoint" {\r
+ description\r
+ "Multipoint.";\r
+ }\r
+ enum "cloud-access" {\r
+ description\r
+ "Cloud-access.";\r
+ }\r
+ enum "rooted-multipoint" {\r
+ description\r
+ "Rooted Multipoint.";\r
+ }\r
+ }\r
+ description\r
+ "IPVC Type";\r
+ }\r
typedef evc-status-type {\r
type enumeration {\r
enum "new" {\r
description\r
- "New.";\r
+ "New.";\r
}\r
enum "active" {\r
description\r
- "Active.";\r
+ "Active.";\r
}\r
enum "inactive" {\r
description\r
- "Inactive (Not Active).";\r
+ "Inactive (Not Active).";\r
}\r
enum "partially-active" {\r
description\r
- "PartiallyActive.";\r
+ "PartiallyActive.";\r
}\r
}\r
description\r
- "EVC Status Type";\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
+ "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
+ "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
+ "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
+ "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
+ "Service Frames are unconditionally delivered no matter the content\r
+ of the Service Frame. An example of this is 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
+ "Service Frame are conditionally delivered to the destination\r
+ UNI. The condition is specified, for example via a bandwidth profile\r
+ or unicast MAC address learning.";\r
}\r
}\r
description\r
- "A MEF service can have one of three different " +\r
- "delivery types.";\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
+ "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
+ "Protection mechanism is Link Aggreg- ation as specified in [802.3],\r
+ with one link in 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
+ "Protection method defined that is not Link Aggregation active/standby\r
+ mode.";\r
}\r
}\r
description\r
- "This object type of resiliency mechanism for a " +\r
- "specific UNI.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "[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
+ "UNI Mode.";\r
}\r
enum "vuni" {\r
description\r
- "VUNI Mode.";\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
+ "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
+ "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
+ "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
+ "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
+ "[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
+ "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
+ "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
+ "[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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "Green.";\r
}\r
enum "yellow" {\r
description\r
- "Yellow.";\r
+ "Yellow.";\r
}\r
}\r
description\r
- "CoS Color.";\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
+ "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
+ "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
+ "Bandwidth Profile Excess Information Rate in " +\r
+ "Kilobits Per Second.";\r
reference "[MEF10.3] [R146], [R147].";\r
}\r
typedef bwp-ebs-type {\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
+ "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
range "1 .. max";\r
}\r
description\r
- "ELMI Polling Counter.";\r
+ "ELMI Polling Counter.";\r
reference "[MEF16] Section 5.6.1.";\r
}\r
typedef elmi-status-error-threshold-type {\r
range "2 .. 10";\r
}\r
description\r
- "The count of consecutive ELMI status polling errors " +\r
- "before raising an error.";\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
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
+ "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
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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "Phy Auto-negotiation Enabled.";\r
}\r
enum "off" {\r
description\r
- "Phy Auto-negotiation Disabled.";\r
+ "Phy Auto-negotiation Disabled.";\r
}\r
}\r
description\r
- "Phy Auto-negotiation Enabled/Disabled.";\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
+ "EVC.";\r
}\r
enum "tunnel-1" {\r
description\r
- "Tunnel Type 1.";\r
+ "Tunnel Type 1.";\r
}\r
enum "tunnel-2" {\r
description\r
- "Tunnel Type 2.";\r
+ "Tunnel Type 2.";\r
}\r
enum "ovc" {\r
description\r
- "OVC.";\r
+ "OVC.";\r
}\r
}\r
description\r
- "MEF Service Entity Type.";\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "[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
+ "Ethertype.";\r
}\r
enum "llc" {\r
description\r
- "LLC.";\r
+ "LLC.";\r
}\r
enum "other" {\r
description\r
- "Other: Not using LLC nor Ethertype to specify " +\r
- "the Protocol ID.";\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
+ "The Peering Protocol Identifier is one of Ethertype, " +\r
+ "LLC, or Other.";\r
reference "[MEF45] Section 7.";\r
}\r
typedef ieee8021p-priority-type {\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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "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
+ "[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
+ 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
+ "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
+ "[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
+ 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
+ "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
+ "[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
+ "10M bits-per-second.";\r
}\r
enum "100M" {\r
description\r
- "100M bits-per-second.";\r
+ "100M bits-per-second.";\r
}\r
enum "1G" {\r
description\r
- "1G bits-per-second.";\r
+ "1G bits-per-second.";\r
}\r
enum "10G" {\r
description\r
- "10G bits-per-second.";\r
+ "10G bits-per-second.";\r
}\r
enum "40G" {\r
description\r
- "40G bits-per-second.";\r
+ "40G bits-per-second.";\r
}\r
enum "100G" {\r
description\r
- "100G bits-per-second.";\r
+ "100G bits-per-second.";\r
}\r
}\r
description\r
- "The maximum theoretical bandwidth for the phy.";\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
enum "p" {\r
description "Core Router";\r
}\r
- } \r
- } \r
-}
\ No newline at end of file
+ }\r
+ }\r
+}\r
<groupId>org.opendaylight.netvirt</groupId>
<artifactId>elanmanager-api</artifactId>
<version>${vpnservices.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.genius</groupId>
+ <artifactId>arputil-api</artifactId>
+ <version>${genius.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.netvirt</groupId>
+ <artifactId>vpnmanager-api</artifactId>
+ <version>${vpnservices.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<dependency>
<groupId>org.opendaylight.mdsal.model</groupId>
<artifactId>ietf-yang-types-20130715</artifactId>
- </dependency>
- <!-- dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId>
- </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId>
- </dependency -->
-
+ </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
-
-
+ <dependency>
+ <groupId>commons-net</groupId>
+ <artifactId>commons-net</artifactId>
+ </dependency>
</dependencies>
</project>
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.unimgr.api.UnimgrDataTreeChangeListener;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.Evc;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.Unis;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.UnisBuilder;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.UniBuilder;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.UniKey;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.EvcUniCeVlansBuilder;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlanBuilder;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlanKey;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.Evc;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.Unis;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.UnisBuilder;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.UniBuilder;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.UniKey;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.EvcUniCeVlansBuilder;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlanBuilder;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlanKey;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.EvcUniRoleType;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.Identifier45;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.unimgr.api.UnimgrDataTreeChangeListener;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.physical.layers.links.Link;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.Evc;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.EvcUniCeVlans;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlan;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.Evc;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.EvcUniCeVlans;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlan;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.EvcType;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.EvcUniRoleType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
}
private void createInterface(String instanceName, Uni uni, boolean isEtree) {
-
EvcUniUtils.addUni(dataBroker, uni);
-
- String uniId = uni.getUniId().getValue();
-
- Link link = EvcUniUtils.getLink(dataBroker, uni);
- String interfaceName = uniId;
-
- boolean result = waitForGeniusToUpdateInterface(interfaceName);
- if (!result) {
- log.error("State interface {} is not configured (missing ifIndex)", interfaceName);
- return;
- }
-
+ String interfaceName = uni.getUniId().getValue();
EvcUniRoleType role = uni.getRole();
-
EvcUniCeVlans evcUniCeVlans = uni.getEvcUniCeVlans();
if (evcUniCeVlans != null && evcUniCeVlans.getEvcUniCeVlan() != null
&& !evcUniCeVlans.getEvcUniCeVlan().isEmpty()) {
for (EvcUniCeVlan x : evcUniCeVlans.getEvcUniCeVlan()) {
-
interfaceName = NetvirtUtils.getInterfaceNameForVlan(interfaceName, x.getVid().toString());
- log.info("Adding {} interface: {}", isEtree ? "etree" : "elan", interfaceName);
-
- if (isEtree) {
- NetvirtUtils.createEtreeInterface(dataBroker, instanceName, interfaceName,
- RoleToInterfaceType(role));
- } else {
- NetvirtUtils.createElanInterface(dataBroker, instanceName, interfaceName);
- }
+ NetvirtUtils.createInterface(dataBroker, instanceName, interfaceName, RoleToInterfaceType(role),
+ isEtree);
}
} else {
- log.info("Adding {} interface: {}", isEtree ? "etree" : "elan", interfaceName);
- if (isEtree) {
- NetvirtUtils.createEtreeInterface(dataBroker, instanceName, interfaceName, RoleToInterfaceType(role));
- } else {
- NetvirtUtils.createElanInterface(dataBroker, instanceName, interfaceName);
- }
+ NetvirtUtils.createInterface(dataBroker, instanceName, interfaceName, RoleToInterfaceType(role), isEtree);
}
}
- private boolean waitForGeniusToUpdateInterface(String interfaceName) {
- int retries = 10;
-
- while (retries > 0) {
- Optional<Interface> optional = MdsalUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL,
- NetvirtUtils.getStateInterfaceIdentifier(interfaceName));
-
- if (!optional.isPresent()) {
- log.info("State interface {} doesn't exist", interfaceName);
- return false;
- }
-
- Interface stateInterface = optional.get();
-
- if (stateInterface.getIfIndex() != null) {
- log.info("State interface configured with ifIndex {}", stateInterface.getIfIndex());
-
- // Wait a bit, because if we continue too soon this will not
- // work.
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- }
-
- return true;
- }
-
- retries -= 1;
- try {
- Thread.sleep(1500);
- } catch (InterruptedException e) {
- }
- }
-
- return false;
- }
-
private static EtreeInterfaceType RoleToInterfaceType(EvcUniRoleType role) {
if (role == EvcUniRoleType.Root) {
return EtreeInterfaceType.Root;
String uniId = uni.getUniId().getValue();
EvcUniCeVlans evcUniCeVlans = uni.getEvcUniCeVlans();
-
- Link link = EvcUniUtils.getLink(dataBroker, uni);
String interfaceName = uniId;
if (evcUniCeVlans != null && !evcUniCeVlans.getEvcUniCeVlan().isEmpty()) {
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.PhysicalLayers;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.physical.layers.Links;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.physical.layers.links.Link;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.EvcUniCeVlans;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlan;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.EvcUniCeVlans;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlan;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
private static final Logger logger = LoggerFactory.getLogger(EvcUniUtils.class);
- public static Link getLink(DataBroker dataBroker, Uni evcUni) {
+ public static Link getLink(DataBroker dataBroker, String uniId) {
Optional<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.Uni> optional = MdsalUtils
- .read(dataBroker, LogicalDatastoreType.CONFIGURATION,
- MefUtils.getUniInstanceIdentifier(evcUni.getUniId().getValue()));
+ .read(dataBroker, LogicalDatastoreType.CONFIGURATION, MefUtils.getUniInstanceIdentifier(uniId));
if (!optional.isPresent()) {
- logger.error("A matching Uni doesn't exist for EvcUni {}", evcUni.getUniId());
+ logger.error("A matching Uni doesn't exist for EvcUni {}", uniId);
return null;
}
PhysicalLayers physicalLayers = uni.getPhysicalLayers();
if (physicalLayers == null) {
- logger.warn("Uni {} is missing PhysicalLayers", evcUni.getUniId());
+ logger.warn("Uni {} is missing PhysicalLayers", uniId);
return null;
}
Links links = physicalLayers.getLinks();
if (links == null || links.getLink() == null) {
- logger.warn("Uni {} is has no links", evcUni.getUniId());
+ logger.warn("Uni {} is has no links", uniId);
return null;
}
String uniId = data.getUniId().getValue();
WriteTransaction tx = createTransaction(dataBroker);
- Link link = EvcUniUtils.getLink(dataBroker, data);
-
logger.info("Removing trunk {}", uniId);
- delete(uniId, tx);
+ NetvirtUtils.delete(uniId, tx);
Optional<List<EvcUniCeVlan>> ceVlansOptional = getCeVlans(data);
if (!ceVlansOptional.isPresent()) {
try {
String uniId = data.getUniId().getValue();
WriteTransaction tx = createTransaction(dataBroker);
- Link link = EvcUniUtils.getLink(dataBroker, data);
+ Link link = EvcUniUtils.getLink(dataBroker, uniId);
String interfaceName = uniId;
- addTrunkInterface(interfaceName, getTrunkParentName(link), tx);
+ addTrunkInterface(interfaceName, MefUtils.getTrunkParentName(link), tx);
Optional<List<EvcUniCeVlan>> ceVlansOptional = getCeVlans(data);
if (ceVlansOptional.isPresent()) {
private static void addTrunkInterface(String interfaceName, String parentInterfaceName, WriteTransaction tx) {
logger.info("Adding VLAN trunk {} ParentRef {}", interfaceName, parentInterfaceName);
Interface trunkInterface = NetvirtUtils.createTrunkInterface(interfaceName, parentInterfaceName);
- write(trunkInterface, tx);
+ NetvirtUtils.write(trunkInterface, tx);
}
private static void addTrunkMemberInterfaces(String parentInterfaceName, Iterable<EvcUniCeVlan> ceVlans,
logger.info("Adding VLAN trunk-member {} ParentRef {}", interfaceName, parentInterfaceName);
Interface trunkMemberInterface = NetvirtUtils.createTrunkMemberInterface(interfaceName, parentInterfaceName,
vlanId.intValue());
- write(trunkMemberInterface, tx);
+ NetvirtUtils.write(trunkMemberInterface, tx);
}
}
Long vlanId = (Long) vid;
String interfaceName = NetvirtUtils.getInterfaceNameForVlan(parentInterfaceName, vlanId.toString());
logger.info("Removing VLAN trunk-member {}", interfaceName);
- delete(interfaceName, tx);
+ NetvirtUtils.delete(interfaceName, tx);
}
}
- private static InstanceIdentifier<Interface> createInterfaceIdentifier(String interfaceName) {
- return InstanceIdentifier.builder(Interfaces.class).child(Interface.class, new InterfaceKey(interfaceName))
- .build();
- }
-
private static WriteTransaction createTransaction(DataBroker dataBroker) {
WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
return tx;
}
}
- private static void write(Interface iface, WriteTransaction tx) {
- String interfaceName = iface.getName();
- InstanceIdentifier<Interface> interfaceIdentifier = createInterfaceIdentifier(interfaceName);
- tx.put(LogicalDatastoreType.CONFIGURATION, interfaceIdentifier, iface, true);
- }
-
- private static void delete(String interfaceName, WriteTransaction tx) {
- InstanceIdentifier<Interface> interfaceIdentifier = createInterfaceIdentifier(interfaceName);
- tx.delete(LogicalDatastoreType.CONFIGURATION, interfaceIdentifier);
- }
-
- private static String getTrunkParentName(Link link) {
- String deviceName = link.getDevice().getValue();
- String interfaceName = link.getInterface().toString();
- return interfaceName;
- }
-
private static Optional<List<EvcUniCeVlan>> getCeVlans(Uni uni) {
EvcUniCeVlans ceVlans = uni.getEvcUniCeVlans();
if (ceVlans == null) {
return Optional.fromNullable(ceVlans.getEvcUniCeVlan());
}
-
- public static String getDeviceInterfaceName(String deviceName, String interfaceName) {
- return deviceName + IfmConstants.OF_URI_SEPARATOR + interfaceName;
- }
}
--- /dev/null
+/*
+ * Copyright (c) 2016 Hewlett Packard Enterprise, Co. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.unimgr.mef.netvirt;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.unimgr.api.UnimgrDataTreeChangeListener;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.ip.unis.IpUni;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.ip.unis.ip.uni.subnets.Subnet;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.ipvc.choice.Ipvc;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.ipvc.choice.ipvc.unis.Uni;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.OdlArputilService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.etree.rev160614.EtreeInterface.EtreeInterfaceType;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class IpvcListener extends UnimgrDataTreeChangeListener<Ipvc> {
+ private static final Logger Log = LoggerFactory.getLogger(IpvcListener.class);
+ private ListenerRegistration<IpvcListener> ipvcListenerRegistration;
+ private final NotificationPublishService notificationPublishService;
+ private final OdlArputilService arpUtilService;
+
+ public IpvcListener(final DataBroker dataBroker, final NotificationPublishService notPublishService,
+ final OdlArputilService arputilService) {
+ super(dataBroker);
+ this.notificationPublishService = notPublishService;
+ this.arpUtilService = arputilService;
+ registerListener();
+ }
+
+ public void registerListener() {
+ try {
+ final DataTreeIdentifier<Ipvc> dataTreeIid = new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION,
+ MefUtils.getIpvcInstanceIdentifier());
+ ipvcListenerRegistration = dataBroker.registerDataTreeChangeListener(dataTreeIid, this);
+ Log.info("IpvcDataTreeChangeListener created and registered");
+ } catch (final Exception e) {
+ Log.error("Ipvc DataChange listener registration failed !", e);
+ throw new IllegalStateException("Ipvc registration Listener failed.", e);
+ }
+ }
+
+ @Override
+ public void close() throws Exception {
+ ipvcListenerRegistration.close();
+ }
+
+ @Override
+ public void add(DataTreeModification<Ipvc> newDataObject) {
+ if (newDataObject.getRootPath() != null && newDataObject.getRootNode() != null) {
+ Log.info("ipvc {} created", newDataObject.getRootNode().getIdentifier());
+ addIpvc(newDataObject);
+ }
+ }
+
+ @Override
+ public void remove(DataTreeModification<Ipvc> removedDataObject) {
+ if (removedDataObject.getRootPath() != null && removedDataObject.getRootNode() != null) {
+ Log.info("ipvc {} deleted", removedDataObject.getRootNode().getIdentifier());
+ removeIpvc(removedDataObject);
+ }
+ }
+
+ @Override
+ public void update(DataTreeModification<Ipvc> modifiedDataObject) {
+ if (modifiedDataObject.getRootPath() != null && modifiedDataObject.getRootNode() != null) {
+ Log.info("ipvc {} updated", modifiedDataObject.getRootNode().getIdentifier());
+ updateIpvc(modifiedDataObject);
+ }
+ }
+
+ private void addIpvc(DataTreeModification<Ipvc> newDataObject) {
+ try {
+ Ipvc data = newDataObject.getRootNode().getDataAfter();
+ String instanceName = data.getIpvcId().getValue();
+ final String vpnName = NetvirtVpnUtils.getUUidFromString(instanceName);
+
+ Log.info("Adding vpn instance: " + instanceName);
+ NetvirtVpnUtils.createVpnInstance(dataBroker, vpnName);
+
+ // Create elan interfaces
+ for (Uni uni : data.getUnis().getUni()) {
+ createInterfaces(vpnName, uni);
+ }
+ } catch (final Exception e) {
+ Log.error("Add ipvc failed !", e);
+ }
+ }
+
+ private void updateIpvc(DataTreeModification<Ipvc> modifiedDataObject) {
+ try {
+ Ipvc original = modifiedDataObject.getRootNode().getDataBefore();
+ Ipvc update = modifiedDataObject.getRootNode().getDataAfter();
+
+ String instanceName = original.getIpvcId().getValue();
+
+ Log.info("Updating elan instance: " + instanceName);
+
+ List<Uni> originalUni = original.getUnis().getUni();
+ List<Uni> updateUni = update.getUnis().getUni();
+ if (updateUni != null && !updateUni.isEmpty()) {
+ List<Uni> existingClonedUni = new ArrayList<>();
+ if (originalUni != null && !originalUni.isEmpty()) {
+ existingClonedUni.addAll(0, originalUni);
+ originalUni.removeAll(updateUni);
+ updateUni.removeAll(existingClonedUni);
+ // removing the Uni which are not presented in the updated
+ // List
+ for (Uni uni : originalUni) {
+ removeElanInterface(instanceName, uni);
+ }
+ }
+
+ // Adding the new Uni which are presented in the updated List
+ if (updateUni.size() > 0) {
+ for (Uni uni : updateUni) {
+ createInterfaces(original, uni);
+ }
+ }
+ } else if (originalUni != null && !originalUni.isEmpty()) {
+ for (Uni uni : originalUni) {
+ removeElanInterface(instanceName, uni);
+ }
+ }
+ } catch (final Exception e) {
+ Log.error("Update ipvc failed !", e);
+ }
+ }
+
+ private void removeIpvc(DataTreeModification<Ipvc> removedDataObject) {
+ try {
+ Ipvc data = removedDataObject.getRootNode().getDataBefore();
+
+ String instanceName = data.getIpvcId().getValue();
+
+ for (Uni uni : data.getUnis().getUni()) {
+ removeElanInterface(instanceName, uni);
+ }
+
+ Log.info("Removing elan instance: " + instanceName);
+ NetvirtUtils.deleteElanInstance(dataBroker, instanceName);
+ } catch (final Exception e) {
+ Log.error("Remove ipvc failed !", e);
+ }
+ }
+
+ private void createInterfaces(Ipvc ipvc, Uni uni) {
+ String instanceName = ipvc.getIpvcId().getValue();
+ createInterfaces(instanceName, uni);
+ }
+
+ private void createInterfaces(String vpnName, Uni uniInService) {
+ String uniId = uniInService.getUniId().getValue();
+ String ipUniId = uniInService.getIpUniId().getValue();
+
+ org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.Uni uni = IpvcUniUtils
+ .getUni(dataBroker, uniId);
+ if (uni == null) {
+ Log.error("Couldn't find uni {} for ipvc-uni", uniId);
+ throw new UnsupportedOperationException();
+ }
+ IpUni ipUni = IpvcUniUtils.getIpUni(dataBroker, uniId, ipUniId);
+ Integer vlan = (ipUni.getVlan()) != null ? ipUni.getVlan().getValue() : null;
+
+ Log.info("Adding/updating elan instance: " + uniId);
+ String elanName = NetvirtVpnUtils.getElanNameForVpnPort(uniId);
+ Log.info("Adding elan instance: " + elanName);
+ NetvirtUtils.updateElanInstance(dataBroker, elanName);
+
+ String interfaceName = NetvirtVpnUtils.getInterfaceNameForVlan(ipUniId, vlan);
+ Log.info("Adding trunk interface: " + interfaceName);
+ IpvcUniUtils.addUni(dataBroker, uniInService, interfaceName, vlan);
+
+ Log.info("Adding elan interface: " + interfaceName);
+ NetvirtUtils.createInterface(dataBroker, elanName, interfaceName, EtreeInterfaceType.Root, false);
+
+ Log.info("Adding vpn interface: " + interfaceName);
+ NetvirtVpnUtils.createUpdateVpnInterface(dataBroker, vpnName, interfaceName, ipUni.getIpAddress(),
+ uni.getMacAddress(), true, null);
+ NetvirtVpnUtils.createVpnPortFixedIp(dataBroker, vpnName, interfaceName, ipUni.getIpAddress(),
+ uni.getMacAddress());
+
+ Log.info("Adding connected network for interface : " + interfaceName);
+ NetvirtVpnUtils.addDirectSubnetToVpn(dataBroker, notificationPublishService, vpnName, elanName,
+ ipUni.getIpAddress(), interfaceName);
+
+ if (ipUni.getSubnets() != null) {
+ for (Subnet subnet : ipUni.getSubnets().getSubnet()) {
+ MacAddress gwMacAddress = NetvirtVpnUtils.resolveGwMac(dataBroker, arpUtilService, vpnName,
+ ipUni.getIpAddress(), subnet.getGateway(), interfaceName); // trunk
+ if (gwMacAddress == null) {
+ continue;
+ }
+ NetvirtVpnUtils.createUpdateVpnInterface(dataBroker, vpnName, interfaceName, subnet.getSubnet(),
+ gwMacAddress, false, ipUni.getIpAddress());
+ }
+ }
+ }
+
+ private void removeElanInterface(String instanceName, Uni uni) {
+ String uniId = uni.getIpUniId().getValue();
+ String interfaceName = uniId;
+ Log.info("Removing elan interface: " + uniId);
+ NetvirtUtils.deleteElanInterface(dataBroker, instanceName, interfaceName);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2016 Hewlett Packard Enterprise, Co. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.unimgr.mef.netvirt;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.ip.unis.IpUni;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.physical.layers.links.Link;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.ipvc.choice.ipvc.unis.Uni;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Optional;
+import com.google.common.util.concurrent.CheckedFuture;
+
+public class IpvcUniUtils {
+
+ private static final Logger logger = LoggerFactory.getLogger(IpvcUniUtils.class);
+
+ public static void addUni(DataBroker dataBroker, Uni data, String interfaceName, Integer vlanId) {
+ try {
+ String uniId = data.getUniId().getValue();
+ WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
+ Link link = EvcUniUtils.getLink(dataBroker, uniId);
+ addTrunkInterface(interfaceName, MefUtils.getTrunkParentName(link), vlanId, tx);
+ commitTransaction(tx);
+ } catch (final Exception e) {
+ logger.error("Add uni failed !", e);
+ }
+ }
+
+ private static void addTrunkInterface(String interfaceName, String parentInterfaceName, Integer vlanId,
+ WriteTransaction tx) {
+ logger.info("Adding VLAN trunk {} ParentRef {}", interfaceName, parentInterfaceName);
+ Interface trunkInterface = null;
+ if (vlanId != null) {
+ trunkInterface = NetvirtUtils.createTrunkMemberInterface(interfaceName, parentInterfaceName, vlanId);
+ } else {
+ trunkInterface = NetvirtUtils.createTrunkInterface(interfaceName, parentInterfaceName);
+ }
+ NetvirtUtils.writeInterface(trunkInterface, tx);
+ }
+
+ public static org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.Uni getUni(
+ DataBroker dataBroker, String uniId) {
+ Optional<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.Uni> optional = MdsalUtils
+ .read(dataBroker, LogicalDatastoreType.CONFIGURATION, MefUtils.getUniInstanceIdentifier(uniId));
+ if (!optional.isPresent()) {
+ logger.error("Couldn't find uni {} for ipvc-uni", uniId);
+ return null;
+ }
+ return optional.get();
+ }
+
+ public static IpUni getIpUni(DataBroker dataBroker, String uniId, String ipUniId) {
+ Optional<IpUni> optional = MdsalUtils.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
+ MefUtils.getIpUniInstanceIdentifier(uniId, ipUniId));
+
+ if (!optional.isPresent()) {
+ logger.error("A matching IpUni doesn't exist Uni {} IpUni {}", uniId, ipUniId);
+ return null;
+ }
+
+ return optional.get();
+ }
+
+ private static void commitTransaction(WriteTransaction tx) {
+ try {
+ CheckedFuture<Void, TransactionCommitFailedException> futures = tx.submit();
+ futures.get();
+ } catch (Exception e) {
+ logger.error("failed to commit transaction due to exception ", e);
+ }
+ }
+}
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.Unis;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.Uni;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.UniKey;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.IpUnis;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.PhysicalLayers;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.ip.unis.IpUni;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.ip.unis.IpUniKey;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.physical.layers.Links;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.physical.layers.links.Link;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.uni.physical.layers.links.LinkKey;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.MefServices;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.MefService;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.MefServiceKey;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.Evc;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.EvcBuilder;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.EvcUniCeVlans;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlan;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlanBuilder;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.Evc;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.EvcBuilder;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.ipvc.choice.Ipvc;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.topology.rev150526.MefTopology;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.topology.rev150526.mef.topology.Devices;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.topology.rev150526.mef.topology.devices.Device;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.EvcType;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.Identifier45;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.RetailSvcIdType;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.EvcStatusType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
return InstanceIdentifier.builder(MefInterfaces.class).child(Unis.class).child(Uni.class).build();
}
- public static InstanceIdentifier<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.Unis> getUnisInstanceIdentifier(
+ public static InstanceIdentifier<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.Unis> getUnisInstanceIdentifier(
String evcId) {
return InstanceIdentifier.builder(MefServices.class)
.child(MefService.class, new MefServiceKey(RetailSvcIdType.getDefaultInstance(evcId))).child(Evc.class)
- .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.Unis.class)
+ .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.Unis.class)
.build();
}
- public static InstanceIdentifier<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni> getEvcUniInstanceIdentifier(
+ public static InstanceIdentifier<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni> getEvcUniInstanceIdentifier(
String uniId) {
return InstanceIdentifier.builder(MefServices.class).child(MefService.class).child(Evc.class)
- .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.Unis.class)
- .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni.class,
- new org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.UniKey(
+ .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.Unis.class)
+ .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni.class,
+ new org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.UniKey(
new Identifier45(uniId)))
.build();
}
.child(Link.class, new LinkKey(new Identifier45(deviceId), interfaceId)).build();
}
+ public static InstanceIdentifier<IpUni> getIpUniInstanceIdentifier(String uniId, String ipUniId) {
+ return InstanceIdentifier.builder(MefInterfaces.class).child(Unis.class)
+ .child(Uni.class, new UniKey(new Identifier45(uniId))).child(IpUnis.class)
+ .child(IpUni.class, new IpUniKey(new Identifier45(ipUniId))).build();
+ }
+
public static InstanceIdentifier<Evc> getEvcInstanceIdentifier() {
return getMefServiceInstanceIdentifier().child(Evc.class);
}
return InstanceIdentifier.create(MefServices.class).child(MefService.class);
}
- public static InstanceIdentifier<MefService> getMefServiceInstanceIdentifier(
- RetailSvcIdType retailSvcIdType) {
+ public static InstanceIdentifier<MefService> getMefServiceInstanceIdentifier(RetailSvcIdType retailSvcIdType) {
return InstanceIdentifier.create(MefServices.class).child(MefService.class, new MefServiceKey(retailSvcIdType));
}
.child(Evc.class).build();
}
- private static InstanceIdentifier<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni> getEvcUniInstanceIdentifier(
+ private static InstanceIdentifier<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni> getEvcUniInstanceIdentifier(
String serviceName, String uniId) {
return InstanceIdentifier.builder(MefServices.class)
.child(MefService.class, new MefServiceKey(RetailSvcIdType.getDefaultInstance(serviceName)))
.child(Evc.class)
- .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.Unis.class)
- .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni.class, //
- new org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.UniKey(
+ .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.Unis.class)
+ .child(org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni.class, //
+ new org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.UniKey(
Identifier45.getDefaultInstance(uniId)))
.build();
}
public static Boolean EvcUniExists(DataBroker dataBroker, String instanceName, String uniId) {
logger.info("searching for uni id {} in service {}", uniId, instanceName);
- Optional<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni> uni = MdsalUtils
+ Optional<org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni> uni = MdsalUtils
.read(dataBroker, LogicalDatastoreType.CONFIGURATION, getEvcUniInstanceIdentifier(instanceName, uniId));
if (uni.isPresent()) {
logger.info("found uni");
return uni.isPresent();
}
+ public static String getTrunkParentName(Link link) {
+ String interfaceName = link.getInterface().toString();
+ return interfaceName;
+ }
+
+ public static String getInterfaceName(Link link, String uniId) {
+ String device = link.getDevice().getValue();
+ return NetvirtUtils.getDeviceInterfaceName(device, uniId);
+ }
+
+ public static InstanceIdentifier<Ipvc> getIpvcInstanceIdentifier() {
+ return InstanceIdentifier.create(MefServices.class).child(MefService.class).child(Ipvc.class);
+ }
+
+ public static String ipPrefixToString(IpPrefix ipAddress) {
+ if (ipAddress.getIpv4Prefix() != null) {
+ return ipAddress.getIpv4Prefix().getValue();
+ }
+
+ return ipAddress.getIpv6Prefix().getValue();
+ }
+
+ public static String ipAddressToString(IpAddress ipAddress) {
+ if (ipAddress.getIpv4Address() != null) {
+ return ipAddress.getIpv4Address().getValue();
+ }
+
+ return ipAddress.getIpv6Address().getValue();
+ }
+
}
package org.opendaylight.unimgr.mef.netvirt;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.interfacemanager.globals.IfmConstants;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInstances;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInterfaces;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceBuilder;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceKey;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceBuilder;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceKey;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.L2vlan;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.interfaces.ElanInterface;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.interfaces.ElanInterfaceBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.interfaces.ElanInterfaceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.Adjacencies;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.base.Optional;
public class NetvirtUtils {
+ private static final Logger logger = LoggerFactory.getLogger(MdsalUtils.class);
+
public final static String VLAN_SEPARATOR = ".";
public static void createElanInstance(DataBroker dataBroker, String instanceName, boolean isEtree) {
public static Optional<Interface> getIetfInterface(DataBroker dataBroker, String interfaceName) {
return MdsalUtils.read(dataBroker, LogicalDatastoreType.CONFIGURATION, getInterfaceIdentifier(interfaceName));
}
+
+ public static String getDeviceInterfaceName(String deviceName, String interfaceName) {
+ return deviceName + IfmConstants.OF_URI_SEPARATOR + interfaceName;
+ }
+
+ public static void writeInterface(Interface iface, WriteTransaction tx) {
+ String interfaceName = iface.getName();
+ InstanceIdentifier<Interface> interfaceIdentifier = createInterfaceIdentifier(interfaceName);
+ tx.put(LogicalDatastoreType.CONFIGURATION, interfaceIdentifier, iface, true);
+ }
+
+ public static void write(Interface iface, WriteTransaction tx) {
+ String interfaceName = iface.getName();
+ InstanceIdentifier<Interface> interfaceIdentifier = createInterfaceIdentifier(interfaceName);
+ tx.put(LogicalDatastoreType.CONFIGURATION, interfaceIdentifier, iface, true);
+ }
+
+ public static void delete(String interfaceName, WriteTransaction tx) {
+ InstanceIdentifier<Interface> interfaceIdentifier = createInterfaceIdentifier(interfaceName);
+ tx.delete(LogicalDatastoreType.CONFIGURATION, interfaceIdentifier);
+ }
+
+ public static boolean waitForGeniusToUpdateInterface(DataBroker dataBroker, String interfaceName) {
+ int retries = 10;
+
+ while (retries > 0) {
+ Optional<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> optional = MdsalUtils
+ .read(dataBroker, LogicalDatastoreType.OPERATIONAL, getStateInterfaceIdentifier(interfaceName));
+
+ if (!optional.isPresent()) {
+ logger.info("State interface {} doesn't exist", interfaceName);
+ } else {
+ org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface stateInterface = optional
+ .get();
+
+ if (stateInterface.getIfIndex() != null) {
+ logger.info("State interface configured with ifIndex {}", stateInterface.getIfIndex());
+
+ // Wait a bit, because if we continue too soon this will not
+ // work.
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
+
+ return true;
+ }
+ }
+
+ retries -= 1;
+ try {
+ Thread.sleep(1500);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ return false;
+ }
+
+ private static InstanceIdentifier<Interface> createInterfaceIdentifier(String interfaceName) {
+ return InstanceIdentifier.builder(Interfaces.class).child(Interface.class, new InterfaceKey(interfaceName))
+ .build();
+ }
+
+ public static void createInterface(DataBroker dataBroker, String instanceName, String interfaceName,
+ EtreeInterfaceType etreeInterfaceType, boolean isEtree) {
+ boolean result = NetvirtUtils.waitForGeniusToUpdateInterface(dataBroker, interfaceName);
+ if (!result) {
+ logger.error("State interface {} is not configured (missing ifIndex)", interfaceName);
+ return;
+ }
+
+ logger.info("Adding {} interface: {}", isEtree ? "etree" : "elan", interfaceName);
+
+ if (isEtree) {
+ NetvirtUtils.createEtreeInterface(dataBroker, instanceName, interfaceName, etreeInterfaceType);
+ } else {
+ NetvirtUtils.createElanInterface(dataBroker, instanceName, interfaceName);
+ }
+ }
}
--- /dev/null
+/*
+ * Copyright (c) 2016 Hewlett Packard Enterprise, Co. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.unimgr.mef.netvirt;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.net.util.SubnetUtils;
+import org.apache.commons.net.util.SubnetUtils.SubnetInfo;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.mdsalutil.MDSALUtil;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInstances;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInterfaces;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.VpnTargetsBuilder;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceBuilder;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceKey;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.vpn.instance.Ipv4FamilyBuilder;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceBuilder;
+import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.OdlArputilService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.interfaces.InterfaceAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.interfaces.InterfaceAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanInstances;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstanceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.Adjacencies;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.AdjacenciesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.adjacency.list.Adjacency;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.adjacency.list.AdjacencyBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NetworkMaps;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NeutronVpnPortipPortData;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.SubnetAddedToVpnBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.Subnetmaps;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.networkmaps.NetworkMap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.networkmaps.NetworkMapBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.networkmaps.NetworkMapKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data.VpnPortipToPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data.VpnPortipToPortBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data.VpnPortipToPortKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.Subnetmap;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.SubnetmapBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.SubnetmapKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.google.common.base.Optional;
+
+public class NetvirtVpnUtils {
+ private static final Logger logger = LoggerFactory.getLogger(NetvirtVpnUtils.class);
+ private final static String ELAN_PREFIX = "elan.";
+ private final static String TRUNK_SUFFIX = "-trunk";
+ private final static String VLAN_SEPARATOR = ".";
+ private final static String IP_ADDR_SUFFIX = "/32";
+ private final static String IP_MUSK_SEPARATOR = "/";
+ private final static int MaxRetries = 10;
+
+ public static void createVpnInstance(DataBroker dataBroker, String instanceName) {
+ VpnInstanceBuilder builder = new VpnInstanceBuilder();
+ builder.setVpnInstanceName(instanceName);
+ Ipv4FamilyBuilder ipv4FamilyBuilder = new Ipv4FamilyBuilder();
+ ipv4FamilyBuilder.setVpnTargets(new VpnTargetsBuilder().build());
+ // WA till netvirt will allow creation of VPN without RD
+ UUID vpnId = UUID.fromString(instanceName);
+ String rd = String.valueOf(Math.abs(vpnId.getLeastSignificantBits()));
+ ipv4FamilyBuilder.setRouteDistinguisher(rd);
+ builder.setIpv4Family(ipv4FamilyBuilder.build());
+
+ MdsalUtils.syncUpdate(dataBroker, LogicalDatastoreType.CONFIGURATION,
+ getVpnInstanceInstanceIdentifier(instanceName), builder.build());
+ }
+
+ public static void createUpdateVpnInterface(DataBroker dataBroker, String vpnName, String interfaceName,
+ IpPrefix ifPrefix, MacAddress macAddress, boolean primary, IpPrefix gwIpAddress) {
+ synchronized (interfaceName.intern()) {
+ String ipAddress = null;
+ String nextHopIp = null;
+ if (primary) {
+ ipAddress = getPrefixFromSubnet(MefUtils.ipPrefixToString(ifPrefix));
+ } else {
+ ipAddress = MefUtils.ipPrefixToString(ifPrefix);
+ nextHopIp = getIpAddressFromPrefix(MefUtils.ipPrefixToString(gwIpAddress));
+ }
+
+ Adjacencies adjancencies = buildInterfaceAdjacency(ipAddress, macAddress, primary, nextHopIp);
+ VpnInterfaceBuilder einterfaceBuilder = createVpnInterface(vpnName, interfaceName, adjancencies);
+
+ MdsalUtils.syncUpdate(dataBroker, LogicalDatastoreType.CONFIGURATION,
+ getVpnInterfaceInstanceIdentifier(interfaceName), einterfaceBuilder.build());
+ }
+ }
+
+ private static Adjacencies buildInterfaceAdjacency(String ipAddress, MacAddress macAddress, boolean primary,
+ String nextHopIp) {
+ AdjacenciesBuilder builder = new AdjacenciesBuilder();
+ List<Adjacency> list = new ArrayList<Adjacency>();
+
+ AdjacencyBuilder aBuilder = new AdjacencyBuilder();
+ aBuilder.setIpAddress(ipAddress);
+ aBuilder.setMacAddress(macAddress.getValue());
+ aBuilder.setPrimaryAdjacency(primary);
+ if (nextHopIp != null) {
+ aBuilder.setNextHopIpList(Arrays.asList(nextHopIp));
+ }
+ list.add(aBuilder.build());
+
+ builder.setAdjacency(list);
+ return builder.build();
+ }
+
+ private static VpnInterfaceBuilder createVpnInterface(String instanceName, String interfaceName,
+ Adjacencies adjacencies) {
+ VpnInterfaceBuilder einterfaceBuilder = new VpnInterfaceBuilder();
+ einterfaceBuilder.setVpnInstanceName(instanceName);
+ einterfaceBuilder.setName(interfaceName);
+ einterfaceBuilder.addAugmentation(Adjacencies.class, adjacencies);
+ return einterfaceBuilder;
+ }
+
+ private static InstanceIdentifier<VpnInstance> getVpnInstanceInstanceIdentifier(String instanceName) {
+ return InstanceIdentifier.builder(VpnInstances.class).child(VpnInstance.class, new VpnInstanceKey(instanceName))
+ .build();
+ }
+
+ private static InstanceIdentifier<VpnInterface> getVpnInterfaceInstanceIdentifier(String interfaceName) {
+ return InstanceIdentifier.builder(VpnInterfaces.class)
+ .child(VpnInterface.class, new VpnInterfaceKey(interfaceName)).build();
+ }
+
+ public static void createVpnPortFixedIp(DataBroker dataBroker, String vpnName, String portName, IpPrefix ipAddress,
+ MacAddress macAddress) {
+ String fixedIpPrefix = MefUtils.ipPrefixToString(ipAddress);
+ String fixedIp = getIpAddressFromPrefix(fixedIpPrefix);
+ createVpnPortFixedIp(dataBroker, vpnName, portName, fixedIp, macAddress);
+ }
+
+ public static void createVpnPortFixedIp(DataBroker dataBroker, String vpnName, String portName, IpAddress ipAddress,
+ MacAddress macAddress) {
+ String fixedIp = MefUtils.ipAddressToString(ipAddress);
+ createVpnPortFixedIp(dataBroker, vpnName, portName, fixedIp, macAddress);
+ }
+
+ public static void createVpnPortFixedIp(DataBroker dataBroker, String vpnName, String portName, String fixedIp,
+ MacAddress macAddress) {
+ synchronized ((vpnName + fixedIp).intern()) {
+ InstanceIdentifier<VpnPortipToPort> id = buildVpnPortipToPortIdentifier(vpnName, fixedIp);
+ VpnPortipToPortBuilder builder = new VpnPortipToPortBuilder()
+ .setKey(new VpnPortipToPortKey(fixedIp, vpnName)).setVpnName(vpnName).setPortFixedip(fixedIp)
+ .setPortName(portName).setMacAddress(macAddress.getValue()).setSubnetIp(true).setConfig(true)
+ .setLearnt(false);
+ MDSALUtil.syncWrite(dataBroker, LogicalDatastoreType.OPERATIONAL, id, builder.build());
+ logger.debug(
+ "Interface to fixedIp added: {}, vpn {}, interface {}, mac {} added to " + "VpnPortipToPort DS",
+ fixedIp, vpnName, portName, macAddress);
+ }
+ }
+
+ static InstanceIdentifier<NetworkMap> buildNetworkMapIdentifier(Uuid networkId) {
+ InstanceIdentifier<NetworkMap> id = InstanceIdentifier.builder(NetworkMaps.class)
+ .child(NetworkMap.class, new NetworkMapKey(networkId)).build();
+ return id;
+ }
+
+ private static void createSubnetToNetworkMapping(DataBroker dataBroker, Uuid subnetId, Uuid networkId) {
+ InstanceIdentifier<NetworkMap> networkMapIdentifier = buildNetworkMapIdentifier(networkId);
+ Optional<NetworkMap> optionalNetworkMap = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
+ networkMapIdentifier);
+ NetworkMapBuilder nwMapBuilder = null;
+ if (optionalNetworkMap.isPresent()) {
+ nwMapBuilder = new NetworkMapBuilder(optionalNetworkMap.get());
+ } else {
+ nwMapBuilder = new NetworkMapBuilder().setKey(new NetworkMapKey(networkId)).setNetworkId(networkId);
+ logger.debug("Adding a new network node in NetworkMaps DS for network {}", networkId.getValue());
+ }
+ List<Uuid> subnetIdList = nwMapBuilder.getSubnetIdList();
+ if (subnetIdList == null) {
+ subnetIdList = new ArrayList<>();
+ }
+ subnetIdList.add(subnetId);
+ nwMapBuilder.setSubnetIdList(subnetIdList);
+ MDSALUtil.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, networkMapIdentifier, nwMapBuilder.build());
+ logger.debug("Created subnet-network mapping for subnet {} network {}", subnetId.getValue(),
+ networkId.getValue());
+ }
+
+ private static InstanceIdentifier<VpnPortipToPort> buildVpnPortipToPortIdentifier(String vpnName, String fixedIp) {
+ InstanceIdentifier<VpnPortipToPort> id = InstanceIdentifier.builder(NeutronVpnPortipPortData.class)
+ .child(VpnPortipToPort.class, new VpnPortipToPortKey(fixedIp, vpnName)).build();
+ return id;
+ }
+
+ public static void addDirectSubnetToVpn(DataBroker dataBroker,
+ final NotificationPublishService notificationPublishService, String vpnName, String subnetName,
+ IpPrefix subnetIpPrefix, String interfaceName) {
+ InstanceIdentifier<ElanInstance> elanIdentifierId = InstanceIdentifier.builder(ElanInstances.class)
+ .child(ElanInstance.class, new ElanInstanceKey(subnetName)).build();
+ Optional<ElanInstance> elanInstance = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
+ elanIdentifierId);
+ if (!elanInstance.isPresent()) {
+ logger.error("Trying to add invalid elan {} to vpn {}", subnetName, vpnName);
+ return;
+ }
+ Long elanTag = elanInstance.get().getElanTag();
+
+ Uuid subnetId = new Uuid(subnetName);
+ logger.info("Adding subnet {} {} to elan map", subnetId);
+ createSubnetToNetworkMapping(dataBroker, subnetId, subnetId);
+
+ String subnetIp = getSubnetFromPrefix(MefUtils.ipPrefixToString(subnetIpPrefix));
+ logger.info("Adding subnet {} {} to vpn {}", subnetName, subnetIp, vpnName);
+ updateSubnetNode(dataBroker, new Uuid(vpnName), subnetId, subnetIp);
+
+ logger.info("Adding port {} to subnet {}", interfaceName, subnetName);
+ updateSubnetmapNodeWithPorts(dataBroker, subnetId, new Uuid(interfaceName));
+
+ logger.info("Publish subnet {}", subnetName);
+ publishSubnetAddNotification(notificationPublishService, subnetId, subnetIp, vpnName, elanTag);
+
+ }
+
+ protected static void updateSubnetNode(DataBroker dataBroker, Uuid vpnId, Uuid subnetId, String subnetIp) {
+ Subnetmap subnetmap = null;
+ SubnetmapBuilder builder = null;
+ InstanceIdentifier<Subnetmap> id = InstanceIdentifier.builder(Subnetmaps.class)
+ .child(Subnetmap.class, new SubnetmapKey(subnetId)).build();
+
+ synchronized (subnetId.getValue().intern()) {
+ Optional<Subnetmap> sn = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, id);
+ if (sn.isPresent()) {
+ builder = new SubnetmapBuilder(sn.get());
+ logger.debug("updating existing subnetmap node for subnet ID {}", subnetId.getValue());
+ } else {
+ builder = new SubnetmapBuilder().setKey(new SubnetmapKey(subnetId)).setId(subnetId);
+ logger.debug("creating new subnetmap node for subnet ID {}", subnetId.getValue());
+ }
+
+ builder.setSubnetIp(subnetIp);
+ builder.setNetworkId(subnetId);
+ builder.setVpnId(vpnId);
+
+ subnetmap = builder.build();
+ logger.debug("Creating/Updating subnetMap node: {} ", subnetId.getValue());
+ MDSALUtil.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, id, subnetmap);
+ }
+ }
+
+ private static void updateSubnetmapNodeWithPorts(DataBroker dataBroker, Uuid subnetId, Uuid portId) {
+ Subnetmap subnetmap = null;
+ InstanceIdentifier<Subnetmap> id = InstanceIdentifier.builder(Subnetmaps.class)
+ .child(Subnetmap.class, new SubnetmapKey(subnetId)).build();
+ synchronized (subnetId.getValue().intern()) {
+ Optional<Subnetmap> sn = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, id);
+ if (sn.isPresent()) {
+ SubnetmapBuilder builder = new SubnetmapBuilder(sn.get());
+ if (null != portId) {
+ List<Uuid> portList = builder.getPortList();
+ if (null == portList) {
+ portList = new ArrayList<Uuid>();
+ }
+ portList.add(portId);
+ builder.setPortList(portList);
+ logger.debug("Updating subnetmap node {} with port {}", subnetId.getValue(), portId.getValue());
+ }
+ subnetmap = builder.build();
+ MDSALUtil.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, id, subnetmap);
+ } else {
+ logger.error("Trying to update non-existing subnetmap node {} ", subnetId.getValue());
+ }
+ }
+ }
+
+ private static void publishSubnetAddNotification(final NotificationPublishService notificationPublishService,
+ Uuid subnetId, String subnetIp, String vpnName, Long elanTag) {
+ SubnetAddedToVpnBuilder builder = new SubnetAddedToVpnBuilder();
+
+ logger.info("publish notification called");
+
+ builder.setSubnetId(subnetId);
+ builder.setSubnetIp(subnetIp);
+ builder.setVpnName(vpnName);
+ builder.setExternalVpn(true);
+ builder.setElanTag(elanTag);
+
+ try {
+ notificationPublishService.putNotification(builder.build());
+ } catch (InterruptedException e) {
+ logger.error("Fail to publish notification {}", builder, e);
+ throw new RuntimeException(e.getMessage());
+ }
+ }
+
+ private static String getIpAddressFromPrefix(String prefix) {
+ return prefix.split(IP_MUSK_SEPARATOR)[0];
+ }
+
+ private static String getMaskFromPrefix(String prefix) {
+ return prefix.split(IP_MUSK_SEPARATOR)[1];
+ }
+
+ private static String getSubnetFromPrefix(String prefix) {
+ SubnetInfo subnet = new SubnetUtils(prefix).getInfo();
+ return subnet.getNetworkAddress() + IP_MUSK_SEPARATOR + getMaskFromPrefix(prefix);
+ }
+
+ private static String getPrefixFromSubnet(String prefix) {
+ String myAddress = getIpAddressFromPrefix(prefix);
+ return myAddress + IP_ADDR_SUFFIX;
+ }
+
+ public static String getElanNameForVpnPort(String portName) {
+ return getUUidFromString(ELAN_PREFIX + portName);
+ }
+
+ public static String getInterfaceNameForVlan(String interfaceName, Integer vlan) {
+ final StringBuilder s = new StringBuilder();
+ s.append(interfaceName);
+ if (vlan != null) {
+ s.append(VLAN_SEPARATOR).append(vlan);
+ }
+ s.append(TRUNK_SUFFIX);
+ return getUUidFromString(s.toString());
+ }
+
+ public static String getUUidFromString(String key) {
+ return java.util.UUID.nameUUIDFromBytes(key.getBytes()).toString();
+ }
+
+ public static MacAddress resolveGwMac(DataBroker dataBroker, OdlArputilService arpUtilService, String vpnName,
+ IpPrefix srcIpPrefix, IpAddress dstIpAddress, String interf) {
+
+ String srcTpAddressStr = getIpAddressFromPrefix(MefUtils.ipPrefixToString(srcIpPrefix));
+ IpAddress srcIpAddress = new IpAddress(srcTpAddressStr.toCharArray());
+
+ if (srcIpAddress == null || dstIpAddress == null) {
+ logger.error("Can't send ARP to srcIp {} dstIp {}", srcIpAddress, dstIpAddress);
+ throw new RuntimeException("Can't send ARP for dstIp " + dstIpAddress);
+ }
+
+ MacAddress macAddress = null;
+ int retries = MaxRetries;
+ while (retries > 0 && macAddress == null) {
+ sendArpRequest(arpUtilService, srcIpAddress, dstIpAddress, interf);
+ macAddress = waitForArpReplyProcessing(dataBroker, vpnName, dstIpAddress, MaxRetries);
+ retries--;
+ }
+ return macAddress;
+ }
+
+ private static void sendArpRequest(OdlArputilService arpUtilService, IpAddress srcIpAddress, IpAddress dstIpAddress,
+ String interf) {
+ try {
+ List<InterfaceAddress> interfaceAddresses = new ArrayList<>();
+ interfaceAddresses
+ .add(new InterfaceAddressBuilder().setInterface(interf).setIpAddress(srcIpAddress).build());
+
+ SendArpRequestInput sendArpRequestInput = new SendArpRequestInputBuilder().setIpaddress(dstIpAddress)
+ .setInterfaceAddress(interfaceAddresses).build();
+ arpUtilService.sendArpRequest(sendArpRequestInput);
+ } catch (Exception e) {
+ logger.error("Failed to send ARP request to IP {} from interfaces {}",
+ dstIpAddress.getIpv4Address().getValue(), interf, e);
+ throw new RuntimeException(e.getMessage());
+ }
+ }
+
+ public static MacAddress waitForArpReplyProcessing(DataBroker dataBroker, String vpnName, IpAddress dstIpAddress,
+ int retries) {
+ while (retries > 0) {
+ InstanceIdentifier<VpnPortipToPort> optionalPortIpId = buildVpnPortipToPortIdentifier(vpnName,
+ MefUtils.ipAddressToString(dstIpAddress));
+ Optional<VpnPortipToPort> optionalPortIp = MdsalUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL,
+ optionalPortIpId);
+
+ if (optionalPortIp.isPresent()) {
+ return new MacAddress(optionalPortIp.get().getMacAddress());
+ } else {
+ sleep();
+ }
+ }
+ return null;
+ }
+
+ private static void sleep() {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
+ }
+}
public class NodeConnectorListener extends UnimgrDataTreeChangeListener<FlowCapableNodeConnector> {
private static final Logger log = LoggerFactory.getLogger(NodeConnectorListener.class);
- private static final Logger logger = LoggerFactory.getLogger(NodeConnectorListener.class);
private static boolean handleRemovedNodeConnectors = false;
private ListenerRegistration<NodeConnectorListener> evcListenerRegistration;
WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
- logger.info("Adding mef uni/device interface {} with device {}", nodeConnector.getName(), dpnId);
+ log.info("Adding mef uni/device interface {} with device {}", nodeConnector.getName(), dpnId);
- String uniName = EvcUniUtils.getDeviceInterfaceName(dpnId, nodeConnector.getName());
+ String uniName = NetvirtUtils.getDeviceInterfaceName(dpnId, nodeConnector.getName());
InstanceIdentifier interfacePath = MefUtils.getDeviceInterfaceInstanceIdentifier(dpnId, uniName);
InterfaceBuilder interfaceBuilder = new InterfaceBuilder();
interfaceBuilder.setPhy(new Identifier45(uniName));
InstanceIdentifier uniPath = MefUtils.getUniInstanceIdentifier(uniName);
UniBuilder uniBuilder = new UniBuilder();
uniBuilder.setUniId(new Identifier45(uniName));
+ uniBuilder.setMacAddress(nodeConnector.getHardwareAddress());
PhysicalLayersBuilder physicalLayersBuilder = new PhysicalLayersBuilder();
LinksBuilder linksBuilder = new LinksBuilder();
try {
futures.get();
} catch (InterruptedException | ExecutionException e) {
- logger.error("Error writing to datastore (path, data) : ({}, {}), ({}, {})", interfacePath, deviceInterface,
+ log.error("Error writing to datastore (path, data) : ({}, {}), ({}, {})", interfacePath, deviceInterface,
uniPath, uni);
throw new RuntimeException(e.getMessage());
}
private void handleNodeConnectorRemoved(DataBroker dataBroker, String dpnId,
FlowCapableNodeConnector nodeConnector) {
- String uniName = EvcUniUtils.getDeviceInterfaceName(dpnId, nodeConnector.getName());
+ String uniName = NetvirtUtils.getDeviceInterfaceName(dpnId, nodeConnector.getName());
if (!handleRemovedNodeConnectors) {
return;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.MefService;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.MefServiceBuilder;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.EvcChoice;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.Evc;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
MdsalUtils.syncUpdate(dataBroker, LogicalDatastoreType.CONFIGURATION,
MefUtils.getMefServiceInstanceIdentifier(service.getSvcId()), service);
}
+
+ public static Evc GetEvc(MefService service) {
+ if (!(service.getMefServiceChoice() instanceof EvcChoice)) {
+ return null;
+ }
+
+ return ((EvcChoice) service.getMefServiceChoice()).getEvc();
+ }
}
\ No newline at end of file
if (!optionalServices.isPresent()) {
return;
}
+
for (MefService service : optionalServices.get().getMefService()) {
- for (org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni serviceUni : service
- .getEvc().getUnis().getUni()) {
+ for (org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni serviceUni : TenantEnhancerUtils
+ .GetEvc(service).getUnis().getUni()) {
if (!TenantEnhancerUtils.isServiceTenanted(service) && serviceUni.getUniId().equals(uni.getUniId())) {
log.info("instance identifier is {}", MefUtils.getMefServiceInstanceIdentifier(service.getSvcId()));
TenantEnhancerUtils.updateService(dataBroker, tenant, service);
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.unimgr.api.UnimgrDataTreeChangeListener;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.Evc;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.Evc;
import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.MefService;
-import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.evc.unis.Uni;
+import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
log.info("Service {} is already connected to a Service", service.getSvcId().getValue());
return;
}
- Evc evc = service.getEvc();
+ Evc evc = TenantEnhancerUtils.GetEvc(service);
if (evc.getUnis() == null) {
log.info("No UNI's in service {}, exiting", service.getSvcId().getValue());
return;
<reference id="dataBroker"
interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" />
-
+ <reference id="notificationPublishService"
+ interface="org.opendaylight.controller.md.sal.binding.api.NotificationPublishService" />
+ <odl:rpc-service id="odlArputilService"
+ interface="org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.OdlArputilService" />
+
<bean class="org.opendaylight.unimgr.mef.netvirt.EvcListener">
<argument index="0" ref="dataBroker" />
</bean>
<argument index="0" ref="dataBroker" />
</bean>
- <bean class="org.opendaylight.unimgr.mef.netvirt.TenantlessEvcListener">
- <argument index="0" ref="dataBroker" />
+<!-- <bean class="org.opendaylight.unimgr.mef.netvirt.TenantlessEvcListener"> -->
+<!-- <argument index="0" ref="dataBroker" /> -->
+<!-- </bean> -->
+
+<!-- <bean class="org.opendaylight.unimgr.mef.netvirt.TenantUniListener"> -->
+<!-- <argument index="0" ref="dataBroker" /> -->
+<!-- </bean> -->
+
+ <bean class="org.opendaylight.unimgr.mef.netvirt.IpvcListener">
+ <argument ref="dataBroker" />
+ <argument ref="notificationPublishService" />
+ <argument ref="odlArputilService" />
</bean>
- <bean class="org.opendaylight.unimgr.mef.netvirt.TenantUniListener">
- <argument index="0" ref="dataBroker" />
- </bean>
</blueprint>
\ No newline at end of file