[ONOS-3414] Add arp_sha operation to provider of openflow

Change-Id: I3c318ca1e52b6b6291026fc8fd54782cb521ee2b
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
index f4ab017..1354240 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
@@ -707,12 +707,15 @@
                 long tunnelId = match.get(MatchField.TUNNEL_ID).getValue();
                 builder.matchTunnelId(tunnelId);
                 break;
+            case ARP_SHA:
+                mac = MacAddress.valueOf(match.get(MatchField.ARP_SHA).getLong());
+                builder.matchArpSha(mac);
+                break;
             case ARP_THA:
                 mac = MacAddress.valueOf(match.get(MatchField.ARP_THA).getLong());
                 builder.matchArpTha(mac);
                 break;
             case ARP_OP:
-            case ARP_SHA:
             case ARP_SPA:
             case ARP_TPA:
             case MPLS_TC:
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java
index 2e5be65..c5de72a 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilder.java
@@ -417,13 +417,17 @@
                                   mplsBos.mplsBos() ? OFBooleanValue.TRUE
                                                     : OFBooleanValue.FALSE);
                 break;
+            case ARP_SHA:
+                arpHaCriterion = (ArpHaCriterion) c;
+                mBuilder.setExact(MatchField.ARP_SHA,
+                                  MacAddress.of(arpHaCriterion.mac().toLong()));
+                break;
             case ARP_THA:
                 arpHaCriterion = (ArpHaCriterion) c;
                 mBuilder.setExact(MatchField.ARP_THA,
                                   MacAddress.of(arpHaCriterion.mac().toLong()));
                 break;
             case ARP_OP:
-            case ARP_SHA:
             case ARP_SPA:
             case ARP_TPA:
             case MPLS_TC: