\r
import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
import org.opendaylight.openflowjava.protocol.impl.util.ActionsDeserializer;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
import org.opendaylight.openflowjava.protocol.impl.util.InstructionsDeserializer;\r
import org.opendaylight.openflowjava.protocol.impl.util.MatchDeserializer;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupTypes;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandTypeBitmap;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;\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
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableConfig;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableFeaturesPropType;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessageBuilder;\r
byte[] metadataWrite = new byte[Long.SIZE / Byte.SIZE];\r
input.readBytes(metadataWrite);\r
featuresBuilder.setMetadataWrite(metadataWrite);\r
- featuresBuilder.setConfig(createPortConfig(input.readUnsignedInt()));\r
+ featuresBuilder.setConfig(createTableConfig(input.readUnsignedInt()));\r
featuresBuilder.setMaxEntries(input.readUnsignedInt());\r
featuresBuilder.setTableFeatureProperties(createTableFeaturesProperties(input, \r
length - MULTIPART_REPLY_TABLE_FEATURES_STRUCTURE_LENGTH));\r
return builder.build();\r
}\r
\r
+ private static TableConfig createTableConfig(long input) {\r
+ boolean deprecated = (input & 3) != 0;\r
+ return new TableConfig(deprecated);\r
+ }\r
+ \r
private static List<TableFeatureProperties> createTableFeaturesProperties(ByteBuf input, int length) {\r
final byte COMMON_PROPERTY_LENGTH = 4;\r
List<TableFeatureProperties> properties = new ArrayList<>();\r
final byte PADDING_IN_METER_FEATURES_HEADER = 2;\r
MultipartReplyMeterFeaturesBuilder builder = new MultipartReplyMeterFeaturesBuilder();\r
builder.setMaxMeter(input.readUnsignedInt());\r
- builder.setBandTypes(MeterBandType.forValue(input.readInt()));\r
- builder.setCapabilities(decodeMeterModFlags(input.readUnsignedInt()));\r
+ builder.setBandTypes(createMeterBandsBitmap(input.readUnsignedInt()));\r
+ builder.setCapabilities(createMeterFlags(input.readUnsignedInt()));\r
builder.setMaxBands(input.readUnsignedByte());\r
builder.setMaxColor(input.readUnsignedByte());\r
input.skipBytes(PADDING_IN_METER_FEATURES_HEADER);\r
return builder.build();\r
}\r
\r
- private static MeterFlags decodeMeterModFlags(long input){\r
+ private static MeterFlags createMeterFlags(long input){\r
final Boolean _oFPMFKBPS = (input & (1 << 0)) != 0;\r
final Boolean _oFPMFPKTPS = (input & (1 << 1)) != 0;\r
- final Boolean _oFPMFBURST = (input & (1 << 2)) != 0; \r
+ final Boolean _oFPMFBURST = (input & (1 << 2)) != 0;\r
final Boolean _oFPMFSTATS = (input & (1 << 3)) != 0;\r
return new MeterFlags(_oFPMFBURST, _oFPMFKBPS, _oFPMFPKTPS, _oFPMFSTATS);\r
}\r
\r
+ private static MeterBandTypeBitmap createMeterBandsBitmap(long input) {\r
+ final Boolean _oFPMBTDROP = (input & (1 << 0)) != 0;\r
+ final Boolean _oFPMBTDSCPREMARK = (input & (1 << 1)) != 0;\r
+ return new MeterBandTypeBitmap(_oFPMBTDROP, _oFPMBTDSCPREMARK);\r
+ }\r
+ \r
private static MultipartReplyMeter setMeter(ByteBuf input) {\r
final byte PADDING_IN_METER_STATS_HEADER = 6;\r
final byte METER_BAND_STATS_LENGTH = 16;\r
while (input.readableBytes() > 0) {\r
MeterConfigBuilder meterConfigBuilder = new MeterConfigBuilder();\r
int meterConfigBodyLength = input.readUnsignedShort();\r
- meterConfigBuilder.setFlags(MeterModCommand.forValue(input.readUnsignedShort()));\r
+ meterConfigBuilder.setFlags(createMeterFlags(input.readUnsignedShort()));\r
meterConfigBuilder.setMeterId(input.readUnsignedInt());\r
int actualLength = METER_CONFIG_LENGTH;\r
List<Bands> bandsList = new ArrayList<>();\r
private static MultipartReplyPortDesc setPortDesc(ByteBuf input) {\r
final byte PADDING_IN_PORT_DESC_HEADER_01 = 4;\r
final byte PADDING_IN_PORT_DESC_HEADER_02 = 2;\r
- final int macAddressLength = 6;\r
+ final int MAC_ADDRESS_LENGTH = 6;\r
final byte MAX_PORT_NAME_LEN = 16;\r
MultipartReplyPortDescBuilder builder = new MultipartReplyPortDescBuilder();\r
List<Ports> portsList = new ArrayList<>();\r
PortsBuilder portsBuilder = new PortsBuilder();\r
portsBuilder.setPortNo(input.readUnsignedInt());\r
input.skipBytes(PADDING_IN_PORT_DESC_HEADER_01);\r
- StringBuffer macToString = new StringBuffer();\r
- for(int i=0; i<macAddressLength; i++){\r
- short mac = 0;\r
- mac = input.readUnsignedByte();\r
- macToString.append(String.format("%02X", mac));\r
- }\r
- portsBuilder.setHwAddr(new MacAddress(macToString.toString()));\r
+ byte[] hwAddress = new byte[MAC_ADDRESS_LENGTH];\r
+ input.readBytes(hwAddress);\r
+ portsBuilder.setHwAddr(new MacAddress(ByteBufUtils.macAddressToString(hwAddress)));\r
input.skipBytes(PADDING_IN_PORT_DESC_HEADER_02);\r
byte[] portNameBytes = new byte[MAX_PORT_NAME_LEN];\r
input.readBytes(portNameBytes);\r