Fix to support vlan id criterion in openstack pipeline
Change-Id: I4403620ffe2aa0b5c56ed15514e6273da8ee0f5a
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OpenstackPipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OpenstackPipeline.java
index dbb5df5..44c2268 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OpenstackPipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OpenstackPipeline.java
@@ -35,6 +35,7 @@
import org.onosproject.net.flow.criteria.IPCriterion;
import org.onosproject.net.flow.criteria.PortCriterion;
import org.onosproject.net.flow.criteria.TunnelIdCriterion;
+import org.onosproject.net.flow.criteria.VlanIdCriterion;
import org.onosproject.net.flow.instructions.Instruction;
import org.onosproject.net.flowobjective.FilteringObjective;
import org.onosproject.net.flowobjective.FlowObjectiveStore;
@@ -281,6 +282,7 @@
IPCriterion ipDst = (IPCriterion) fo.selector().getCriterion(Criterion.Type.IPV4_DST);
TunnelIdCriterion tunnelId =
(TunnelIdCriterion) fo.selector().getCriterion(Criterion.Type.TUNNEL_ID);
+ VlanIdCriterion vlanId = (VlanIdCriterion) fo.selector().getCriterion(Criterion.Type.VLAN_VID);
PortCriterion inPort = (PortCriterion) fo.selector().getCriterion(Criterion.Type.IN_PORT);
Optional<Instruction> output = fo.treatment().immediate().stream()
.filter(i -> i.type() == Instruction.Type.OUTPUT).findAny();
@@ -291,6 +293,7 @@
if (inPort != null) {
return SRC_VNI_TABLE;
} else if ((tunnelId != null && ipSrc != null && ipDst != null) ||
+ (vlanId != null && ipSrc != null && ipDst != null) ||
(ipSrc != null && group.isPresent())) {
return ROUTING_TABLE;
} else if (output.isPresent() || (ipDst != null && group.isPresent())) {