[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: