Implement some of the missing Selector and Match Conditions
Work toward ONOS-509
The following match conditions are added/implemented:
- UDP_SRC, UDP_DST
- SCTP_SRC, SCTP_DST
- ICMPV4_TYPE, ICMPV4_CODE
- IPV6_FLABEL
- IPV6_ND_TARGET
- IPV6_ND_SLL
- IPV6_ND_TLL
Also:
* Renamed method
TrafficSelector.Builder.matchInport(PortNumber port)
to
TrafficSelector.Builder.matchInPort(PortNumber port)
(for consistency with the corresponding method(s) elsewhere)
* Reordered the code for some of the existing matching conditions
to follow the order in the OpenFlow spec, so it is easier to
cross-reference such code.
* Added missing Javadoc
* Added few more Criterion.Type values as per OpenFlow spec 1.5.0
Change-Id: I7fc1656f32d8a7280c67d7827e4aa84528b0eafc
diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
index e5f552d..21b1832 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
@@ -24,6 +24,7 @@
import org.onosproject.net.flow.criteria.Criteria;
import org.onosproject.net.flow.criteria.Criterion;
import org.onlab.packet.IpPrefix;
+import org.onlab.packet.Ip6Address;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
@@ -129,22 +130,22 @@
}
@Override
- public Builder matchInport(PortNumber port) {
+ public Builder matchInPort(PortNumber port) {
return add(Criteria.matchInPort(port));
}
@Override
- public Builder matchEthSrc(MacAddress addr) {
- return add(Criteria.matchEthSrc(addr));
- }
-
- @Override
public Builder matchEthDst(MacAddress addr) {
return add(Criteria.matchEthDst(addr));
}
@Override
- public Builder matchEthType(short ethType) {
+ public Builder matchEthSrc(MacAddress addr) {
+ return add(Criteria.matchEthSrc(addr));
+ }
+
+ @Override
+ public Builder matchEthType(Short ethType) {
return add(Criteria.matchEthType(ethType));
}
@@ -184,6 +185,36 @@
}
@Override
+ public Builder matchUdpSrc(Short udpPort) {
+ return add(Criteria.matchUdpSrc(udpPort));
+ }
+
+ @Override
+ public Builder matchUdpDst(Short udpPort) {
+ return add(Criteria.matchUdpDst(udpPort));
+ }
+
+ @Override
+ public Builder matchSctpSrc(Short sctpPort) {
+ return add(Criteria.matchSctpSrc(sctpPort));
+ }
+
+ @Override
+ public Builder matchSctpDst(Short sctpPort) {
+ return add(Criteria.matchSctpDst(sctpPort));
+ }
+
+ @Override
+ public Builder matchIcmpType(Byte icmpType) {
+ return add(Criteria.matchIcmpType(icmpType));
+ }
+
+ @Override
+ public Builder matchIcmpCode(Byte icmpCode) {
+ return add(Criteria.matchIcmpCode(icmpCode));
+ }
+
+ @Override
public Builder matchIPv6Src(IpPrefix ip) {
return add(Criteria.matchIPv6Src(ip));
}
@@ -194,6 +225,11 @@
}
@Override
+ public Builder matchIPv6FlowLabel(Integer flowLabel) {
+ return add(Criteria.matchIPv6FlowLabel(flowLabel));
+ }
+
+ @Override
public Builder matchIcmpv6Type(Byte icmpv6Type) {
return add(Criteria.matchIcmpv6Type(icmpv6Type));
}
@@ -204,6 +240,21 @@
}
@Override
+ public Builder matchIPv6NDTargetAddress(Ip6Address targetAddress) {
+ return add(Criteria.matchIPv6NDTargetAddress(targetAddress));
+ }
+
+ @Override
+ public Builder matchIPv6NDSourceLinkLayerAddress(MacAddress mac) {
+ return add(Criteria.matchIPv6NDSourceLinkLayerAddress(mac));
+ }
+
+ @Override
+ public Builder matchIPv6NDTargetLinkLayerAddress(MacAddress mac) {
+ return add(Criteria.matchIPv6NDTargetLinkLayerAddress(mac));
+ }
+
+ @Override
public Builder matchMplsLabel(Integer mplsLabel) {
return add(Criteria.matchMplsLabel(mplsLabel));
}