ONOS-6604 More criterion translators for PiFlowRuleTranslationService
Change-Id: I9399f75fe467971d6d012ddad47a72c58df02d69
diff --git a/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslatorHelper.java b/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslatorHelper.java
index 47c944a..5d9d792 100644
--- a/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslatorHelper.java
+++ b/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslatorHelper.java
@@ -55,6 +55,8 @@
import org.onosproject.net.flow.criteria.ArpHaCriterion;
import org.onosproject.net.flow.criteria.ArpOpCriterion;
import org.onosproject.net.flow.criteria.ArpPaCriterion;
+import org.onosproject.net.flow.criteria.IPEcnCriterion;
+import org.onosproject.net.flow.criteria.MetadataCriterion;
import org.onosproject.net.pi.impl.CriterionTranslators.EthCriterionTranslator;
import org.onosproject.net.pi.impl.CriterionTranslators.EthTypeCriterionTranslator;
@@ -91,6 +93,8 @@
import org.onosproject.net.pi.impl.CriterionTranslators.ArpHaCriterionTranslator;
import org.onosproject.net.pi.impl.CriterionTranslators.ArpOpCriterionTranslator;
import org.onosproject.net.pi.impl.CriterionTranslators.ArpPaCriterionTranslator;
+import org.onosproject.net.pi.impl.CriterionTranslators.IPEcnCriterionTranslator;
+import org.onosproject.net.pi.impl.CriterionTranslators.MetadataCriterionTranslator;
import org.onosproject.net.pi.model.PiMatchType;
import org.onosproject.net.pi.runtime.PiExactFieldMatch;
@@ -148,6 +152,8 @@
.put(ArpHaCriterion.class, new ArpHaCriterionTranslator())
.put(ArpOpCriterion.class, new ArpOpCriterionTranslator())
.put(ArpPaCriterion.class, new ArpPaCriterionTranslator())
+ .put(IPEcnCriterion.class, new IPEcnCriterionTranslator())
+ .put(MetadataCriterion.class, new MetadataCriterionTranslator())
.build();
private CriterionTranslatorHelper() {
diff --git a/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslators.java b/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslators.java
index 11153cc..30a3c28 100644
--- a/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslators.java
+++ b/core/net/src/main/java/org/onosproject/net/pi/impl/CriterionTranslators.java
@@ -54,6 +54,7 @@
import org.onosproject.net.flow.criteria.ArpPaCriterion;
import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
+import org.onosproject.net.flow.criteria.IPEcnCriterion;
import static org.onlab.util.ImmutableByteSequence.ByteSequenceTrimException;
import static org.onlab.util.ImmutableByteSequence.copyFrom;
@@ -487,7 +488,14 @@
}
}
-
-
-
+ /**
+ * Translator of IPEcnCriterion.
+ */
+ static final class IPEcnCriterionTranslator extends AbstractCriterionTranslator {
+ @Override
+ public void init(Criterion criterion, int bitWidth) throws ByteSequenceTrimException {
+ IPEcnCriterion c = (IPEcnCriterion) criterion;
+ initAsExactMatch(copyFrom(c.ipEcn()), bitWidth);
+ }
+ }
}