Omit zero-prefix IP match in Softrouter driver
Change-Id: I613c6a2aedc7274c9006be26d81e3ea9ab98b6a7
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java
index 6aa7f91..be1c00d 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/SoftRouterPipeline.java
@@ -17,6 +17,7 @@
import org.onlab.osgi.ServiceDirectory;
import org.onlab.packet.Ethernet;
+import org.onlab.packet.IpPrefix;
import org.onlab.packet.VlanId;
import org.onlab.util.KryoNamespace;
import org.onosproject.core.ApplicationId;
@@ -52,13 +53,13 @@
import org.onosproject.net.flowobjective.ObjectiveError;
import org.onosproject.store.serializers.KryoNamespaces;
import org.slf4j.Logger;
-import static org.onlab.util.Tools.delay;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Objects;
+import static org.onlab.util.Tools.delay;
import static org.slf4j.LoggerFactory.getLogger;
/**
@@ -394,12 +395,15 @@
return Collections.emptySet();
}
- TrafficSelector filteredSelector =
- DefaultTrafficSelector.builder()
- .matchEthType(Ethernet.TYPE_IPV4)
- .matchIPDst(((IPCriterion)
- selector.getCriterion(Criterion.Type.IPV4_DST)).ip())
- .build();
+ IpPrefix ipPrefix = ((IPCriterion)
+ selector.getCriterion(Criterion.Type.IPV4_DST)).ip();
+
+ TrafficSelector.Builder filteredSelector = DefaultTrafficSelector.builder()
+ .matchEthType(Ethernet.TYPE_IPV4);
+
+ if (ipPrefix.prefixLength() != 0) {
+ filteredSelector.matchIPDst(ipPrefix);
+ }
TrafficTreatment tt = null;
if (fwd.nextId() != null) {
@@ -419,7 +423,7 @@
.fromApp(fwd.appId())
.withPriority(fwd.priority())
.forDevice(deviceId)
- .withSelector(filteredSelector);
+ .withSelector(filteredSelector.build());
if (tt != null) {
ruleBuilder.withTreatment(tt);