In this commit: CORD-799
   Bug fix for host-update to not remove and add the same IP addr
   NPE fix in ofdpa3pipeline
   Removing unused code in ofdpa2pipeline
   Ability to add or revoke port filters for port-updates
   Retry filters retry for a longer time
   Bug fix for suppress ports to not suppress filters
   Filters now sent only by master instance
   Removing the MPLS BOS=0 rules for now until inconsitent hardware behavior is fixed

Change-Id: I8b4ee4af6de263531e0696af86e65f1c502f5f85
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
index 23249f7..fd677c6 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
@@ -387,8 +387,8 @@
             for (FlowRule tmacRule : processEthDstFilter(portCriterion, ethCriterion,
                                                          vidCriterion, assignedVlan,
                                                          applicationId)) {
-                log.debug("adding MAC filtering rules in TMAC table: {} for dev: {}",
-                          tmacRule, deviceId);
+                log.debug("{} MAC filtering rules in TMAC table: {} for dev: {}",
+                          (install) ? "adding" : "removing", tmacRule, deviceId);
                 ops = install ? ops.add(tmacRule) : ops.remove(tmacRule);
             }
         }
@@ -420,50 +420,25 @@
             });
 
             for (FlowRule filteringRule : filteringRules) {
-                log.debug("adding VLAN filtering rule in VLAN table: {} for dev: {}",
-                        filteringRule, deviceId);
+                log.debug("{} VLAN filtering rule in VLAN table: {} for dev: {}",
+                          (install) ? "adding" : "removing", filteringRule, deviceId);
                 ops = install ? ops.add(filteringRule) : ops.remove(filteringRule);
             }
 
             ops.newStage();
 
             for (FlowRule assignmentRule : assignmentRules) {
-                log.debug("adding VLAN assignment rule in VLAN table: {} for dev: {}",
-                        assignmentRule, deviceId);
+                log.debug("{} VLAN assignment rule in VLAN table: {} for dev: {}",
+                        (install) ? "adding" : "removing", assignmentRule, deviceId);
                 ops = install ? ops.add(assignmentRule) : ops.remove(assignmentRule);
             }
         }
 
-        for (IPCriterion ipaddr : ips) {
-            // since we ignore port information for IP rules, and the same (gateway) IP
-            // can be configured on multiple ports, we make sure that we send
-            // only a single rule to the switch.
-            if (!sentIpFilters.contains(ipaddr)) {
-                sentIpFilters.add(ipaddr);
-                log.debug("adding IP filtering rules in ACL table {} for dev: {}",
-                          ipaddr, deviceId);
-                TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
-                TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
-                selector.matchEthType(Ethernet.TYPE_IPV4);
-                selector.matchIPDst(ipaddr.ip());
-                treatment.setOutput(PortNumber.CONTROLLER);
-                FlowRule rule = DefaultFlowRule.builder()
-                        .forDevice(deviceId)
-                        .withSelector(selector.build())
-                        .withTreatment(treatment.build())
-                        .withPriority(HIGHEST_PRIORITY)
-                        .fromApp(applicationId)
-                        .makePermanent()
-                        .forTable(ACL_TABLE).build();
-                ops = install ? ops.add(rule) : ops.remove(rule);
-            }
-        }
-
         // apply filtering flow rules
         flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
             @Override
             public void onSuccess(FlowRuleOperations ops) {
-                log.info("Applied {} filtering rules in device {}",
+                log.debug("Applied {} filtering rules in device {}",
                          ops.stages().get(0).size(), deviceId);
                 pass(filt);
             }
@@ -776,7 +751,7 @@
      *             the flow rule
      */
     protected Collection<FlowRule> processVersatile(ForwardingObjective fwd) {
-        log.info("Processing versatile forwarding objective:{} in dev:{}",
+        log.debug("Processing versatile forwarding objective:{} in dev:{}",
                  fwd.id(), deviceId);
 
         EthTypeCriterion ethType =