Major OFDPA refactoring to handle multi-stage flows in a cleaner way
Multi-stage flows are required in two cases:
- VLAN table: filtering rule need to be installed before assignment rule
- TMAC table: unicacst rule need to be installed before multicast rule (QMX only)
Change-Id: I2cccc42a2c08b00f887b22bad54c7107794beafa
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 98eeb42..8957bff 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
@@ -162,7 +162,7 @@
* @see org.onosproject.driver.pipeline.OFDPA2Pipeline#processVlanIdFilter
*/
@Override
- protected List<FlowRule> processVlanIdFilter(PortCriterion portCriterion,
+ protected List<List<FlowRule>> processVlanIdFilter(PortCriterion portCriterion,
VlanIdCriterion vidCriterion,
VlanId assignedVlan,
ApplicationId applicationId) {
@@ -217,7 +217,7 @@
rules.add(rule);
}
- return rules;
+ return ImmutableList.of(rules);
}
/**
@@ -314,7 +314,7 @@
* @see org.onosproject.driver.pipeline.OFDPA2Pipeline#processEthDstFilter
*/
@Override
- protected List<FlowRule> processEthDstFilter(PortCriterion portCriterion,
+ protected List<List<FlowRule>> processEthDstFilter(PortCriterion portCriterion,
EthCriterion ethCriterion,
VlanIdCriterion vidCriterion,
VlanId assignedVlan,
@@ -413,11 +413,11 @@
.forTable(TMAC_TABLE).build();
rules.add(rule);
}
- return rules;
+ return ImmutableList.of(rules);
}
@Override
- protected List<FlowRule> processEthDstOnlyFilter(EthCriterion ethCriterion,
+ protected List<List<FlowRule>> processEthDstOnlyFilter(EthCriterion ethCriterion,
ApplicationId applicationId) {
TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
@@ -435,7 +435,7 @@
.fromApp(applicationId)
.makePermanent()
.forTable(TMAC_TABLE).build();
- return ImmutableList.<FlowRule>builder().add(rule).build();
+ return ImmutableList.of(ImmutableList.of(rule));
}
/*