Adding eth masking in match
Change-Id: I95e0ee66b1c6c139de7672f9bc04871fd0ead6d7
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 1fa4717..8ead323 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
@@ -615,12 +615,26 @@
builder.matchMetadata(metadata);
break;
case ETH_DST:
- mac = MacAddress.valueOf(match.get(MatchField.ETH_DST).getLong());
- builder.matchEthDst(mac);
+ if (match.isPartiallyMasked(MatchField.ETH_DST)) {
+ Masked<org.projectfloodlight.openflow.types.MacAddress> maskedMac =
+ match.getMasked(MatchField.ETH_DST);
+ builder.matchEthDstMasked(MacAddress.valueOf(maskedMac.getValue().getLong()),
+ MacAddress.valueOf(maskedMac.getMask().getLong()));
+ } else {
+ mac = MacAddress.valueOf(match.get(MatchField.ETH_DST).getLong());
+ builder.matchEthDst(mac);
+ }
break;
case ETH_SRC:
- mac = MacAddress.valueOf(match.get(MatchField.ETH_SRC).getLong());
- builder.matchEthSrc(mac);
+ if (match.isPartiallyMasked(MatchField.ETH_SRC)) {
+ Masked<org.projectfloodlight.openflow.types.MacAddress> maskedMac =
+ match.getMasked(MatchField.ETH_SRC);
+ builder.matchEthSrcMasked(MacAddress.valueOf(maskedMac.getValue().getLong()),
+ MacAddress.valueOf(maskedMac.getMask().getLong()));
+ } else {
+ mac = MacAddress.valueOf(match.get(MatchField.ETH_SRC).getLong());
+ builder.matchEthSrc(mac);
+ }
break;
case ETH_TYPE:
int ethType = match.get(MatchField.ETH_TYPE).getValue();