MacAddress (de)serialization for OF1.0 14/3514/1
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Thu, 5 Dec 2013 19:47:20 +0000 (20:47 +0100)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Thu, 5 Dec 2013 19:47:57 +0000 (20:47 +0100)
Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10FeaturesReplyMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10PortStatusMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsDeserializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10MatchDeserializer.java

index a73466bba7eb858e59c834f068151daf5dd3c1e6..e68de8bad3e9c43117a68b1b2eeca5a3c312c6db 100644 (file)
@@ -6,6 +6,7 @@ import io.netty.buffer.ByteBuf;
 import java.math.BigInteger;\r
 \r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\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.ActionTypeV10;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.CapabilitiesV10;\r
@@ -93,12 +94,9 @@ public class OF10FeaturesReplyMessageFactory implements OFDeserializer<GetFeatur
     \r
     private static void deserializePort(ByteBuf rawMessage, GetFeaturesOutputBuilder builder) {\r
         builder.setPortNo((long) rawMessage.readUnsignedShort());\r
-        StringBuffer macToString = new StringBuffer();\r
-        for(int i = 0; i < MAC_ADDRESS_LENGTH; i++){\r
-            short mac = rawMessage.readUnsignedByte();\r
-            macToString.append(String.format("%02X", mac));\r
-        }\r
-        builder.setHwAddr(new MacAddress(macToString.toString()));\r
+        byte[] address = new byte[MAC_ADDRESS_LENGTH];\r
+        rawMessage.readBytes(address);\r
+        builder.setHwAddr(new MacAddress(ByteBufUtils.macAddressToString(address)));\r
         byte[] name = new byte[MAX_PORT_NAME_LENGTH];\r
         rawMessage.readBytes(name);\r
         builder.setName(name.toString());\r
index 9275f3c309799e380cdbadc3de9f62b0ccd869f3..16b86978bf4bb3fd19887f56ba21d6e453802ec8 100644 (file)
@@ -4,6 +4,7 @@ package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 import io.netty.buffer.ByteBuf;\r
 \r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\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.PortConfigV10;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;\r
@@ -91,12 +92,9 @@ public class OF10PortStatusMessageFactory implements OFDeserializer<PortStatusMe
     \r
     private static void deserializePort(ByteBuf rawMessage, PortStatusMessageBuilder builder) {\r
         builder.setPortNo((long) rawMessage.readUnsignedShort());\r
-        StringBuffer macToString = new StringBuffer();\r
-        for(int i = 0; i < MAC_ADDRESS_LENGTH; i++){\r
-            short mac = rawMessage.readUnsignedByte();\r
-            macToString.append(String.format("%02X", mac));\r
-        }\r
-        builder.setHwAddr(new MacAddress(macToString.toString()));\r
+        byte[] address = new byte[MAC_ADDRESS_LENGTH];\r
+        rawMessage.readBytes(address);\r
+        builder.setHwAddr(new MacAddress(ByteBufUtils.macAddressToString(address)));\r
         byte[] name = new byte[MAX_PORT_NAME_LENGTH];\r
         rawMessage.readBytes(name);\r
         builder.setName(name.toString());\r
index f406b95694f60d553d514f6a19a8358a4597ddfa..5fd546df516c308e1128e94585a4ce2778fb7338 100644 (file)
@@ -177,13 +177,9 @@ public class OF10ActionsDeserializer {
         final byte MAC_ADDRESS_LENGTH = 6;\r
         final byte PADDING_IN_SET_DL_ACTION = 6;\r
         DlAddressActionBuilder dlBuilder = new DlAddressActionBuilder();\r
-        short mac = 0;\r
-        StringBuffer macAddress = new StringBuffer();\r
-        for(int i = 0; i < MAC_ADDRESS_LENGTH; i++){\r
-            mac = input.readUnsignedByte();\r
-            macAddress.append(String.format("%02X", mac));\r
-        }\r
-        dlBuilder.setDlAddress(new MacAddress(macAddress.toString()));\r
+        byte[] address = new byte[MAC_ADDRESS_LENGTH];\r
+        input.readBytes(address);\r
+        dlBuilder.setDlAddress(new MacAddress(ByteBufUtils.macAddressToString(address)));\r
         input.skipBytes(PADDING_IN_SET_DL_ACTION);\r
         return dlBuilder.build();\r
     }\r
index 216cbd3efca78776d4680035056ceaafbf6e8c5d..c6643236a885aa587718ac4949485d9598898814 100644 (file)
@@ -33,18 +33,12 @@ public abstract class OF10MatchDeserializer {
         MatchV10Builder builder = new MatchV10Builder();\r
         builder.setWildcards(rawMessage.readUnsignedInt());\r
         builder.setInPort(rawMessage.readUnsignedShort());\r
-        StringBuffer dlSrc = new StringBuffer();\r
-        for(int i = 0; i < MAC_ADDRESS_LENGTH; i++){\r
-            short mac = rawMessage.readUnsignedByte();\r
-            dlSrc.append(String.format("%02X", mac));\r
-        }\r
-        builder.setDlSrc(new MacAddress(dlSrc.toString()));\r
-        StringBuffer dlDst = new StringBuffer();\r
-        for(int i = 0; i < MAC_ADDRESS_LENGTH; i++){\r
-            short mac = rawMessage.readUnsignedByte();\r
-            dlDst.append(String.format("%02X", mac));\r
-        }\r
-        builder.setDlDst(new MacAddress(dlDst.toString()));\r
+        byte[] dlSrc = new byte[MAC_ADDRESS_LENGTH];\r
+        rawMessage.readBytes(dlSrc);\r
+        builder.setDlSrc(new MacAddress(ByteBufUtils.macAddressToString(dlSrc)));\r
+        byte[] dlDst = new byte[MAC_ADDRESS_LENGTH];\r
+        rawMessage.readBytes(dlDst);\r
+        builder.setDlDst(new MacAddress(ByteBufUtils.macAddressToString(dlDst)));\r
         builder.setDlVlan(rawMessage.readUnsignedShort());\r
         builder.setDlVlanPcp(rawMessage.readUnsignedByte());\r
         rawMessage.skipBytes(PADDING_IN_MATCH);\r