BitOhenry
Committed by Gerrit Code Review

[ONOS-3441] Add arp_tpa operation to provider of openflow

Change-Id: I94949f4b536bbaa3f5999f8584674bbe44cb2c6b
...@@ -513,6 +513,7 @@ public class FlowEntryBuilder { ...@@ -513,6 +513,7 @@ public class FlowEntryBuilder {
513 Ip4Prefix ip4Prefix; 513 Ip4Prefix ip4Prefix;
514 Ip6Address ip6Address; 514 Ip6Address ip6Address;
515 Ip6Prefix ip6Prefix; 515 Ip6Prefix ip6Prefix;
516 + Ip4Address ip;
516 517
517 TrafficSelector.Builder builder = DefaultTrafficSelector.builder(); 518 TrafficSelector.Builder builder = DefaultTrafficSelector.builder();
518 for (MatchField<?> field : match.getMatchFields()) { 519 for (MatchField<?> field : match.getMatchFields()) {
...@@ -715,9 +716,12 @@ public class FlowEntryBuilder { ...@@ -715,9 +716,12 @@ public class FlowEntryBuilder {
715 mac = MacAddress.valueOf(match.get(MatchField.ARP_THA).getLong()); 716 mac = MacAddress.valueOf(match.get(MatchField.ARP_THA).getLong());
716 builder.matchArpTha(mac); 717 builder.matchArpTha(mac);
717 break; 718 break;
719 + case ARP_TPA:
720 + ip = Ip4Address.valueOf(match.get(MatchField.ARP_TPA).getInt());
721 + builder.matchArpTpa(ip);
722 + break;
718 case ARP_OP: 723 case ARP_OP:
719 case ARP_SPA: 724 case ARP_SPA:
720 - case ARP_TPA:
721 case MPLS_TC: 725 case MPLS_TC:
722 default: 726 default:
723 log.warn("Match type {} not yet implemented.", field.id); 727 log.warn("Match type {} not yet implemented.", field.id);
......
...@@ -25,6 +25,7 @@ import org.onosproject.net.driver.DriverService; ...@@ -25,6 +25,7 @@ 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.ArpHaCriterion;
28 +import org.onosproject.net.flow.criteria.ArpPaCriterion;
28 import org.onosproject.net.flow.criteria.Criterion; 29 import org.onosproject.net.flow.criteria.Criterion;
29 import org.onosproject.net.flow.criteria.EthCriterion; 30 import org.onosproject.net.flow.criteria.EthCriterion;
30 import org.onosproject.net.flow.criteria.EthTypeCriterion; 31 import org.onosproject.net.flow.criteria.EthTypeCriterion;
...@@ -180,6 +181,7 @@ public abstract class FlowModBuilder { ...@@ -180,6 +181,7 @@ public abstract class FlowModBuilder {
180 SctpPortCriterion sctpPortCriterion; 181 SctpPortCriterion sctpPortCriterion;
181 IPv6NDLinkLayerAddressCriterion llAddressCriterion; 182 IPv6NDLinkLayerAddressCriterion llAddressCriterion;
182 ArpHaCriterion arpHaCriterion; 183 ArpHaCriterion arpHaCriterion;
184 + ArpPaCriterion arpPaCriterion;
183 185
184 for (Criterion c : selector.criteria()) { 186 for (Criterion c : selector.criteria()) {
185 switch (c.type()) { 187 switch (c.type()) {
...@@ -427,9 +429,13 @@ public abstract class FlowModBuilder { ...@@ -427,9 +429,13 @@ public abstract class FlowModBuilder {
427 mBuilder.setExact(MatchField.ARP_THA, 429 mBuilder.setExact(MatchField.ARP_THA,
428 MacAddress.of(arpHaCriterion.mac().toLong())); 430 MacAddress.of(arpHaCriterion.mac().toLong()));
429 break; 431 break;
432 + case ARP_TPA:
433 + arpPaCriterion = (ArpPaCriterion) c;
434 + mBuilder.setExact(MatchField.ARP_TPA,
435 + IPv4Address.of(arpPaCriterion.ip().toInt()));
436 + break;
430 case ARP_OP: 437 case ARP_OP:
431 case ARP_SPA: 438 case ARP_SPA:
432 - case ARP_TPA:
433 case MPLS_TC: 439 case MPLS_TC:
434 case PBB_ISID: 440 case PBB_ISID:
435 default: 441 default:
......