Adding route blackhole
Change-Id: I70212b0ab91e628e8528bca896c3aecc499e31b1
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 04d581a..d834b48 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
@@ -284,6 +284,15 @@
return false;
}
+ /**
+ * Determines whether this driver supports installing a clearDeferred action on table 30.
+ *
+ * @return true if required
+ */
+ protected boolean supportsUnicastBlackHole() {
+ return true;
+ }
+
//////////////////////////////////////
// Flow Objectives
//////////////////////////////////////
@@ -1462,6 +1471,15 @@
tb.transition(ACL_TABLE);
}
+ if (fwd.treatment() != null && fwd.treatment().clearedDeferred()) {
+ if (supportsUnicastBlackHole()) {
+ tb.wipeDeferred();
+ } else {
+ log.warn("Clear Deferred is not supported Unicast Routing Table on device {}", deviceId);
+ return Collections.emptySet();
+ }
+ }
+
FlowRule.Builder ruleBuilder = DefaultFlowRule.builder()
.fromApp(fwd.appId())
.withPriority(fwd.priority())
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa3Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa3Pipeline.java
index 7377a20..13fe2b1 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa3Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa3Pipeline.java
@@ -65,7 +65,10 @@
import static org.onlab.packet.MacAddress.NONE;
import static org.onosproject.driver.extensions.Ofdpa3MplsType.VPWS;
-import static org.onosproject.net.flow.criteria.Criterion.Type.*;
+import static org.onosproject.net.flow.criteria.Criterion.Type.INNER_VLAN_VID;
+import static org.onosproject.net.flow.criteria.Criterion.Type.IN_PORT;
+import static org.onosproject.net.flow.criteria.Criterion.Type.TUNNEL_ID;
+import static org.onosproject.net.flow.criteria.Criterion.Type.VLAN_VID;
import static org.onosproject.net.flow.instructions.Instruction.Type.L2MODIFICATION;
import static org.onosproject.net.flow.instructions.L2ModificationInstruction.ModTunnelIdInstruction;
import static org.slf4j.LoggerFactory.getLogger;
@@ -100,6 +103,11 @@
}
@Override
+ protected boolean supportsUnicastBlackHole() {
+ return true;
+ }
+
+ @Override
protected void processFilter(FilteringObjective filteringObjective,
boolean install,
ApplicationId applicationId) {
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/OvsOfdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/OvsOfdpa2Pipeline.java
index 013b98e..3aa8865 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/OvsOfdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/OvsOfdpa2Pipeline.java
@@ -50,4 +50,9 @@
protected boolean supportPuntGroup() {
return true;
}
+
+ @Override
+ protected boolean supportsUnicastBlackHole() {
+ return true;
+ }
}