import java.util.List;\r
\r
import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
+import org.opendaylight.openflowjava.protocol.impl.util.OF10ActionsDeserializer;\r
import org.opendaylight.openflowjava.protocol.impl.util.OF10MatchDeserializer;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;\r
int type = rawMessage.readUnsignedShort();\r
builder.setType(MultipartType.forValue(type));\r
builder.setFlags(new MultipartRequestFlags((rawMessage.readUnsignedShort() & 0x01) != 0));\r
- while (rawMessage.readableBytes() > 0) {\r
- switch (type) {\r
- case 0: builder.setMultipartReplyBody(setDesc(rawMessage));\r
+ switch (type) {\r
+ case 0: builder.setMultipartReplyBody(setDesc(rawMessage));\r
break;\r
- case 1: builder.setMultipartReplyBody(setFlow(rawMessage));\r
+ case 1: builder.setMultipartReplyBody(setFlow(rawMessage));\r
break;\r
- case 2: builder.setMultipartReplyBody(setAggregate(rawMessage));\r
+ case 2: builder.setMultipartReplyBody(setAggregate(rawMessage));\r
break;\r
- case 3: builder.setMultipartReplyBody(setTable(rawMessage));\r
+ case 3: builder.setMultipartReplyBody(setTable(rawMessage));\r
break; \r
- case 4: builder.setMultipartReplyBody(setPortStats(rawMessage));\r
+ case 4: builder.setMultipartReplyBody(setPortStats(rawMessage));\r
break;\r
- case 5: builder.setMultipartReplyBody(setQueue(rawMessage));\r
+ case 5: builder.setMultipartReplyBody(setQueue(rawMessage));\r
break; \r
- case 0xFFFF: builder.setMultipartReplyBody(setExperimenter(rawMessage));\r
+ case 0xFFFF: builder.setMultipartReplyBody(setExperimenter(rawMessage));\r
+ break;\r
+ default: \r
break;\r
- default: \r
- break;\r
- }\r
}\r
return builder.build();\r
}\r
}\r
\r
private static MultipartReplyFlow setFlow(ByteBuf input) {\r
- final byte PADDING_IN_FLOW_STATS_HEADER_01 = 1;\r
+ final byte PADDING_IN_FLOW_STATS_HEADER = 1;\r
final byte PADDING_IN_FLOW_STATS_HEADER_02 = 6;\r
MultipartReplyFlowBuilder flowBuilder = new MultipartReplyFlowBuilder();\r
List<FlowStats> flowStatsList = new ArrayList<>();\r
FlowStatsBuilder flowStatsBuilder = new FlowStatsBuilder();\r
- int length = input.readUnsignedShort();\r
+ input.skipBytes(Short.SIZE / Byte.SIZE);\r
flowStatsBuilder.setTableId(input.readUnsignedByte());\r
- input.skipBytes(PADDING_IN_FLOW_STATS_HEADER_01);\r
+ input.skipBytes(PADDING_IN_FLOW_STATS_HEADER);\r
flowStatsBuilder.setMatchV10(OF10MatchDeserializer.createMatchV10(input));\r
flowStatsBuilder.setDurationSec(input.readUnsignedInt());\r
flowStatsBuilder.setDurationNsec(input.readUnsignedInt());\r
byte[] byteCount = new byte[Long.SIZE/Byte.SIZE];\r
input.readBytes(byteCount);\r
flowStatsBuilder.setByteCount(new BigInteger(byteCount));\r
- //TODO - actions\r
- //flowStatsBuilder.setActionsList(OF10ActionsDeserializer.)\r
+ flowStatsBuilder.setActionsList(OF10ActionsDeserializer.createActionsList(input));\r
flowStatsList.add(flowStatsBuilder.build());\r
flowBuilder.setFlowStats(new ArrayList<>(flowStatsList));\r
flowStatsList.clear();\r
byte[] matchedCount = new byte[Long.SIZE/Byte.SIZE];\r
input.readBytes(matchedCount);\r
tableStatsBuilder.setMatchedCount(new BigInteger(matchedCount));\r
- \r
tableStatsList.add(tableStatsBuilder.build());\r
builder.setTableStats(new ArrayList<>(tableStatsList));\r
tableStatsList.clear();\r
}\r
\r
private static MultipartReplyPortStats setPortStats(ByteBuf input) {\r
- final byte PADDING_IN_PORT_STATS_HEADER = 4;\r
+ final byte PADDING_IN_PORT_STATS_HEADER = 6;\r
MultipartReplyPortStatsBuilder builder = new MultipartReplyPortStatsBuilder();\r
PortStatsBuilder portStatsBuilder = new PortStatsBuilder();\r
List<PortStats> portStatsList = new ArrayList<>();\r
while (input.readableBytes() > 0) {\r
- portStatsBuilder.setPortNo(input.readUnsignedInt());\r
+ portStatsBuilder.setPortNo(new Long(input.readUnsignedShort()));\r
input.skipBytes(PADDING_IN_PORT_STATS_HEADER);\r
\r
byte[] rxPackets = new byte[Long.SIZE/Byte.SIZE];\r
input.readBytes(collisions);\r
portStatsBuilder.setCollisions(new BigInteger(collisions));\r
\r
- portStatsBuilder.setDurationSec(input.readUnsignedInt());\r
- portStatsBuilder.setDurationNsec(input.readUnsignedInt());\r
- portStatsList.add(portStatsBuilder.build());\r
}\r
builder.setPortStats(new ArrayList<>(portStatsList));\r
portStatsList.clear();\r
}\r
\r
private static MultipartReplyQueue setQueue(ByteBuf input) {\r
+ final byte PADDING_IN_QUEUE_HEADER = 2;\r
MultipartReplyQueueBuilder builder = new MultipartReplyQueueBuilder();\r
QueueStatsBuilder queueStatsBuilder = new QueueStatsBuilder();\r
List<QueueStats> queueStatsList = new ArrayList<>();\r
\r
while (input.readableBytes() > 0) {\r
- queueStatsBuilder.setPortNo(input.readUnsignedInt());\r
+ queueStatsBuilder.setPortNo(new Long(input.readUnsignedShort()));\r
+ input.skipBytes(PADDING_IN_QUEUE_HEADER);\r
queueStatsBuilder.setQueueId(input.readUnsignedInt());\r
\r
byte[] txBytes = new byte[Long.SIZE/Byte.SIZE];\r
input.readBytes(txErrors);\r
queueStatsBuilder.setTxErrors(new BigInteger(txErrors));\r
\r
- queueStatsBuilder.setDurationSec(input.readUnsignedInt());\r
- queueStatsBuilder.setDurationNsec(input.readUnsignedInt());\r
queueStatsList.add(queueStatsBuilder.build());\r
}\r
builder.setQueueStats(new ArrayList<>(queueStatsList));\r
private static MultipartReplyExperimenter setExperimenter(ByteBuf input) {\r
MultipartReplyExperimenterBuilder builder = new MultipartReplyExperimenterBuilder();\r
builder.setExperimenter(input.readUnsignedInt());\r
- builder.setExpType(input.readUnsignedInt());\r
byte[] data = new byte[Long.SIZE/Byte.SIZE];\r
input.readBytes(data);\r
builder.setData(data);\r