BUG-2825: switch to custom IPv6 parsing 02/35402/6
authorRobert Varga <robert.varga@pantheon.sk>
Thu, 25 Feb 2016 14:32:37 +0000 (15:32 +0100)
committerRobert Varga <nite@hq.sk>
Fri, 4 Mar 2016 11:02:26 +0000 (11:02 +0000)
Do not use Guava for parsing IPv6 addresses, but use our BSD-based,
customized version.

Change-Id: I5574afd7d6020e25c83fd55d650949eaf2a980e3
Signed-off-by: Robert Varga <robert.varga@pantheon.sk>
model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/AbstractIetfInetUtil.java

index ac10c27220d63a75112830050fa0e452a445b0cc..780e06760270c4b6e7c1f1b8ade1d8c5580631d6 100644 (file)
@@ -271,13 +271,11 @@ public abstract class AbstractIetfInetUtil<A4, P4, A6, P6, A> {
     }
 
     @Nonnull public final byte[] ipv6AddressBytes(@Nonnull final A6 addr) {
-        String str = ipv6AddressString(addr);
+        final String str = ipv6AddressString(addr);
+        final byte[] bytes = new byte[INET6_LENGTH];
         final int percent = str.indexOf('%');
-        if (percent != -1) {
-            str = str.substring(0, percent);
-        }
-
-        return InetAddresses.forString(str).getAddress();
+        Ipv6Utils.fillIpv6Bytes(bytes, str, percent == -1 ? str.length() : percent);
+        return bytes;
     }
 
     /**
@@ -384,10 +382,9 @@ public abstract class AbstractIetfInetUtil<A4, P4, A6, P6, A> {
 
     @Nonnull public final byte[] ipv6PrefixToBytes(@Nonnull final P6 prefix) {
         final String str = ipv6PrefixString(prefix);
-        final int slash = str.lastIndexOf('/');
-
         final byte[] bytes = new byte[INET6_LENGTH + 1];
-        System.arraycopy(InetAddresses.forString(str.substring(0, slash)).getAddress(), 0, bytes, 0, INET6_LENGTH);
+        final int slash = str.lastIndexOf('/');
+        Ipv6Utils.fillIpv6Bytes(bytes, str, slash);
         bytes[INET6_LENGTH] = (byte)Integer.parseInt(str.substring(slash + 1), 10);
         return bytes;
     }