Support IPv4 multicast in P4 fabric pipeline

- Multicast can use the same table as unicast. Merge into one.
- Allow masked destination MAC in classifier table

Note:
- Pipeliner now translates all exact MAC match to masked match with FF:FF:FF:FF:FF:FF mask.
- Interpreter now only uses masked src/dst MAC

Change-Id: Ibd27ebfb2d72ba929031f07a29927eb6f1844f11
(cherry picked from commit 0865779b66a59a623856b1353615e462af5575c5)
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/ForwardingFunctionType.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/ForwardingFunctionType.java
index 0349cc7..65e3a25 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/ForwardingFunctionType.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/ForwardingFunctionType.java
@@ -49,22 +49,12 @@
     /**
      * IPv4 unicast, with EtherType and IPv4 unicast destination address.
      */
-    IPV4_UNICAST,
-
-    /**
-     * IPv4 multicast, with EtherType and IPv4 multicast destination address.
-     */
-    IPV4_MULTICAST,
+    IPV4_ROUTING,
 
     /**
      * IPv6 unicast, with EtherType and IPv6 unicast destination address.
      */
-    IPV6_UNICAST,
-
-    /**
-     * IPv6 multicast, with EtherType and IPv6 multicast destination address.
-     */
-    IPV6_MULTICAST,
+    IPV6_ROUTING,
 
     /**
      * MPLS, with EtherType, MPLS label and MPLS BOS(true) criterion.
@@ -101,10 +91,10 @@
             ImmutableMap.<Set<Criterion.Type>, ForwardingFunctionType>builder()
                     .put(L2_UNI_CRITERIA_TYPE, L2_UNICAST)
                     .put(L2_BRC_CRITERIA_TYPE, L2_BROADCAST)
-                    .put(IPV4_UNI_CRITERIA_TYPE, IPV4_UNICAST)
-                    .put(IPV4_MCAST_CRITERIA_TYPE, IPV4_MULTICAST)
-                    .put(IPV6_UNI_CRITERIA_TYPE, IPV6_UNICAST)
-                    .put(IPV6_MCAST_CRITERIA_TYPE, IPV6_MULTICAST)
+                    .put(IPV4_UNI_CRITERIA_TYPE, IPV4_ROUTING)
+                    .put(IPV4_MCAST_CRITERIA_TYPE, IPV4_ROUTING)
+                    .put(IPV6_UNI_CRITERIA_TYPE, IPV6_ROUTING)
+                    .put(IPV6_MCAST_CRITERIA_TYPE, IPV6_ROUTING)
                     .put(MPLS_UNI_CRITERIA_TYPE, MPLS)
                     .build();