Implement some of the missing Selector and Match Conditions
Work toward ONOS-509
The following match conditions are added/implemented:
- IN_PHY_PORT
- IP_DSCP
- IP_ECN
- METADATA
Change-Id: I6f529ee90b2b9e0d5046f83c034e8be3faf86d8b
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 5c445a8..95e37d0 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
@@ -355,6 +355,15 @@
builder.matchInPort(PortNumber
.portNumber(match.get(MatchField.IN_PORT).getPortNumber()));
break;
+ case IN_PHY_PORT:
+ builder.matchInPhyPort(PortNumber
+ .portNumber(match.get(MatchField.IN_PHY_PORT).getPortNumber()));
+ break;
+ case METADATA:
+ long metadata =
+ match.get(MatchField.METADATA).getValue().getValue();
+ builder.matchMetadata(metadata);
+ break;
case ETH_DST:
mac = MacAddress.valueOf(match.get(MatchField.ETH_DST).getLong());
builder.matchEthDst(mac);
@@ -386,6 +395,14 @@
byte vlanPcp = match.get(MatchField.VLAN_PCP).getValue();
builder.matchVlanPcp(vlanPcp);
break;
+ case IP_DSCP:
+ byte ipDscp = match.get(MatchField.IP_DSCP).getDscpValue();
+ builder.matchIPDscp(ipDscp);
+ break;
+ case IP_ECN:
+ byte ipEcn = match.get(MatchField.IP_ECN).getEcnValue();
+ builder.matchIPEcn(ipEcn);
+ break;
case IP_PROTO:
short proto = match.get(MatchField.IP_PROTO).getIpProtocolNumber();
builder.matchIPProtocol((byte) proto);
@@ -514,10 +531,6 @@
case ARP_SPA:
case ARP_THA:
case ARP_TPA:
- case IN_PHY_PORT:
- case IP_DSCP:
- case IP_ECN:
- case METADATA:
case MPLS_TC:
case TUNNEL_ID:
default: