Fix ipv6 prefix serializer 35/25235/1
authorMilos Fabian <milfabia@cisco.com>
Thu, 13 Aug 2015 08:49:52 +0000 (10:49 +0200)
committerMilos Fabian <milfabia@cisco.com>
Thu, 13 Aug 2015 12:45:56 +0000 (12:45 +0000)
-java's genuine string to byte parser is limited to value of 127 max
-use unsigned string to byte parser to able to handle 128 prefix

Change-Id: Iacbb47fc90286e74c01737735f4b78f4d5c89c64
Signed-off-by: Milos Fabian <milfabia@cisco.com>
(cherry picked from commit 92bd1c44c83b9b2c3976bd153386461e4c23ce11)

util/src/main/java/org/opendaylight/protocol/util/Ipv6Util.java
util/src/test/java/org/opendaylight/protocol/util/IPAddressesAndPrefixesTest.java

index feac37a72098e74df32371e3f30dce721d876148..f191b1b08b097fda9777099ae904b2d4cb516f33 100644 (file)
@@ -92,7 +92,7 @@ public final class Ipv6Util {
         final InetAddress a = InetAddresses.forString(p.substring(0, sep));
         Preconditions.checkArgument(a instanceof Inet6Address);
         final byte[] bytes = a.getAddress();
-        return Bytes.concat(bytes, new byte[] { Byte.valueOf(p.substring(sep + 1, p.length())) });
+        return Bytes.concat(bytes, new byte[] { UnsignedBytes.parseUnsignedByte(p.substring(sep + 1, p.length())) });
     }
 
     /**
index 7a6cad8a73c8702a40dc1bc53e29c406b8c8127e..f3e80d25ca6d45aff0431ab135a5e6d6926af69b 100644 (file)
@@ -120,6 +120,8 @@ public class IPAddressesAndPrefixesTest {
         assertEquals(new Ipv6Prefix("2001:db8:1:2::/64"), Ipv6Util.prefixForBytes(bytes, 64));
         assertArrayEquals(new byte[] { 0x20, (byte) 0x01, 0x0d, (byte) 0xb8, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
             0x00, 0x00, 0x40 }, Ipv6Util.bytesForPrefix(new Ipv6Prefix("2001:db8:1:2::/64")));
+        assertArrayEquals(new byte[] { 0x20, (byte) 0x01, 0x0d, (byte) 0xb8, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+            0x00, 0x00, (byte)0x80 }, Ipv6Util.bytesForPrefix(new Ipv6Prefix("2001:db8:1:2::/128")));
 
         try {
             Ipv6Util.prefixForBytes(bytes, 200);