Fix filtering order during the removal
Change-Id: If8b7e60d8f5a145bd470cbd9e66e6905ad0c711a
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/CpqdOfdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/CpqdOfdpa2Pipeline.java
index 797d79f..de19330 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/CpqdOfdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/CpqdOfdpa2Pipeline.java
@@ -203,9 +203,10 @@
*/
@Override
protected List<List<FlowRule>> processVlanIdFilter(PortCriterion portCriterion,
- VlanIdCriterion vidCriterion,
- VlanId assignedVlan,
- ApplicationId applicationId) {
+ VlanIdCriterion vidCriterion,
+ VlanId assignedVlan,
+ ApplicationId applicationId,
+ boolean install) {
List<FlowRule> rules = new ArrayList<>();
TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2Pipeline.java
index 330ef49..940bfd2 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2Pipeline.java
@@ -536,7 +536,7 @@
log.info("filtering objective missing VLAN, cannot program VLAN Table");
} else {
List<List<FlowRule>> allStages = processVlanIdFilter(
- portCriterion, vidCriterion, assignedVlan, applicationId);
+ portCriterion, vidCriterion, assignedVlan, applicationId, install);
for (List<FlowRule> flowRules : allStages) {
log.trace("Starting a new flow rule stage for VLAN table flow");
ops.newStage();
@@ -584,12 +584,14 @@
* @param vidCriterion vlan assigned to port, or NONE for untagged
* @param assignedVlan assigned vlan-id for untagged packets
* @param applicationId for application programming this filter
+ * @param install indicates whether to add or remove the objective
* @return stages of flow rules for port-vlan filters
*/
protected List<List<FlowRule>> processVlanIdFilter(PortCriterion portCriterion,
- VlanIdCriterion vidCriterion,
- VlanId assignedVlan,
- ApplicationId applicationId) {
+ VlanIdCriterion vidCriterion,
+ VlanId assignedVlan,
+ ApplicationId applicationId,
+ boolean install) {
List<FlowRule> filteringRules = new ArrayList<>();
List<FlowRule> assignmentRules = new ArrayList<>();
TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
@@ -679,7 +681,8 @@
filteringRules.add(preRule);
}
}
- return ImmutableList.of(filteringRules, assignmentRules);
+ return install ? ImmutableList.of(filteringRules, assignmentRules) :
+ ImmutableList.of(assignmentRules, filteringRules);
}
/**