From 897fd2de2234d6cdf2eb047a0297837f7d358396 Mon Sep 17 00:00:00 2001 From: zhiyong ke Date: Wed, 12 Jul 2017 11:41:38 +0800 Subject: [PATCH] ONOS-6604 More criterion translators for PiFlowRuleTranslationService Change-Id: I9399f75fe467971d6d012ddad47a72c58df02d69 --- .../net/pi/impl/CriterionTranslatorHelper.java | 6 ++++++ .../net/pi/impl/CriterionTranslators.java | 14 +++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) 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); + } + } }