[ONOS-3464] Add arp_spa operation to provider of openflow

Change-Id: Iffb0d12bd53b292ef370fd12c0e9d693a215f5cb
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 9b34e16..89ce341 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
@@ -712,6 +712,10 @@
                 mac = MacAddress.valueOf(match.get(MatchField.ARP_SHA).getLong());
                 builder.matchArpSha(mac);
                 break;
+            case ARP_SPA:
+                ip = Ip4Address.valueOf(match.get(MatchField.ARP_SPA).getInt());
+                builder.matchArpSpa(ip);
+                break;
             case ARP_THA:
                 mac = MacAddress.valueOf(match.get(MatchField.ARP_THA).getLong());
                 builder.matchArpTha(mac);
@@ -721,7 +725,6 @@
                 builder.matchArpTpa(ip);
                 break;
             case ARP_OP:
-            case ARP_SPA:
             case MPLS_TC:
             default:
                 log.warn("Match type {} not yet implemented.", field.id);
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 d031b05..0dd6b89 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
@@ -424,6 +424,11 @@
                 mBuilder.setExact(MatchField.ARP_SHA,
                                   MacAddress.of(arpHaCriterion.mac().toLong()));
                 break;
+            case ARP_SPA:
+                arpPaCriterion = (ArpPaCriterion) c;
+                mBuilder.setExact(MatchField.ARP_SPA,
+                                  IPv4Address.of(arpPaCriterion.ip().toInt()));
+                break;
             case ARP_THA:
                 arpHaCriterion = (ArpHaCriterion) c;
                 mBuilder.setExact(MatchField.ARP_THA,
@@ -435,7 +440,6 @@
                                   IPv4Address.of(arpPaCriterion.ip().toInt()));
                 break;
             case ARP_OP:
-            case ARP_SPA:
             case MPLS_TC:
             case PBB_ISID:
             default: