MacAddress (de)serialization fixed
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / MultipartReplyMessageFactory.java
index 40b2a07e372242c3945f77be30c32d83962a75c8..15944d6bb896b431f0ed96098ecb060dab1f939a 100644 (file)
@@ -9,6 +9,7 @@ import java.util.List;
 \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
@@ -635,7 +636,7 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     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
@@ -643,13 +644,9 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
             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