[ONOS-3373] Add arp_tha operation to provider of openflow
Change-Id: I04449a15d8e34fea4faba3729b9b6998ec9b0a5c
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 c591f47..f4ab017 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,10 +707,13 @@
long tunnelId = match.get(MatchField.TUNNEL_ID).getValue();
builder.matchTunnelId(tunnelId);
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_THA:
case ARP_TPA:
case MPLS_TC:
default:
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 010d7e7..2e5be65 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
@@ -24,6 +24,7 @@
import org.onosproject.net.driver.DriverService;
import org.onosproject.net.flow.FlowRule;
import org.onosproject.net.flow.TrafficSelector;
+import org.onosproject.net.flow.criteria.ArpHaCriterion;
import org.onosproject.net.flow.criteria.Criterion;
import org.onosproject.net.flow.criteria.EthCriterion;
import org.onosproject.net.flow.criteria.EthTypeCriterion;
@@ -178,6 +179,7 @@
UdpPortCriterion udpPortCriterion;
SctpPortCriterion sctpPortCriterion;
IPv6NDLinkLayerAddressCriterion llAddressCriterion;
+ ArpHaCriterion arpHaCriterion;
for (Criterion c : selector.criteria()) {
switch (c.type()) {
@@ -415,10 +417,14 @@
mplsBos.mplsBos() ? OFBooleanValue.TRUE
: OFBooleanValue.FALSE);
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_THA:
case ARP_TPA:
case MPLS_TC:
case PBB_ISID: