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 47c944ada5..5d9d7925eb 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.VlanPcpCriterion; 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.VlanPcpCriterionTranslat 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 @@ final class CriterionTranslatorHelper { .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 11153cc7a7..30a3c28353 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.ArpOpCriterion; 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 @@ final class CriterionTranslators { } } - - - + /** + * 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); + } + } }