Segment Routing refactor with flow objectives

Change-Id: I0b87f89bb8b18522b9d38bdf5e96f55485b6f1e3
diff --git a/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java b/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
index 7308898..9a091f4 100644
--- a/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
+++ b/drivers/src/main/java/org/onosproject/driver/pipeline/DefaultSingleTablePipeline.java
@@ -16,6 +16,7 @@
 package org.onosproject.driver.pipeline;
 
 import com.google.common.util.concurrent.SettableFuture;
+
 import org.onlab.osgi.ServiceDirectory;
 import org.onosproject.core.DefaultGroupId;
 import org.onosproject.net.DeviceId;
@@ -23,11 +24,14 @@
 import org.onosproject.net.behaviour.PipelinerContext;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
 import org.onosproject.net.flow.DefaultFlowRule;
+import org.onosproject.net.flow.DefaultTrafficTreatment;
 import org.onosproject.net.flow.FlowRule;
 import org.onosproject.net.flow.FlowRuleOperations;
 import org.onosproject.net.flow.FlowRuleOperationsContext;
 import org.onosproject.net.flow.FlowRuleService;
 import org.onosproject.net.flow.TrafficSelector;
+import org.onosproject.net.flow.TrafficTreatment;
+import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.net.flowobjective.FilteringObjective;
 import org.onosproject.net.flowobjective.ForwardingObjective;
 import org.onosproject.net.flowobjective.NextObjective;
@@ -70,9 +74,18 @@
         }
 
         TrafficSelector selector = fwd.selector();
+        TrafficTreatment treatment = fwd.treatment();
+        if ((fwd.treatment().deferred().size() == 0) &&
+                (fwd.treatment().immediate().size() == 0) &&
+                (fwd.treatment().tableTransition() == null) &&
+                (!fwd.treatment().clearedDeferred())) {
+            TrafficTreatment.Builder flowTreatment = DefaultTrafficTreatment.builder();
+            flowTreatment.add(Instructions.createDrop());
+            treatment = flowTreatment.build();
+        }
 
         FlowRule rule = new DefaultFlowRule(deviceId, selector,
-                                            fwd.treatment(),
+                                            treatment,
                                             fwd.priority(), fwd.appId(),
                                             new DefaultGroupId(fwd.id()),
                                             fwd.timeout(), fwd.permanent());