Multiple meter support added and meter action added for OF1.5
MeterFeaturesFlag added for OF1.5
Change-Id: I84d2785f37ea51b08244de9c54effe5224af9531
diff --git a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/util/MeterFeaturesBuilder.java b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/util/MeterFeaturesBuilder.java
index abfa4aa..35f9dde 100644
--- a/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/util/MeterFeaturesBuilder.java
+++ b/providers/openflow/meter/src/main/java/org/onosproject/provider/of/meter/util/MeterFeaturesBuilder.java
@@ -21,7 +21,9 @@
import org.onosproject.net.meter.DefaultMeterFeatures;
import org.onosproject.net.meter.Meter;
import org.onosproject.net.meter.MeterFeatures;
+import org.onosproject.net.meter.MeterFeaturesFlag;
import org.projectfloodlight.openflow.protocol.OFMeterFeatures;
+import org.projectfloodlight.openflow.protocol.OFVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,9 +34,15 @@
import static org.onosproject.net.meter.Band.Type.REMARK;
import static org.onosproject.net.meter.Meter.Unit.KB_PER_SEC;
import static org.onosproject.net.meter.Meter.Unit.PKTS_PER_SEC;
+import static org.onosproject.net.meter.MeterFeaturesFlag.ACTION_SET;
+import static org.onosproject.net.meter.MeterFeaturesFlag.ANY_POSITION;
+import static org.onosproject.net.meter.MeterFeaturesFlag.MULTI_LIST;
import static org.projectfloodlight.openflow.protocol.ver13.OFMeterBandTypeSerializerVer13.DROP_VAL;
import static org.projectfloodlight.openflow.protocol.ver13.OFMeterBandTypeSerializerVer13.DSCP_REMARK_VAL;
import static org.projectfloodlight.openflow.protocol.ver13.OFMeterFlagsSerializerVer13.*;
+import static org.projectfloodlight.openflow.protocol.ver15.OFMeterFeatureFlagsSerializerVer15.ACTION_SET_VAL;
+import static org.projectfloodlight.openflow.protocol.ver15.OFMeterFeatureFlagsSerializerVer15.ANY_POSITION_VAL;
+import static org.projectfloodlight.openflow.protocol.ver15.OFMeterFeatureFlagsSerializerVer15.MULTI_LIST_VAL;
/**
* OpenFlow builder of MeterFeatures.
@@ -98,6 +106,24 @@
* Stats are supported ?
*/
builder.hasStats((STATS_VAL & ofMeterFeatures.getCapabilities()) != 0);
+
+ /*
+ * Along with the OF1.5, we extract meter features flags
+ */
+ if (ofMeterFeatures.getVersion().wireVersion >= OFVersion.OF_15.wireVersion) {
+ Set<MeterFeaturesFlag> meterFeaturesFlags = Sets.newHashSet();
+ if ((ACTION_SET_VAL & ofMeterFeatures.getFeatures()) != 0) {
+ meterFeaturesFlags.add(ACTION_SET);
+ }
+ if ((ANY_POSITION_VAL & ofMeterFeatures.getFeatures()) != 0) {
+ meterFeaturesFlags.add(ANY_POSITION);
+ }
+ if ((MULTI_LIST_VAL & ofMeterFeatures.getFeatures()) != 0) {
+ meterFeaturesFlags.add(MULTI_LIST);
+ }
+ builder.withFeatures(meterFeaturesFlags);
+ }
+
return builder.build();
}