Process broadcast mac address in ofdpa pipeline

ofdpa pipeline should ignore broadcast address before it add entry
to bridging table.

Change-Id: Ic92ce0c2bdc38944a9c189e30ccca6544fcec2a9
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 e6249fd..a12b76f 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
@@ -20,7 +20,6 @@
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.core.ApplicationId;
@@ -91,6 +90,8 @@
 import java.util.concurrent.TimeUnit;
 
 import static java.util.concurrent.Executors.newScheduledThreadPool;
+import static org.onlab.packet.MacAddress.BROADCAST;
+import static org.onlab.packet.MacAddress.NONE;
 import static org.onlab.util.Tools.groupedThreads;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -362,7 +363,7 @@
             }
         }
 
-        if (ethCriterion == null || ethCriterion.mac().equals(MacAddress.NONE)) {
+        if (ethCriterion == null || ethCriterion.mac().equals(NONE)) {
             // NOTE: it is possible that a filtering objective only has vidCriterion
             log.debug("filtering objective missing dstMac, cannot program TMAC table");
         } else {
@@ -1170,12 +1171,14 @@
 
         TrafficSelector.Builder filteredSelectorBuilder =
                 DefaultTrafficSelector.builder();
-        // Do not match MacAddress for subnet broadcast entry
-        if (!ethCriterion.mac().equals(MacAddress.NONE)) {
+
+        if (!ethCriterion.mac().equals(NONE) &&
+                !ethCriterion.mac().equals(BROADCAST)) {
             filteredSelectorBuilder.matchEthDst(ethCriterion.mac());
             log.debug("processing L2 forwarding objective:{} -> next:{} in dev:{}",
                       fwd.id(), fwd.nextId(), deviceId);
         } else {
+            // Use wildcard DST_MAC if the MacAddress is None or Broadcast
             log.debug("processing L2 Broadcast forwarding objective:{} -> next:{} "
                     + "in dev:{} for vlan:{}",
                       fwd.id(), fwd.nextId(), deviceId, vlanIdCriterion.vlanId());