[CORD-545] Adds QoS Index support in ONOS core
Change-Id: If7649bdf70f5a796466b8efc5798dc3346ea94a0
diff --git a/drivers/default/src/main/java/org/onosproject/driver/extensions/Ofdpa3ExtensionTreatmentInterpreter.java b/drivers/default/src/main/java/org/onosproject/driver/extensions/Ofdpa3ExtensionTreatmentInterpreter.java
index c449702..067e294 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/extensions/Ofdpa3ExtensionTreatmentInterpreter.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/extensions/Ofdpa3ExtensionTreatmentInterpreter.java
@@ -30,8 +30,10 @@
import org.projectfloodlight.openflow.protocol.oxm.OFOxmOfdpaMplsL2Port;
import org.projectfloodlight.openflow.protocol.oxm.OFOxmOfdpaMplsType;
import org.projectfloodlight.openflow.protocol.oxm.OFOxmOfdpaOvid;
+import org.projectfloodlight.openflow.protocol.oxm.OFOxmOfdpaQosIndex;
import org.projectfloodlight.openflow.types.U16;
import org.projectfloodlight.openflow.types.U32;
+import org.projectfloodlight.openflow.types.U8;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,6 +56,9 @@
} else if (extensionTreatmentType.equals(
ExtensionTreatmentType.ExtensionTreatmentTypes.OFDPA_SET_MPLS_L2_PORT.type())) {
return true;
+ } else if (extensionTreatmentType.equals(
+ ExtensionTreatmentType.ExtensionTreatmentTypes.OFDPA_SET_QOS_INDEX.type())) {
+ return true;
}
return false;
}
@@ -86,6 +91,18 @@
}
throw new UnsupportedOperationException(
"Unexpected ExtensionTreatment: " + extensionTreatment.toString());
+ } else if (type.equals(ExtensionTreatmentType.ExtensionTreatmentTypes.OFDPA_SET_QOS_INDEX.type())) {
+ Integer qosIndex = ((Ofdpa3SetQosIndex) extensionTreatment).qosIndex();
+ /*
+ * Qos index is a single byte [0...255]
+ */
+ if (qosIndex >= 0 && qosIndex <= 255) {
+ return factory.actions().setField(
+ factory.oxms().ofdpaQosIndex(U8.ofRaw((byte) (qosIndex & 0xFF)))
+ );
+ }
+ throw new UnsupportedOperationException(
+ "Unexpected ExtensionTreatment: " + extensionTreatment.toString());
}
throw new UnsupportedOperationException(
"Unexpected ExtensionTreatment: " + extensionTreatment.toString());
@@ -113,6 +130,14 @@
(mplsL2Port >= 0x00020000 && mplsL2Port <= 0x0002FFFF)) {
return new Ofdpa3SetMplsL2Port(mplsL2Port);
}
+ break;
+ case OFDPA_QOS_INDEX:
+ OFOxmOfdpaQosIndex qosindex = ((OFOxmOfdpaQosIndex) oxm);
+ Integer qosIndex = (int) qosindex.getValue().getRaw();
+ if (qosIndex >= 0 && qosIndex <= 255) {
+ return new Ofdpa3SetQosIndex(qosIndex);
+ }
+ break;
default:
throw new UnsupportedOperationException(
"Driver does not support extension type " + oxm.getMatchField().id);
@@ -130,6 +155,8 @@
return new Ofdpa3SetOvid();
} else if (type.equals(ExtensionTreatmentType.ExtensionTreatmentTypes.OFDPA_SET_MPLS_L2_PORT.type())) {
return new Ofdpa3SetMplsL2Port();
+ } else if (type.equals(ExtensionTreatmentType.ExtensionTreatmentTypes.OFDPA_SET_QOS_INDEX.type())) {
+ return new Ofdpa3SetQosIndex();
}
throw new UnsupportedOperationException(
"Driver does not support extension type " + type.toString());