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-fm.yang b/drivers/microsemi/ea1000yang/src/main/yang/msea-soam-fm.yang
new file mode 100644
index 0000000..35a95c9
--- /dev/null
+++ b/drivers/microsemi/ea1000yang/src/main/yang/msea-soam-fm.yang
@@ -0,0 +1,545 @@
+module msea-soam-fm {
+
+ namespace "http://www.microsemi.com/microsemi-edge-assure/msea-soam-fm";
+ prefix "msea-soam-fm"; //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-fm YANG Module defined in MEF 38
+ for the management of Ethernet Services Operations, Administration and
+ Maintenance for Fault Management 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-fm@2012-04-16 - Sean Condon, Microsemi";
+ reference
+ "Service OAM Fault Management YANG Modules (MEF 38), April 2012";
+ }
+
+ //
+ // Type definitions related to MEF SOAM FM
+ //
+
+ typedef operational-state-type {
+ type enumeration {
+ enum enabled {
+ description
+ "The MEP is able to provide OAM capabilities and has been set to
+ active via the 'administrative-state' leaf.";
+ }
+ enum disabled {
+ description
+ "The MEP is not able to provide OAM capabilities, for example
+ because it has been disabled via the administrative-state leaf,
+ has detected an operational failure condition, or has failed an
+ internal test.";
+ }
+ enum testing {
+ description
+ "The MEP has been placed into a test mode, either a troubleshooting
+ mode or ETH-Test 'Out-of-service' mode.";
+ }
+ enum unknown {
+ description
+ "The MEP is unable to report the operational state.";
+ }
+ }
+ description
+ "This attribute indicates the operational state (current capability) of
+ a MEP.";
+ reference
+ "[MEF7.1] 9.2.5";
+ }
+
+
+
+ //
+ // Augments into CFM related to MEF SOAM FM
+ //
+ augment "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association" {
+ description
+ "This set of data definitions represents the Maintenance Entity Group (Y.1731)
+ configuration that is unique from the Maintenance Association.";
+
+ leaf meg-level {
+ type msea:md-level-type;
+
+// msea:not-changeable;
+
+ must "../msea-cfm:y1731-compliant" {
+ error-message "meg-level can only be set when y1731-compliant is present";
+ error-app-tag "msea-soam-fm-must-04";
+ }
+
+ must "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:md-level = current()" {
+ error-message "meg-level must be the same as its parent MD md-level";
+ error-app-tag "msea-soam-fm-must-05";
+ }
+
+ description
+ "This attribute indicates the MEG Level of the MEG. It has to be the same as the
+ MDs level, which is a way of ensuring that all MEG under this MD have the same level";
+
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamNetCfgMegLevel";
+ }
+ }
+
+
+
+
+
+ augment "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:component-list" {
+ description
+ "This set of data definitions extends the component list of the Maintenance
+ Entity Group (as defined in Y.1731) or Maintenance Association (as defined
+ in 802.1q)";
+ reference
+ "[MEF7.1] 9.2.2";
+
+ leaf mep-port-status-tlv-included {
+ type boolean;
+ default true;
+
+ description
+ "Indicates whether a Port Status TLV is included in CCM frame
+ transmission. A value of 'true' indicates that the Port Status
+ TLV is to be included. A value of 'false' indicates that the
+ Port Status TLV is not to be included.";
+ reference
+ "[MEF7.1] 9.2.2";
+ }
+
+ leaf mep-interface-status-tlv-included {
+ type boolean;
+ default true;
+
+ description
+ "Indicates whether a Interface Status TLV is included in CCM frame
+ transmission. A value of 'true' indicates that the Interface Status TLV
+ is to be included. A value of 'false' indicates that the Interface
+ Status TLV is not to be included.";
+ reference
+ "[MEF7.1] 9.2.2";
+ }
+ }
+
+
+
+
+ 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 in
+ Y.1731) or Maintenance association End Point (as described in 802.1q)
+ defined in the MEF CFM module (MEF-CFM)";
+ reference
+ "[MEF7.1] 9.2.2";
+
+ leaf operational-state {
+ type operational-state-type;
+
+ config false;
+
+ description
+ "This attribute indicates the operational state (current capability) of
+ the MEP.";
+ reference
+ "[MEF7.1] 9.2.5";
+ }
+
+ leaf connectivity-status {
+ type enumeration {
+ enum active {
+ description
+ "Refers to the ability to exchange SOAM PDU frames among all the UNIs
+ of an EVC.";
+ }
+ enum partially-active {
+ description
+ "Refers to the ability to exchange SOAM PDU frames among some but not
+ all the UNIs of an EVC.";
+ }
+ enum inactive {
+ description
+ "Refers to the ability to exchange SOAM PDU frames among any of the UNIs
+ of an EVC.";
+ }
+ }
+ config false;
+
+ description
+ "This attribute indicates the connectivity status for a MEP in an EVC
+ MEs. An 'active' MEP Connectivity Status refers to the ability
+ to exchange SOAM PDU frames among all the UNIs of an EVC. A
+ 'partially-active' MEP Connectivity Status refers to the
+ ability to exchange SOAM PDU frames among some but not all the
+ UNIs of an EVC. An 'inactive' MEP Connectivity Status refers to
+ the inability to exchange SOAM PDU frames among any of the UNIs
+ of an EVC.";
+ reference
+ "[MEF7.1] 9.2.5";
+ }
+
+ leaf port-status {
+ type msea:port-status-type;
+ config false;
+
+ description
+ "An enumerated value of the Port status TLV sent in the last CCM from the
+ local MEP or the default value psNoPortStateTLV indicating no
+ CCM has been sent or no Port Status TLV has been sent.";
+ reference
+ "[802.1q] 17.5";
+ }
+
+ leaf interface-status {
+ type msea:interface-status-type;
+ config false;
+
+ description
+ "An enumerated value of the Interface status TLV sent in the last CCM
+ from the local MEP or the default value no-status-tlv
+ indicating no CCM has been sent or no Interface Status TLV has
+ been sent.";
+ reference
+ "[802.1q] 17.5";
+ }
+
+ leaf last-defect-sent {
+ type msea-cfm:fault-alarm-defect-bits-type;
+ config false;
+
+ description
+ "This attribute indicates the state of the previous MEP defects,
+ that was sent with the previous
+ mep-defect-alarm notification. It is always some *previous*
+ value of cfm:active-defects. Once an mep-defect-alarm is sent
+ the mep-defect-alarm that was sent in the notification
+ updates the contents of this leaf.
+
+ If no mep-defect-alarm notification has been sent the value of
+ this leaf is '0'.";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamMepStatusLastDefectSentStatus";
+ }
+
+ leaf rdi-transmit-status {
+ type boolean;
+ config false;
+
+ description
+ "Indicates whether the local MEP is generating a RDI bit in the CCM that
+ it transmits. A value of 'true' indicates that a RDI bit was
+ set in the last CCM that the MEP transmitted. A value of
+ 'false' indicates that the last CCM transmitted by the MEP did
+ not set the RDI bit or that a CCM has never been transmitted by
+ the MEP.";
+ reference
+ "[MEF7.1] 9.2.2";
+ }
+
+ } //end of MEP augmentation
+
+
+ augment "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:maintenance-association-end-point/msea-cfm:loopback" {
+ description
+ "This set of data definitions extends on-demand Ethernet OAM Fault
+ Management Loopback function (ETH-LB) as defined in Y.1731 and
+ 802.1q and defined in MEF-CFM";
+ reference
+ "[MEF7.1] 9.3.2";
+
+ leaf multicast-enabled {
+ type boolean;
+ default false;
+
+ description
+ "This attribute specifies whether a MEP uses unicast or multicast
+ to send the ETH-LB messages (LBM). The 802.1ag standard only allows
+ unicast LBM. ITU-T Y.1731 allows LBM to be multicast. This attribute
+ allows the MEP to send either multicast or unicast LBM on a per MEP
+ basis.
+
+ The value 'true' indicates multicast is enabled.
+
+ The value 'false' indicates unicast is enabled.";
+ reference
+ "[MEF7.1] 9.3.2.1";
+ }
+
+ leaf interval {
+ type uint16 {
+ range "0..2096";
+ }
+ units milliseconds;
+ default 1000;
+
+ description
+ "This attribute specifies the period between LBM transmissions in an LB
+ Session. For an LB Session, the period for LBM transmission
+ is configurable in the range 0 and 2096 milliseconds . Granularity is 1 ms.
+ The transmission of the next LBM is not dependent upon the
+ reception the first LBR. The next LBM is sent out based upon
+ the interval count.
+
+ An interval count of '0' indicates that the subsequent LBM is sent
+ out with the minimum possible delay.";
+ reference
+ "[MEF7.1] 9.3.2.1";
+ }
+
+ leaf frame-size {
+ type uint16 {
+ range "64..9600";
+ }
+ units "bytes";
+
+ description
+ "This attribute specifies the LBM frame size. For an LB Session, the size
+ of the LBM frame is configurable to any Ethernet frame size
+ between 64 Bytes and the maximum transmission unit of the EVC.
+
+ The range of frame sizes from 64 through 2000 octets, in 4 octet increments,
+ MUST be supported, and the range of frame sizes from 2004 through 9600
+ octets, in 4 octet increments, SHOULD be supported.
+
+ The adjustment to the frame size of the standard LBM PDU size is accomplished
+ by the addition of a Data TLV or a Test TLV.";
+ reference
+ "[MEF7.1] 9.3.2.1";
+ }
+
+
+ leaf timeout {
+ type yang:gauge32 {
+ range "5000";
+ }
+ default 5000;
+
+ description
+ "This attribute specifies the maximum amount of time to receive an LBR in
+ response to a LBM. If a LBR is not received within the timeout
+ value it is considered lost.";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamLbCfgTimeout";
+ }
+
+ list responses {
+ key "receive-order";
+ config false;
+
+ description
+ "A list of responses from a Multicast Loopback Message. This are shown only when multicast is enabled";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamLbrMulticastTable";
+
+ leaf receive-order {
+ type int8;
+
+ description
+ "Loopback transaction identifier returned by a previous loopback message
+ command, indicating which loopback request is returned.";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamLbrMulticastTransId";
+ }
+
+ leaf multicast-reply-mac {
+ type yang:mac-address;
+
+ description
+ "Source MAC address returned in the LBR Ethernet frame";
+ reference
+ "[802.1q] 21.7, [Y.1731] 7.2,
+ [MEF31] MEF-SOAM-FM-MIB.mefSoamLbrMulticastReplyMac";
+ }
+ }
+ }
+
+
+
+ augment "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:maintenance-association-end-point/msea-cfm:linktrace" {
+ description
+ "Augments to support the enhanced CFM Linktrace functionality";
+ reference
+ "[MEF30] 8.4";
+
+ leaf ltm-msgs-transmitted {
+ type yang:zero-based-counter32;
+ config false;
+
+ description
+ "This attribute contains the count of the total number of LTM messages
+ transmitted by the MEP";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamLtLtmTransmitted";
+ }
+
+ leaf ltr-msgs-received {
+ type yang:zero-based-counter32;
+ config false;
+
+ description
+ "This attribute contains the count of the total number of LTR messages
+ received by the MEP";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamLtLtrReceived";
+ }
+
+ leaf ltm-msgs-received {
+ type yang:zero-based-counter32;
+ config false;
+
+ description
+ "This attribute contains the count of the total number of LTM messages
+ received by the MEP";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamLtLtmReceived";
+ }
+
+ leaf ltr-msgs-transmitted {
+ type yang:zero-based-counter32;
+ config false;
+
+ description
+ "This attribute contains the count of the total number of LTR messages
+ transmitted by the MEP";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamLtLtrTransmitted";
+ }
+ }
+
+
+ //
+ // Data definitions related to MEF SOAM FM
+ //
+ augment "/msea-cfm:mef-cfm" {
+ description
+ "A set of data definitions related to FM event notifications.";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamFmNotificationCfg";
+
+ container notification-configuration {
+ description
+ "A set of data definitions related to FM event notifications.";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamFmNotificationCfg";
+
+ leaf active-alarms {
+ type bits {
+ bit fault-alarm {
+ description "Send notifications when a specific MEP has a persistent defect condition";
+ }
+
+ bit mep-defect-alarm {
+ description "Send notifications when the value of mep-defects changes";
+ }
+
+ bit mep-operational-state-changed {
+ description "Send notifications when the value of a MEP's operational-state changes";
+ }
+ }
+ description "Configure the fault notification generator to enable the alarms given in
+ the bitmask list.";
+ }
+ }
+ }
+
+ //
+ // Notifications related to MEF SOAM FM
+ //
+
+ notification mep-defect-alarm {
+ description
+ "A mep-defect-alarm notification is generated when the value of
+ mep-defects changes. It indicates a persistent defect in
+ the MEP. This notification is sent whenever the
+ cfm:active-defects of the MEP changes, regardless of the
+ cfm:highest-priority-defect-found leaf.
+
+ The inclusion of the cfm:remote-mep-state leaf is
+ optional. It shall not be included if the defect is not based
+ upon a specific MEP instance, e.g.. bDefErrorCCM.";
+
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamMepDefectAlarm";
+
+ uses msea-cfm:mep-notification-reference;
+
+ leaf remote-mep {
+ type msea:mep-id-type;
+ description "Remote MEP identifier";
+ }
+
+ leaf last-defect-sent {
+ type msea-cfm:fault-alarm-defect-type;
+
+ description
+ "The last defect sent on the specific MEP";
+ }
+ leaf active-defects {
+ type msea-cfm:fault-alarm-defect-bits-type;
+ description
+ "The currently active defects on the specific MEP.";
+ }
+
+ leaf remote-mep-state {
+ type msea-cfm:remote-mep-state-type;
+
+ description
+ "The value of the remote MEP state on a specific MEP";
+ reference
+ "[802.1q] 12.14.7.6.3:b";
+ }
+ }
+
+ notification mep-operational-state-changed {
+ description
+ "A mep-operational-state-changed notification is sent when the value of a
+ MEP's operational-state changes. It indicates an operational
+ state change in the MEP. This notification is sent whenever the
+ operational status of the MEP changes.";
+ reference
+ "[MEF31] MEF-SOAM-FM-MIB.mefSoamMepOperStatusAlarm";
+
+ uses msea-cfm:mep-notification-reference;
+
+ leaf operational-state {
+ type operational-state-type;
+
+ description
+ "The operational-state leaf of the affected MEP";
+ }
+ }
+}
+