BitOhenry
Committed by Gerrit Code Review

[ONOS-3373] Add arp_tha operation to provider of openflow

Change-Id: I04449a15d8e34fea4faba3729b9b6998ec9b0a5c
...@@ -707,10 +707,13 @@ public class FlowEntryBuilder { ...@@ -707,10 +707,13 @@ public class FlowEntryBuilder {
707 long tunnelId = match.get(MatchField.TUNNEL_ID).getValue(); 707 long tunnelId = match.get(MatchField.TUNNEL_ID).getValue();
708 builder.matchTunnelId(tunnelId); 708 builder.matchTunnelId(tunnelId);
709 break; 709 break;
710 + case ARP_THA:
711 + mac = MacAddress.valueOf(match.get(MatchField.ARP_THA).getLong());
712 + builder.matchArpTha(mac);
713 + break;
710 case ARP_OP: 714 case ARP_OP:
711 case ARP_SHA: 715 case ARP_SHA:
712 case ARP_SPA: 716 case ARP_SPA:
713 - case ARP_THA:
714 case ARP_TPA: 717 case ARP_TPA:
715 case MPLS_TC: 718 case MPLS_TC:
716 default: 719 default:
......
...@@ -24,6 +24,7 @@ import org.onosproject.net.OchSignal; ...@@ -24,6 +24,7 @@ import org.onosproject.net.OchSignal;
24 import org.onosproject.net.driver.DriverService; 24 import org.onosproject.net.driver.DriverService;
25 import org.onosproject.net.flow.FlowRule; 25 import org.onosproject.net.flow.FlowRule;
26 import org.onosproject.net.flow.TrafficSelector; 26 import org.onosproject.net.flow.TrafficSelector;
27 +import org.onosproject.net.flow.criteria.ArpHaCriterion;
27 import org.onosproject.net.flow.criteria.Criterion; 28 import org.onosproject.net.flow.criteria.Criterion;
28 import org.onosproject.net.flow.criteria.EthCriterion; 29 import org.onosproject.net.flow.criteria.EthCriterion;
29 import org.onosproject.net.flow.criteria.EthTypeCriterion; 30 import org.onosproject.net.flow.criteria.EthTypeCriterion;
...@@ -178,6 +179,7 @@ public abstract class FlowModBuilder { ...@@ -178,6 +179,7 @@ public abstract class FlowModBuilder {
178 UdpPortCriterion udpPortCriterion; 179 UdpPortCriterion udpPortCriterion;
179 SctpPortCriterion sctpPortCriterion; 180 SctpPortCriterion sctpPortCriterion;
180 IPv6NDLinkLayerAddressCriterion llAddressCriterion; 181 IPv6NDLinkLayerAddressCriterion llAddressCriterion;
182 + ArpHaCriterion arpHaCriterion;
181 183
182 for (Criterion c : selector.criteria()) { 184 for (Criterion c : selector.criteria()) {
183 switch (c.type()) { 185 switch (c.type()) {
...@@ -415,10 +417,14 @@ public abstract class FlowModBuilder { ...@@ -415,10 +417,14 @@ public abstract class FlowModBuilder {
415 mplsBos.mplsBos() ? OFBooleanValue.TRUE 417 mplsBos.mplsBos() ? OFBooleanValue.TRUE
416 : OFBooleanValue.FALSE); 418 : OFBooleanValue.FALSE);
417 break; 419 break;
420 + case ARP_THA:
421 + arpHaCriterion = (ArpHaCriterion) c;
422 + mBuilder.setExact(MatchField.ARP_THA,
423 + MacAddress.of(arpHaCriterion.mac().toLong()));
424 + break;
418 case ARP_OP: 425 case ARP_OP:
419 case ARP_SHA: 426 case ARP_SHA:
420 case ARP_SPA: 427 case ARP_SPA:
421 - case ARP_THA:
422 case ARP_TPA: 428 case ARP_TPA:
423 case MPLS_TC: 429 case MPLS_TC:
424 case PBB_ISID: 430 case PBB_ISID:
......