adding a criterion for inner vlans
used by olt to match on the inner vlan
Change-Id: I7671b68d9860d598395cba134a589ca23f264c7e
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java b/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
index 1852ee2..2130293 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/EncodeCriterionCodecHelper.java
@@ -84,6 +84,8 @@
formatMap.put(Criterion.Type.ETH_TYPE, new FormatEthType());
formatMap.put(Criterion.Type.VLAN_VID, new FormatVlanVid());
formatMap.put(Criterion.Type.VLAN_PCP, new FormatVlanPcp());
+ formatMap.put(Criterion.Type.INNER_VLAN_VID, new FormatInnerVlanVid());
+ formatMap.put(Criterion.Type.INNER_VLAN_PCP, new FormatInnerVlanPcp());
formatMap.put(Criterion.Type.IP_DSCP, new FormatIpDscp());
formatMap.put(Criterion.Type.IP_ECN, new FormatIpEcn());
formatMap.put(Criterion.Type.IP_PROTO, new FormatIpProto());
@@ -194,6 +196,24 @@
}
}
+ private static class FormatInnerVlanVid implements CriterionTypeFormatter {
+ @Override
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
+ final VlanIdCriterion vlanIdCriterion =
+ (VlanIdCriterion) criterion;
+ return root.put(CriterionCodec.INNER_VLAN_ID, vlanIdCriterion.vlanId().toShort());
+ }
+ }
+
+ private static class FormatInnerVlanPcp implements CriterionTypeFormatter {
+ @Override
+ public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {
+ final VlanPcpCriterion vlanPcpCriterion =
+ (VlanPcpCriterion) criterion;
+ return root.put(CriterionCodec.INNER_PRIORITY, vlanPcpCriterion.priority());
+ }
+ }
+
private static class FormatIpDscp implements CriterionTypeFormatter {
@Override
public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) {