Initial import of Microsemi Driver

Change-Id: I431d5f2c18e0b66a84c36273c3d9f0b84f223841

Added in BUCK files for building driver

Change-Id: I70681327f5b89f67e904c45d5974ab393652d51f

Corrected some syntax errors

Change-Id: I11150cc499c212005f80619e3900e747f1c23d96

Updated pom file to clean build

Change-Id: I6613ddc9e6802aa882e716cf04df210249870835

Added in utility functions for EA1000 Init

Change-Id: I51ffe0cf0daf9ffcea0e2479ee9982fcd1755440

Added YMS code to Microsemi Driver

Change-Id: I6f2a14e454c6909bf9e9f6025321c74c98c13c72

Updated driver to work with YMS and YCH

Change-Id: If7dbe3cd5bd1b6f902d09d6b2dc3895605d70f70

Implemented IetfSystemManager as a service and call on YMS as a service

Change-Id: If1c5e8482b1f53f578a3b0b770accd50024111cf

Moved YMS calls over in to Yang Service implementation

Change-Id: I044aad06f1ef7452bc48e88987787a683666cd72

improved unit test for IetfSystemManager

Change-Id: I48fbf831e7e5ca0e1ef3de8288e56da1b5ebb7a4

Major changes to IetfSystemManager to work in live system

Change-Id: I6e3aa118ba422151f314b9a666860d90905c9929

Added in retry mechanism for DeviceDescription to wait for YCH

Change-Id: If8e0f2c2f315ffd6db15627a11382a00217dd262

Added in implementation of MseaSaFiltering and unit tests

Change-Id: I34bf888e0e732bd4664d1fb8ef5abb679b1506fe

Updated driver with unit tests for MseaSaFiltering

Change-Id: I7ea2407a546622ff55d1ab21610c45697546d632

Modified removeFlowRules of Ea1000FlowRuleProgrammable

Change-Id: Ibb4a555f61887a8e6e42af588bb42f7b70f58efb

Added in manager for MseaUniEvc service with unit tests

Change-Id: Idc5853f46051548973f52a0659f7f88982ff960c

Implemented getFlowEntries() for EVCs from EA1000

Change-Id: Ie85dadfa7760f0b30a9bdf6ccd09cca9f097fff9

Added in translation of FlowRules in to EVC on EA1000

Change-Id: Icfb65171c3300c96b3ca4e18cbd327f0ed2190be

Added in handling of FlowRule deletion including complex ceVlanMaps

Change-Id: I7fd0bb0ef04d1b40e4b7d6a6db7f7ee662329780

Updated Service entries for new onos-yang-tools

Change-Id: I44e655202f3a45073e1e16f83737caed6e01afa8

Revert "Updated Service entries for new onos-yang-tools"

This reverts commit 642b550ef1de12ed59bad2eaa3a2da414d2e5e59.

Improved timeout mechanism for YANG model loading

Change-Id: If744ecd206372e822edf2b736c83226321a12256

Minor edits of EVC creation

Change-Id: Ib0a4763deaf6dce37625ba77f5095b39cd98272d

Added in CustomEvc and supporting classes

Change-Id: Iad60eb1bcd48d2aec55b894b2d419b51852c3b2f

Created CeVlanUtils to resolve loading problem

Change-Id: I0d63931ad2c5ad2725861ebc7dccc4d5fe7b9298

Modified startup check

Change-Id: I6e6bcfa7e615044cb08fe7ee2f8a6c8b89aabb21

Modified handlin of flow rules

Change-Id: I965a79c23298866122aeb94c6d9d584aafee3bd5

Fixed problem with ceVlanMap

Change-Id: If1458c35d0b95b5b25b6636f098292f9e91c06c6

Minor Pom edits

Change-Id: I5cefb18674aa04b1f50bd7e2306260c1c3ad3814

Commented out extension references in YANG files to avoid onos-yang-tools problems

Change-Id: I32fdb34c4f476f495fe28e75d0f410aaf14e2ec1

Corrected error in removing 0 in CeVlanMapUtils

Change-Id: I8cd1fd02788b81c2613364d5639ef6e090057f80

Changes in YMS to accomodate EA1000 driver

Change-Id: I6ae2b9bd2be49eae8d4ad2f929dfe3214c514550
diff --git a/drivers/microsemi/ea1000yang/src/main/yang/msea-soam-pm.yang b/drivers/microsemi/ea1000yang/src/main/yang/msea-soam-pm.yang
new file mode 100644
index 0000000..21c05a6
--- /dev/null
+++ b/drivers/microsemi/ea1000yang/src/main/yang/msea-soam-pm.yang
@@ -0,0 +1,1479 @@
+module msea-soam-pm {

+

+	namespace "http://www.microsemi.com/microsemi-edge-assure/msea-soam-pm";

+	prefix "msea-soam-pm"; //MicroSemi EdgeAssure (msea)

+

+	import ietf-yang-types {

+		prefix yang;

+		revision-date 2013-07-15;

+	}

+

+	import msea-cfm {

+		prefix msea-cfm;

+	}

+

+	import msea-types {

+		prefix msea;

+	}

+

+	organization

+	"Microsemi Inc., FTD Division";

+

+	contact

+	"Web URL: http://www.microsemi.com/

+	E-mail: info@microsemi.com

+	Postal: Microsemi Corporation Corporate Headquarters

+	One Enterprise Aliso Viejo,

+	CA 92656

+	U.S.A.

+	Phone: +1 949 380 6100

+	Fax: +1 949 215-4996";

+

+	description

+	"This YANG module is a fork of the original mef-soam-pm YANG Module defined in MEF 39

+	for the management of Ethernet Services Operations, Administration and

+	Maintenance for Performance Monitoring and extends the Connectivity Fault

+	Management (CFM) YANG modules.

+	This fork is done specifically to suit the EdgeAssure which has some extra

+	constraints that are not handled by the original YANG.

+

+	Copyright 2016 Microsemi Inc.

+	All rights reserved.";

+

+	revision "2016-02-29" {

+		description

+		"Initial EdgeAssure version forked from mef-soam-pm@2012-04-16 - Sean Condon, Microsemi";

+		reference

+		"Service OAM Fault Management YANG Modules (MEF 39), April 2012";

+	}

+

+	//

+	// Type definitions related to MEF SOAM PM

+	//

+

+	typedef suspect-status-type {

+		type boolean;

+		description

+		"This boolean data type indicates whether the measurement interval

+		has been marked as suspect.

+

+		The object is set to false at the start of a measurement

+		interval. It is set to true when there is a discontinuity in the

+		performance measurements during the measurement interval.

+		Conditions for a discontinuity include, but are not limited to

+		the following:

+

+		1 - The local time-of-day clock is adjusted by at least 10

+		seconds

+		2 - The conducting of a performance measurement is halted before

+		the current measurement interval is completed

+		3 - A local test, failure, or reconfiguration that disrupts

+		service";

+		reference

+		"[MEF SOAM PM IA] R39, R40, 41 and R42";

+	}

+

+	typedef performance-monitoring-interval-type {

+		type uint32 {

+			range "3..3600000";

+		}

+		units ms;

+		description

+		"This integer data type indicates the transmission time between the

+		SOAM PM frames for session, in ms.";

+	}

+

+

+	typedef session-status-type {

+		type enumeration {

+			enum active {

+				description

+				"Indicates the measurement instance is active.";

+			}

+			enum not-active {

+				description

+				"Indicates the measurement instance is not active.";

+			}

+		}

+

+		description

+		"This enumeration data type defines the status of PM session of a MEP.";

+		reference

+		"MEF-SOAM-TC-MIB.MefSoamTcStatusType";

+	}

+

+

+	typedef measurement-bin-type {

+		type enumeration {

+			enum two-way-frame-delay {

+				description

+				"Indicates a measurement bin for two-way Frame Delay.";

+			}

+

+			enum two-way-inter-frame-delay-variation {

+				description

+				"Indicates a measurement bin for two-way Inter-frame Delay

+				Variation.";

+			}

+		}

+

+		description

+		"This enumeration data type indicates whether the bin number is for Frame

+		Delay and Inter-Frame Delay Variation.";

+		reference

+		"MEF-SOAM-TC-MIB.MefSoamTcDelayMeasurementBinType";

+	}

+

+	//

+	// Groupings related to MEF SOAM PM

+	//

+

+	grouping remote-mep-group {

+		description

+		"This grouping includes objects which identify a remote MEP.";

+		choice remote-mep {

+			mandatory true;

+			description

+			"The remote MEP can be identified by either a MAC address or a MEP ID";

+

+			case mac-address {

+				leaf mac-address {

+					type yang:mac-address;

+//					msea:not-changeable;

+

+					description

+					"The Target MAC Address Field to be transmitted: A unicast

+					destination MAC address.

+

+					This object is only valid for the entity transmitting the

+					SOAM Loss and Delay Measurement frames and is ignored by

+					the entity receiving SOAM Loss and Delay Measurement

+					frames.";

+				}

+			}

+			case mep-id {

+				leaf mep-id {

+					type leafref {

+						path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:remote-meps";

+					}

+//					msea:not-changeable;

+					

+					description

+					"The Maintenance Association End Point Identifier of another MEP in

+					the same Maintenance Association to which the SOAM Loss or Delay

+					Measurement frame is to be sent.

+

+					This object is only valid for the entity transmitting the

+					SOAM Loss Measurement or Delay Measurement frames and is

+					ignored by the entity receiving SOAM Loss Measurement or

+					Delay Measurement frames.";

+				}

+			}

+		}

+	}

+

+	grouping measurement-timing-group {

+		description

+		"This grouping includes objects used for proactive and on-demand

+		scheduling of PM measurement sessions.";

+

+		container start-time {

+			description

+			"This container defines the session start time";

+

+			choice start-time {

+				default immediate;

+				description

+				"Measurement session start time can be immediate, relative or

+				absolute.";

+

+				container immediate {

+					presence "Start the measurement session immediately.";

+

+					description

+					"This object specifies the start time to be immediately at the time

+					of session creation.";

+				}

+			}

+		}

+

+		container stop-time {

+			description

+			"This container defines the session stop time";

+

+			choice stop-time {

+				default none;

+				description

+				"Measurement session stop time can be none, relative or

+				absolute.";

+

+				container none {

+					presence "Never end the measurement session.";

+

+					description

+					"This object specifies the measurement session to never end.";

+				}

+			}

+		}

+	}

+

+	grouping loss-measurement-stats-group {

+		description

+		"This grouping includes statistics objects for a SOAM Loss Measurement

+		session.";

+

+		leaf suspect-status {

+			type suspect-status-type;

+

+			description

+			"Whether the Measurement Interval has been marked as suspect.

+

+			The object is set to false at the start of a measurement

+			interval. It is set to true when there is a discontinuity in

+			the performance measurements during the Measurement Interval.

+			Conditions for a discontinuity include, but are not limited to

+			the following:

+

+			1 - The local time-of-day clock is adjusted by at least 10 seconds

+			2 - The conducting of a performance measurement is halted before the

+			current Measurement Interval is completed

+			3 - A local test, failure, or reconfiguration that disrupts service";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsSuspect";

+		}

+

+		leaf forward-transmitted-frames {

+			type yang:gauge32;

+			mandatory true;

+

+			description

+			"This object contains the number of frames transmitted in the forward

+			direction by this MEP.

+

+			For a PM Session of types lmm or ccm this includes Ethernet

+			Service Frames and SOAM PDUs that are in a higher MEG level

+			only.

+

+			For a PM Session of type slm this includes the count of SOAM

+			ETH-SLM frames only.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsForwardTransmittedFrames";

+		}

+

+		leaf forward-received-frames {

+			type yang:gauge32;

+			mandatory true;

+

+			description

+			"This object contains the number of frames received in the forward

+			direction by this MEP.

+

+			For a PM Session of types lmm or ccm this includes Ethernet

+			Service Frames and SOAM PDUs that are in a higher MEG level only.

+

+			For a PM Session of type slm this includes the count of SOAM

+			ETH-SLM frames only.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsForwardReceivedFrames";

+		}

+

+		leaf forward-average-frame-loss-ratio {

+			type uint32 {

+				range "0..100000";

+			}

+			units milli-percent;

+

+			description

+			"This object contains the average one-way frame loss ratio in the

+			forward direction calculated by this MEP for this Measurement

+			Interval. The FLR value is a ratio that is expressed as a

+			percent with a value of 0 (ratio 0.00) through 100000 (ratio

+					1.00).

+

+			Units are in milli-percent, where 1 indicates 0.001 percent.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsForwardAvgFlr";

+		}

+

+		leaf backward-transmitted-frames {

+			type yang:gauge32;

+			mandatory true;

+

+			description

+			"This object contains the number of frames transmitted in the backward

+			direction by this MEP.

+

+			For a PM Session of type lmm or ccm this includes Ethernet

+			Service Frames and SOAM PDUs that are in a higher MEG level

+			only.

+

+			For a PM Session of type slm this includes the count of SOAM

+			ETH-SLM frames only.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsBackwardTransmittedFrames";

+		}

+

+		leaf backward-received-frames {

+			type yang:gauge32;

+			mandatory true;

+

+			description

+			"This object contains the number of frames received in the backward

+			direction by this MEP.

+

+			For a PM Session of type lmm this includes Ethernet Service

+			Frames and SOAM PDUs that are in a higher MEG level only.

+

+			For a PM Session of type slm this includes the count of SOAM

+			ETH-SLM frames only.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsBackwardReceivedFrames";

+		}

+

+		leaf backward-average-frame-loss-ratio {

+			type uint32 {

+				range "0..100000";

+			}

+			units milli-percent;

+

+			description

+			"This object contains the average one-way frame loss ratio in the

+			backward direction calculated by this MEP for this Measurement

+			Interval. The FLR value is a ratio that is expressed as a

+			percent with a value of 0 (ratio 0.00) through 100000 (ratio

+					1.00).

+

+			Units are in milli-percent, where 1 indicates 0.001 percent.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsBackwardAvgFlr";

+		}

+

+		leaf soam-pdus-sent {

+			type yang:gauge32;

+			description

+			"This object contains the count of the number of SOAM PDUs sent during

+			this Measurement Interval.

+

+			This object applies when type is lmm, slm or ccm. It indicates

+			the number of LMM, CCM, or SLM SOAM frames transmitted.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsSoamPdusSent";

+		}

+

+		leaf soam-pdus-received {

+			type yang:gauge32;

+

+			description

+			"This object contains the count of the number of SOAM PDUs PDUs received

+			in this Measurement Interval.

+

+			This object applies when type is lmm, slm, or ccm. This object

+			indicates the number of LMR, CCM, or SLR SOAM frames received.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamLmCurrentStatsSoamPdusReceived";

+		}

+	}

+

+	grouping delay-measurement-stats-group {

+		description

+		"This grouping includes statistics objects for a SOAM Delay Measurement

+		session.";

+

+		leaf suspect-status {

+			type suspect-status-type;

+			description

+			"Whether the Measurement Interval has been marked as suspect.

+

+			The object is to be set to false at the start of a measurement

+			interval. It is set to true when there is a discontinuity in

+			the performance measurements during the Measurement Interval.

+			Conditions for a discontinuity include, but are not limited to

+			the following:

+

+			1 - The local time-of-day clock is adjusted by at least 10 seconds

+			2 - The conducting of a performance measurement is halted before the

+			current Measurement Interval is completed

+			3 - A local test, failure, or reconfiguration that disrupts service";

+		}

+

+		leaf frame-delay-two-way-min {

+			type yang:gauge32;

+			units "μs";

+

+			description

+			"This object contains the minimum two-way frame delay calculated by this

+			MEP for this Measurement Interval.

+

+			This object is undefined if measurement-type is dm1-transmitted

+			or dm1-received.";

+		}

+

+		leaf frame-delay-two-way-max {

+			type yang:gauge32;

+			units "μs";

+

+			description

+			"This object contains the maximum two-way frame delay calculated by this

+			MEP for this Measurement Interval.

+

+			This object is undefined if measurement-type is dm1DmTx or

+			dm1-received.";

+		}

+

+		leaf frame-delay-two-way-average {

+			type yang:gauge32;

+			units "μs";

+

+			description

+			"This object contains the average two-way frame delay calculated by this

+			MEP for this Measurement Interval.

+

+			This object is undefined if measurement-type is dm1-transmitted or

+			dm1-received.";

+		}

+

+		leaf inter-frame-delay-variation-two-way-min {

+			type yang:gauge32;

+			units "μs";

+

+			description

+			"This object contains the minimum two-way inter-frame delay interval

+			calculated by this MEP for this Measurement Interval.

+

+			The value of this object is undefined when measurement-type is

+			dm1-transmitted or dm1-received.";

+		}

+

+		leaf inter-frame-delay-variation-two-way-max {

+			type yang:gauge32;

+			units "μs";

+

+			description

+			"This object contains the maximum two-way inter-frame delay interval

+			calculated by this MEP for this Measurement Interval.

+

+			The value of this object is undefined when measurement-type is

+			dm1-transmitted or dm1-received.";

+		}

+

+		leaf inter-frame-delay-variation-two-way-average {

+			type yang:gauge32;

+			units "μs";

+

+			description

+			"This object contains the average two-way inter-frame delay interval

+			calculated by this MEP for this Measurement Interval.

+

+			The value of this object is undefined when measurement-type is

+			dm1-transmitted or dm1-received.";

+		}

+

+		leaf soam-pdus-received {

+			type yang:gauge32;

+			description

+			"This object contains the count of the number of SOAM PDUs received in

+			this Measurement Interval.

+

+			This object indicates the number of DMR and 1DM SOAM frames

+			received. This object applies when measurement-type is dmm or

+			dm1-received and is undefined if measurement-type is

+			dm1-transmitted.";

+		}

+	}

+

+	grouping delay-measurement-bins-content-group {

+		description

+		"This grouping contains result measurement bin objects for a SOAM Delay

+		Measurement session.";

+

+		leaf type {

+			type measurement-bin-type;

+

+			description

+			"This object specifies whether the bin number is for Frame Delay and

+			Inter-Frame Delay Variation.";

+		}

+

+		leaf number {

+			type uint8 {

+				range "1..4";

+			}

+

+			description

+			"This object specifies the bin number for the configured boundary.  The

+			first bin has bin number 1.";

+		}

+

+		leaf lower-bound {

+			type yang:gauge32;

+			units "μs";

+

+			description

+			"This object specifies the lower boundary for a measurement bin. The

+			upper boundary is defined by the next bin value or infinite for

+			the last bin defined. The measurement boundary for each

+			measurement bin is to be larger than the measurement boundary

+			of the preceding measurement bin. By default, the next bin is

+			set to 5000us larger than the lower bin boundary.

+

+			The values in a bin boundary object represents the time range

+			used to segregate delay data into the appropriate statistical

+			data bin. For five bins with default values, each bin has the

+			following time range:

+

+			bin 1 = 0, range is 0us

+			bin 2 = 5000, range is 5,000us

+			bin 3 = 10000, range is 10,000us

+			bin 4 = 15000, range is 15,000us

+			bin 5 = 20000, range is 20,000us

+

+			The first bin boundary (number set to 1) always contains the

+			value of 0. Attempting to write a non-zero value to this bin

+			will result in an error.";

+		}

+

+		leaf counter {

+			type yang:gauge32;

+			config false;

+

+			description

+			"This object contains the count of the number of completed measurements

+			initiated in this Measurement Interval whose value falls within

+			the range specified for this bin (that is, greater than or

+					equal to the measurement boundary for the bin, and (unless the

+							bin is the last bin) less than the measurement boundary for the

+					following bin.";

+			reference

+			"MEF-SOAM-PM-MIB.mefSoamDmCurrentStatsBinsCounter";

+		}

+	}

+

+	grouping delay-measurement-bins-group {

+		description

+		"This grouping contains the top-level structure for the three types of

+		measurements (frame delay and inter frame delay variation)";

+

+		container bins {

+			description

+			"This container defines the bins content for FD, IFDR, and FDR

+			sessions.";

+

+			list frame-delay {

+				key "type number";

+				uses delay-measurement-bins-content-group;

+

+				description

+				"Data definitions related to frame delay bins content.";

+			}

+

+			list inter-frame-delay-variation {

+				key "type number";

+				uses delay-measurement-bins-content-group;

+

+				description

+				"Data definitions related to inter frame delay bins content.";

+			}

+

+		}

+	}

+	

+	

+	grouping bin-lower-limit-override-attribs {

+		

+		description 

+		"Bin 1 of each type will always be 0.

+		The upper limit of each bin will be defined by the lower

+		limit of the next bin. The upper limit of the last bin 

+		is unbounded.";

+		

+		leaf bin2-lower-limit {

+			type uint32 {

+				range "10..max";

+			}

+			units "μs";

+			must "current() < ../bin3-lower-limit" {

+				error-message "Bin 2 must be between 0 and bin 3 lower limit";

+				error-app-tag "msea-soampm-must-01";

+			}

+			description "The lower limit of the bin 2 in microseconds";

+		}

+

+		leaf bin3-lower-limit {

+			type uint32 {

+				range "10..max";

+			}

+			units "μs";

+			must "current() > ../bin2-lower-limit and current() < ../bin4-lower-limit" {

+				error-message "Bin 3 must be between bin 2 and bin 4 lower limits";

+				error-app-tag "msea-soampm-must-02";

+			}

+			description "The lower limit of the bin 3 in microseconds";

+		}

+

+		leaf bin4-lower-limit {

+			type uint32 {

+				range "10..max";

+			}

+			units "μs";

+			must "current() > ../bin3-lower-limit" {

+				error-message "Bin 4 must be greater than 3 lower limit";

+				error-app-tag "msea-soampm-must-03";

+			}

+			description "The lower limit of the bin 4 in microseconds";

+		}

+	}

+

+	//

+	// Augments into CFM related to MEF SOAM PM

+	//

+	

+	augment "/msea-cfm:mef-cfm/msea-cfm:pm-global" {

+		

+		description "High level attributes that apply to the whole device generally

+				or that apply equally across all instances of a child entity.

+				Delay measurement services should be stopped before changing 

+				these values, including the limit overrides";

+		

+		leaf dm-bins-per-fd-interval {

+			type uint16 {

+				range "4";

+			}

+			default 4;

+

+			description

+			"This object specifies the number of measurement bins per Measurement

+			Interval for Frame Delay measurements.

+

+			Fixed at 4.";

+		}

+

+		leaf dm-bins-per-ifdv-interval {

+			type uint16 {

+				range "4";

+			}

+			default 4;

+

+			description

+			"This object specifies the number of measurement bins per Measurement

+			Interval for Inter-Frame Delay Variation measurements.

+

+			Fixed at 4.";

+		}

+		

+			

+		container bin-lower-limit-override-two-way-frame-delay {

+

+			uses bin-lower-limit-override-attribs {

+				refine bin2-lower-limit {

+					default 10000;

+				}

+				refine bin3-lower-limit {

+					default 20000;

+				}

+				refine bin4-lower-limit {

+					default 37000;

+				}

+			}

+

+			description "Override of the default Measurement Bin default 

+					lower limits for Two Way Frame Delay.";

+

+		}

+

+		container bin-lower-limit-override-two-way-ifdv {

+

+			uses bin-lower-limit-override-attribs {

+				refine bin2-lower-limit {

+					default 3000;

+				}

+				refine bin3-lower-limit {

+					default 8000;

+				}

+				refine bin4-lower-limit {

+					default 100000;

+				}

+			}

+

+			description "Override of the default Measurement Bin default 

+					lower limits for Two Way Interframe Delay Variation.";

+		}

+	}

+	

+

+	augment "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association" +

+	"/msea-cfm:maintenance-association-end-point" {

+		description

+		"This set of data definitions extends the MEG End Point (as described

+		Y.1731) or Maintenance End Point (as described in 802.1q) defined

+		in the MEF CFM module (MEF-CFM), specifically with regards to

+		Loss Measurement and Delay Measurement.";

+

+		container loss-measurements {

+			description

+			"This container contains a collection of data definitions related to

+			Loss Measurements.";

+

+			list loss-measurement {

+				key lm-id;

+				max-elements 16;

+

+				description

+				"A list of Loss Measurement PM Sessions where each instance is uniquely

+				identified by an id attribute.

+				This grouping includes configuration objects for the Frame Loss

+				Measurement function defined in [Y.1731] and [MEF SOAM PM IA].";

+				reference

+				"MEF-SOAM-PM-MIB.mefSoamLmCfgTable, [Y.1731] and [MEF SOAM PM IA]";

+

+				leaf lm-id {

+					type uint8 {

+						range 1..16;

+					}

+

+					description

+					"This object uniquely identifies a scheduled loss measurement.";

+				}

+				

+				must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:maintenance-association-end-point/msea-soam-pm:loss-measurement) <= 128" {

+					error-message "The maximum number of LMs on the whole device must not exceed 128";

+					error-app-tag "msea-soampm-must-04";

+				}

+

+				uses remote-mep-group;

+				uses measurement-timing-group;

+				

+				leaf administrative-state {

+					type boolean;

+					default false;

+

+					description

+					"The administrative state of the MEP. Setting to true starts this Loss Measurement";

+				}

+

+				leaf measurement-type {

+					type enumeration {

+						enum slm {

+							description

+							"SLM SOAM PDU generated and received SLR responses tracked.";

+						}

+					}

+					default slm;

+

+					description

+					"This object specifies what type of Loss Measurement will be

+					performed.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmCfgType";

+				}

+

+				leaf version {

+					type enumeration {

+						enum Y.1731-2008 {

+							description

+							"Indicates the PDU formats defined in Y.1731-2008";

+						}

+					}

+					default Y.1731-2008;

+

+					description

+					"This object indicates the version of the PDUs used to perform Loss

+					Measurement.

+					The exact PDUs to use are specified by this object in

+					combination with measurement-type.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmCfgVersion";

+				}

+

+				leaf enabled-counters {

+					type bits {

+						bit forward-transmitted-frames {description "Count the number of frames transmitted in the forward direction by this MEP";}

+						bit forward-received-frames {description "Count the number of frames received in the forward direction by this MEP";}

+						bit forward-average-flr {description "Calculate the average one-way frame loss ratio in the forward direction calculated by this MEP";}

+						bit backward-transmitted-frames {description "Count the number of frames transmitted in the backward direction by this MEP";}

+						bit backward-received-frames {description "Count the number of frames received in the backward direction by this MEP";}

+						bit backward-average-flr {description "Calculate the average one-way frame loss ratio in the backward direction calculated by this MEP";}

+						bit soam-pdus-sent {description "Count of the number of SOAM PDUs sent during this Measurement Interval";}

+						bit soam-pdus-received {description "Count of the number of SOAM PDUs received during this Measurement Interval";}

+				        bit measured-stats-forward-measured-flr {description "Measure the Frame Loss Ratio in the forward direction calculated by this MEP from the last received SOAM PDU";}

+				        bit measured-stats-backward-measured-flr {description "Measure the Frame Loss Ratio in the backward direction calculated by this MEP from the last received SOAM PDU";}

+

+					}

+					default "";

+

+//					msea:not-changeable;

+					

+					description

+					"A vector of bits that indicates the type of SOAM LM counters found in

+					the current-stats and history-stats that are enabled.

+

+					A present bit enables the specific SOAM LM counter. A not present

+					bit disables the SOAM LM counter.

+

+					If a particular SOAM LM counter is not supported the BIT value

+					is not present.

+

+					Not all SOAM LM counters are supported for all SOAM LM types. ";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmCfgMeasurementEnable";

+				}

+

+				leaf message-period {

+					type enumeration {

+						enum 1000ms {

+							description "The default 1000ms message period for LM";

+						}

+						enum 100ms {

+							description "100ms message period for LM";

+						}

+						enum 10ms {

+							description "10ms message period for LM";

+						}

+						enum 3ms {

+							description "3ms message period for LM";

+						}

+					}

+					default 1000ms;

+//					msea:not-changeable;

+

+					description

+					"This object specifies the interval between Loss Measurement OAM message

+					transmission. For Loss Measurement monitoring applications the

+					default value is 1 sec.

+

+					This object is not applicable if measurement-type is set to

+					'ccm' and is ignored for that Loss Measurement Type.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmCfgMessagePeriod";

+				}

+

+				leaf priority {

+					type msea:priority-type;

+					mandatory true;

+//					msea:not-changeable;

+

+					must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../../../../msea-cfm:id]/msea-cfm:maintenance-association[msea-cfm:id = current()/../../../../msea-cfm:id]/msea-cfm:maintenance-association-end-point[msea-cfm:mep-identifier=current()/../../../msea-cfm:mep-identifier]/msea-soam-pm:loss-measurements/msea-soam-pm:loss-measurement[msea-soam-pm:priority=current()]) <= 1" {

+						error-message "The priority of a Loss Measurement must be unique within its MEP";

+						error-app-tag "msea-soampm-must-05";

+					}

+

+					description

+					"This object specifies the priority of frames with Performance

+					Monitoring OAM message information.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmCfgPriority";

+				}

+

+				leaf frame-size {

+					type uint32 {

+						range "64 .. 9600";

+					}

+					units bytes;

+					default 64;

+//					msea:not-changeable;

+

+					description

+					"This object specifies the Loss Measurement frame size between 64 bytes

+					and the maximum transmission unit of the EVC.

+

+					The range of frame sizes from 64 through 2000 octets need to be

+					supported, and the range of frame sizes from 2001 through 9600

+					octets is suggested be supported.

+

+					The adjustment to the frame size of the standard frame size is

+					accomplished by the addition of a Data or Test TLV. A Data or

+					Test TLV is only added to the frame if the frame size is greater

+					than 64 bytes.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmCfgFrameSize";

+				}

+

+				leaf measurement-interval {

+					type uint32 {

+						range "1..525600";

+					}

+					units minutes;

+					default 15;

+//					msea:not-changeable;

+

+					description

+					"This object specifies the Measurement Interval for FLR statistics, in

+					minutes.

+

+					A Measurement Interval of 15 minutes needs to be supported,

+					other intervals may be supported.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmCfgMeasurementInterval";

+				}

+				

+			    leaf number-intervals-stored {

+			      type uint32 {

+			        range "32";

+			      }

+			      default 32;

+			      

+			      description 

+			        "This object specifies the number of completed measurement intervals to

+			         store in the history statistic table.

+			                 

+			         At least 32 completed measurement intervals are to be

+			         stored.";

+			      reference

+			        "MEF-SOAM-PM-MIB.mefSoamLmCfgNumIntervalsStored";

+			    }

+

+				leaf number-intervals-returned {

+					type uint32 {

+						range "2..32";

+					}

+					default 32;

+

+					description

+					"This object specifies the number of completed measurement intervals to

+					return from the history statistic table.

+					The number stored on the device is fixed at 32";

+				}

+

+				leaf session-status {

+					type session-status-type;

+					config false;

+

+					description

+					"This object indicates the current status of the LM session. A value

+					of 'active' indicates the current LM session is active,

+					i.e. the current time lies between the start time and the

+					stop time, and enabled is true. A value of 'not-active'


+					indicates the current LM session is not active, i.e. it has

+					not started yet, has stopped upon reaching the stop time,

+					or is disabled.";

+				}

+

+				leaf measured-forward-flr {

+					type yang:gauge32 {

+						range "0..100000";

+					}

+					units milli-percent;

+					config false;

+

+					description

+					"This object contains the Frame Loss Ratio in the forward direction

+					calculated by this MEP from the last received SOAM PDU. The

+					FLR value is a ratio that is expressed as a percent with a

+					value of 0 (ratio 0.00) through 100000 (ratio 1.00).

+

+					Units are in milli-percent, where 1 indicates 0.001

+					per-cent.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmMeasuredStatsForwardFlr";

+				}

+

+				leaf measured-backward-flr {

+					type yang:gauge32 {

+						range "0..100000";

+					}

+					units milli-percent;

+					config false;

+

+					description

+					"This object contains the Frame Loss Ratio in the backward direction

+					calculated by this MEP from the last received SOAM PDU. The

+					FLR value is a ratio that is expressed as a percent with a

+					value of 0 (ratio 0.00) through 100000 (ratio 1.00).

+

+					Units are in milli-percent, where 1 indicates 0.001

+					percent.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamLmMeasuredStatsBackwardFlr";

+				}

+

+				container current-measurement-stats {

+					config false;

+

+					description

+					"This container contains the results for the current Measurement

+					Interval in a SOAM Loss Measurement session gathered during

+					the interval indicated by measurement-interval.";

+

+					leaf id {

+						type uint32;

+

+						description

+						"The index for the current Measurement Interval for this PM

+						session. This value will become the value for id of the

+						history-measurement-stats list once the Measurement

+						Interval is completed.";

+					}

+

+					leaf start-time {

+						type yang:date-and-time;

+						mandatory true;

+

+						description

+						"The time that the current Measurement Interval started.";

+					}

+

+					leaf elapsed-time {

+						type uint32 {

+							range "0..2147483647";

+						}

+						units "0.01s";

+						mandatory true;

+

+						description

+						"The time that the current Measurement Interval has been running,

+						in 0.01 seconds.";

+					}

+

+					uses loss-measurement-stats-group;

+				}

+

+				list history-measurement-stats {

+					key id;

+					config false;

+					description

+					"This list contains the results for history Measurement

+					Intervals in a SOAM Loss Measurement session.";

+

+					leaf id {

+						type uint32;

+

+						description

+						"The index for the Measurement Interval within this

+						PM session.";

+					}

+

+					leaf end-time {

+						type yang:date-and-time;

+						mandatory true;

+

+						description

+						"The time that the Measurement Interval ended.";

+					}

+

+					leaf elapsed-time {

+						type uint32 {

+							range "0..2147483647";

+						}

+						mandatory true;

+

+						description

+						"The length of time that the Measurement Interval ran for,

+						in 0.01 seconds.";

+					}

+

+					uses loss-measurement-stats-group;

+				}

+			}

+		}

+

+		container delay-measurements {

+			description

+			"This container contains a collection of data definitions related to

+			Delay Measurements. The measurements are persisted as config data

+			with results being retrieved from the device as needed";

+

+			list delay-measurement {

+				key dm-id;

+				max-elements 16;

+

+				description

+				"A list of Delay Measurements where each instance is

+				uniquely identified by an id attribute.

+				This includes configuration objects for the Delay Measurement

+				function defined in [Y.1731] and [MEF SOAM PM IA].";

+				reference

+				"MEF-SOAM-PM-MIB.mefSoamDmCfgTable, [Y.1731], and [MEF SOAM PM IA].";

+

+				leaf dm-id {

+					type uint8 {

+						range 1..16;

+					}

+

+					description

+					"This object uniquely identifies a scheduled delay measurement.";

+				}

+				

+				must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:maintenance-association-end-point/msea-soam-pm:delay-measurement) <= 128" {

+					error-message "The maximum number of DMs on the whole device must not exceed 128";

+					error-app-tag "msea-soampm-must-06";

+				}

+

+				uses remote-mep-group;

+				uses measurement-timing-group;

+

+				leaf administrative-state {

+					type boolean;

+					default false;

+

+					description

+					"The administrative state of the MEP. Setting to true starts this Delay Measurement";

+				}

+

+				leaf measurement-type {

+					type enumeration {

+						enum dmm {

+							description

+							"DMM SOAM PDU generated, DMR responses received (one-way or two-way

+							measurements).";

+						}

+					}

+					default dmm;

+

+					description

+					"This object indicates what type of Delay Measurement is to be

+					performed.

+

+					The exact PDUs to use are specified by this object in

+					combination with version.";

+				}

+

+				leaf version {

+					type enumeration {

+						enum Y.1731-2011 {

+							description

+							"Indicates the PDU formats defined in Y.1731-2011.";

+						}

+					}

+					default Y.1731-2011;

+

+					description

+					"This object indicates the version of the PDUs used to perform Delay

+					Measurement.

+

+					The exact PDUs to use are specified by this object in

+					combination with measurement-type.";

+					reference

+					"[Y.1731]";

+				}

+

+				leaf measurement-enable {

+					type bits {

+						bit soam-pdus-received {description "Count of the number of SOAM PDUs received";}

+						bit frame-delay-two-way-bins {description "Capture the two-way frame delay in bins";}

+						bit frame-delay-two-way-min {description "Capture the minimum two-way frame delay";}

+						bit frame-delay-two-way-max {description "Capture the maximum two-way frame delay";}

+						bit frame-delay-two-way-average {description "Calculate the average two-way frame delay";}

+						bit inter-frame-delay-variation-two-way-bins {description "Capture the two-way inter-frame-delay-variation in bins";}

+						bit inter-frame-delay-variation-two-way-min {description "Capture the minimum inter-frame-delay-variation frame delay";}

+						bit inter-frame-delay-variation-two-way-max {description "Capture the maximum inter-frame-delay-variation frame delay";}

+						bit inter-frame-delay-variation-two-way-average {description "Calculate the average inter-frame-delay-variation frame delay";}

+					}

+					default "";

+//					msea:not-changeable;

+

+					description

+					"A vector of bits that indicates the type of SOAM DM counters that

+					are enabled.

+

+					A present bit enables the specific SOAM DM counter.

+

+					A not present bit disables the SOAM DM counter.

+

+					If a particular SOAM DM counter is not supported the BIT value

+					is not present.

+

+					Not all SOAM DM counters are supported for all SOAM DM types.";

+				}

+

+				leaf message-period {

+					type enumeration {

+						enum 1000ms {

+							description "1000ms message period for DM";

+						}

+						enum 100ms {

+							description "100ms message period for DM";

+						}

+						enum 10ms {

+							description "10ms message period for DM";

+						}

+						enum 3ms {

+							description "3ms message period for DM";

+						}

+					}

+					default 100ms;

+//					msea:not-changeable;

+

+					description

+					"This object specifies the interval between Delay Measurement OAM

+					message transmission. For Delay Measurement monitoring applications,

+					the default value is 100ms.";

+				}

+

+				leaf priority {

+					type msea:priority-type;

+					mandatory true;

+//					msea:not-changeable;

+

+					description

+					"This object specifies the priority of frames with Performance

+					Monitoring OAM message information.";

+				}

+

+				leaf frame-size {

+					type uint32 {

+						range "64 .. 9600";

+					}

+					default 64;

+//					msea:not-changeable;

+

+					description

+					"This object specifies the Delay Measurement frame size between 64 bytes

+					and the maximum transmission unit of the EVC.

+

+					The range of frame sizes from 64 through 2000 octets need to be

+					supported, and the range of frame sizes from 2001 through 9600

+					octets is suggested to be supported.

+

+					The adjustment to the frame size of the standard frame size is

+					accomplished by the addition of a Data or Test TLV. A Data or

+					Test TLV is only added to the frame if the frame size is

+					greater than 64 bytes.";

+				}

+

+				leaf measurement-interval {

+					type uint32 {

+						range "1..1440";

+					}

+					units minutes;

+					default 15;

+//					msea:not-changeable;

+

+					description

+					"This object specifies a Measurement Interval in minutes.

+

+					A Measurement Interval 15 minutes needs to be supported, other

+					intervals may be supported.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamDmCfgMeasurementInterval";

+				}

+

+			    leaf number-intervals-stored {

+			      type uint32 {

+			        range "32";

+			      }

+			      default 32;

+			      description 

+			        "This object specifies the number of completed measurement intervals to

+			         store in the history statistic table.

+			                 

+			         At least 32 completed measurement intervals are to be

+			         stored.";

+			      reference

+			        "MEF-SOAM-PM-MIB.mefSoamLmCfgNumIntervalsStored";

+			    }

+

+				leaf number-intervals-returned {

+					type uint32 {

+						range "2..32";

+					}

+					default 32;

+

+					description

+					"This object specifies the number of completed measurement intervals to

+					return from the history statistic table.

+					The number of intervals stored is fixed at 32 on the device";

+

+				}

+

+				leaf session-status {

+					type session-status-type;

+					config false;

+

+					description

+					"This object indicates the current status of the DM session. A value

+					of 'active' indicates the current DM session is active,

+					i.e. the current time lies between the start time and the

+					stop time, and enabled is true. A value of 'not-active'


+					indicates the current DM session is not active, i.e. it has

+					not started yet, has stopped upon reaching the stop time,

+					or is disabled.";

+				}

+

+				leaf frame-delay-two-way {

+					type yang:gauge32;

+					units microseconds;

+					config false;

+

+					description

+					"This object contains the two-way frame delay calculated by this MEP

+					from the last received SOAM PDU.

+

+					This object is undefined is measurement-type is

+					dm1-transmitted or dm1-received.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamDmMeasuredStatsFrameDelayTwoWay";

+				}

+

+				leaf inter-frame-delay-variation-two-way {

+					type yang:gauge32;

+					units microseconds;

+					config false;

+

+					description

+					"This object contains the last two-way inter-frame delay interval

+					calculated by this MEP.

+

+					The value of this object is undefined when measurement-type

+					is dm1-transmitted or dm1-received.";

+					reference

+					"MEF-SOAM-PM-MIB.mefSoamDmMeasuredStatsIfdvTwoWay";

+				}

+

+				container current-stats {

+					config false;

+

+					description

+					"This container contains the results for the current Measurement

+					Interval in a SOAM Delay Measurement session gathered

+					during the interval indicated by measurement-interval.";

+

+					leaf id {

+						type uint32;

+

+						description

+						"The index for the current Measurement Interval for this PM

+						session. This value will become the value for id of the

+						history-measurement-stats list once the Measurement

+						Interval is completed.";

+					}

+					

+					leaf start-time {

+						type yang:date-and-time;

+						mandatory true;

+

+						description

+						"The time that the current Measurement Interval started.";

+					}

+

+					leaf elapsed-time {

+						type uint32 {

+							range "0..2147483647";

+						}

+						mandatory true;

+

+						description

+						"The time that the current Measurement Interval has been running,

+						in 0.01 seconds.";

+					}

+

+					uses delay-measurement-stats-group;

+					uses delay-measurement-bins-group;

+				}

+

+				list history-stats {

+					key id;

+					config false;

+					description

+					"This list contains the results for history Measurement Intervals in

+					a SOAM Delay Measurement session.";

+

+					leaf id {

+						type uint32;

+

+						description

+						"The identifier for the Measurement Interval within this

+						PM session.";

+					}

+

+					leaf end-time {

+						type yang:date-and-time;

+						mandatory true;

+

+						description

+						"The time that the Measurement Interval ended.";

+					}

+

+					leaf elapsed-time {

+						type uint32 {

+							range "0..2147483647";

+						}

+						mandatory true;

+

+						description

+						"The length of time that the Measurement Interval ran for, in 0.01

+						seconds.";

+					}

+

+					uses delay-measurement-stats-group;

+					uses delay-measurement-bins-group;

+				}

+			}

+		}

+	}

+

+	//

+	// RPCs related to MEF SOAM PM

+	//

+	

+  rpc clear-loss-history-stats {

+	description 

+	  "Clear the Loss Measurement history list (history-availability-stats and

+	   history-measurement-stats) for a specific session. All instance

+	   data is deleted.";

+

+	input {

+	  uses msea-cfm:maintenance-association-end-point-reference {

+		  refine maintenance-domain { 

+			  mandatory true; 

+		  }

+		  refine maintenance-association { 

+			  mandatory true; 

+		  }

+		  refine maintenance-association-end-point { 

+			  mandatory true; 

+		  }

+	  }

+

+	  leaf lm-id {

+		type leafref {

+			path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:maintenance-association-end-point/msea-soam-pm:loss-measurements/msea-soam-pm:loss-measurement/msea-soam-pm:lm-id";

+		}

+		mandatory true;

+

+		description

+		  "The LM ID of the loss measurement session of which the loss

+		   measurement history should be cleared";

+	  }

+	}

+  }

+

+	

+	

+	

+  rpc clear-delay-history-stats {

+	description 

+	  "Clear the Delay Measurement history list (history-stats) for a specific

+	   session. All instance data is deleted.";

+

+	input {

+		uses msea-cfm:maintenance-association-end-point-reference { //Added to specify the MEP SC 10-Dec-15

+		  refine maintenance-domain { 

+			  mandatory true; 

+		  }

+		  refine maintenance-association { 

+			  mandatory true; 

+		  }

+		  refine maintenance-association-end-point { 

+			  mandatory true; 

+		  }

+		}

+

+

+	  leaf dm-id {

+		type leafref {

+			path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:maintenance-association-end-point/msea-soam-pm:delay-measurements/msea-soam-pm:delay-measurement/msea-soam-pm:dm-id";

+		}

+		mandatory true;

+

+		description

+		  "The DM ID of the loss measurement session of which the loss

+		   measurement history should be cleared";

+	  }

+	}

+  }

+

+	//

+	// Notifications related to MEF SOAM PM

+	//

+

+}

+