Fix cast error when building flow entries containging optical properties
Change-Id: I6e963143a22fcd57e2f1388941f7cb4fc51e52f6
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 61f669c..82a2bfa 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
@@ -26,6 +26,7 @@
import org.onlab.packet.VlanId;
import org.onosproject.core.DefaultGroupId;
import org.onosproject.net.DeviceId;
+import org.onosproject.net.Lambda;
import org.onosproject.net.PortNumber;
import org.onosproject.net.flow.DefaultFlowEntry;
import org.onosproject.net.flow.DefaultFlowRule;
@@ -63,17 +64,24 @@
import org.projectfloodlight.openflow.protocol.oxm.OFOxm;
import org.projectfloodlight.openflow.protocol.oxm.OFOxmOchSigidBasic;
import org.projectfloodlight.openflow.protocol.ver13.OFFactoryVer13;
+import org.projectfloodlight.openflow.types.CircuitSignalID;
import org.projectfloodlight.openflow.types.EthType;
import org.projectfloodlight.openflow.types.IPv4Address;
import org.projectfloodlight.openflow.types.IPv6Address;
import org.projectfloodlight.openflow.types.Masked;
import org.projectfloodlight.openflow.types.OFVlanVidMatch;
import org.projectfloodlight.openflow.types.U32;
+import org.projectfloodlight.openflow.types.U8;
import org.projectfloodlight.openflow.types.VlanPcp;
import org.slf4j.Logger;
import java.util.List;
+import static org.onosproject.net.flow.criteria.Criteria.matchLambda;
+import static org.onosproject.net.flow.criteria.Criteria.matchOchSignalType;
+import static org.onosproject.provider.of.flow.impl.FlowModBuilderHelper.convertChannelSpacing;
+import static org.onosproject.provider.of.flow.impl.FlowModBuilderHelper.convertGridType;
+import static org.onosproject.provider.of.flow.impl.FlowModBuilderHelper.convertOchSignalType;
import static org.slf4j.LoggerFactory.getLogger;
public class FlowEntryBuilder {
@@ -633,11 +641,15 @@
.getValue());
break;
case OCH_SIGID:
- builder.matchLambda(match.get(MatchField.OCH_SIGID).getChannelNumber());
+ CircuitSignalID sigId = match.get(MatchField.OCH_SIGID);
+ builder.add(matchLambda(Lambda.ochSignal(
+ convertGridType(sigId.getGridType()), convertChannelSpacing(sigId.getChannelSpacing()),
+ sigId.getChannelNumber(), sigId.getChannelSpacing())
+ ));
break;
case OCH_SIGTYPE:
- builder.matchOpticalSignalType(match.get(MatchField
- .OCH_SIGTYPE).getValue());
+ U8 sigType = match.get(MatchField.OCH_SIGTYPE);
+ builder.add(matchOchSignalType(convertOchSignalType((byte) sigType.getValue())));
break;
case ARP_OP:
case ARP_SHA: