Move INET{4,6}_LENGTH constants 75/105975/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 15 May 2023 21:48:53 +0000 (23:48 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 16 May 2023 01:02:45 +0000 (03:02 +0200)
We have a few overlapping constants, make sure we co-locate them in
their respective utils, removing duplication as we go.

JIRA: MDSAL-826
Change-Id: Ib6302052388c9c196413fb7a44e32b8c69b1ed49
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/AbstractIetfInetUtil.java
model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv4Utils.java
model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv6Utils.java

index daa9f378efe1af7b80e0117f68328a4542978bee..89c600cc09c96a3a02cf9cdec1e4f0e5241ebf72 100644 (file)
@@ -28,9 +28,6 @@ import org.opendaylight.mdsal.binding.spec.reflect.StringValueObjectFactory;
 @Beta
 @SuppressWarnings("checkstyle:classTypeParameterName")
 public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ extends A6, P6, A, ANZ, P> {
-    private static final int INET4_LENGTH = 4;
-    private static final int INET6_LENGTH = 16;
-
     private final StringValueObjectFactory<A4NZ> address4NoZoneFactory;
     private final StringValueObjectFactory<P4> prefix4Factory;
     private final StringValueObjectFactory<A6NZ> address6NoZoneFactory;
@@ -86,8 +83,8 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
      */
     public final @NonNull A ipAddressFor(final byte @NonNull[] bytes) {
         return switch (bytes.length) {
-            case INET4_LENGTH -> ipv4Address(ipv4AddressFor(bytes));
-            case INET6_LENGTH -> ipv6Address(ipv6AddressFor(bytes));
+            case Ipv4Utils.INET4_LENGTH -> ipv4Address(ipv4AddressFor(bytes));
+            case Ipv6Utils.INET6_LENGTH -> ipv6Address(ipv6AddressFor(bytes));
             default -> throwInvalidArray(bytes);
         };
     }
@@ -117,8 +114,8 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
      */
     public final @NonNull ANZ ipAddressNoZoneFor(final byte @NonNull[] bytes) {
         return switch (bytes.length) {
-            case INET4_LENGTH -> ipv4AddressNoZone(ipv4AddressFor(bytes));
-            case INET6_LENGTH -> ipv6AddressNoZone(ipv6AddressFor(bytes));
+            case Ipv4Utils.INET4_LENGTH -> ipv4AddressNoZone(ipv4AddressFor(bytes));
+            case Ipv6Utils.INET6_LENGTH -> ipv6AddressNoZone(ipv6AddressFor(bytes));
             default -> throwInvalidArray(bytes);
         };
     }
@@ -156,8 +153,8 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
      */
     public final @NonNull P ipPrefixFor(final byte @NonNull[] bytes, final int mask) {
         return switch (bytes.length) {
-            case INET4_LENGTH -> ipv4Prefix(ipv4PrefixFor(bytes, mask));
-            case INET6_LENGTH -> ipv6Prefix(ipv6PrefixFor(bytes, mask));
+            case Ipv4Utils.INET4_LENGTH -> ipv4Prefix(ipv4PrefixFor(bytes, mask));
+            case Ipv6Utils.INET6_LENGTH -> ipv6Prefix(ipv6PrefixFor(bytes, mask));
             default -> throwInvalidArray(bytes);
         };
     }
@@ -412,9 +409,9 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
         final String str = ipv4PrefixString(prefix);
         final int slash = str.lastIndexOf('/');
 
-        final byte[] bytes = new byte[INET4_LENGTH + 1];
+        final byte[] bytes = new byte[Ipv4Utils.INET4_LENGTH + 1];
         Ipv4Utils.fillIpv4Bytes(bytes, 0, str, 0, slash);
-        bytes[INET4_LENGTH] = (byte)Integer.parseInt(str.substring(slash + 1), 10);
+        bytes[Ipv4Utils.INET4_LENGTH] = (byte)Integer.parseInt(str.substring(slash + 1), 10);
         return bytes;
     }
 
@@ -471,7 +468,7 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
     }
 
     private static byte @NonNull[] ipv6StringBytes(final @NonNull String str, final int limit) {
-        final byte[] bytes = new byte[INET6_LENGTH];
+        final byte[] bytes = new byte[Ipv6Utils.INET6_LENGTH];
         Ipv6Utils.fillIpv6Bytes(bytes, str, limit);
         return bytes;
     }
@@ -562,7 +559,7 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
         final int size = mask / Byte.SIZE + (mask % Byte.SIZE == 0 ? 0 : 1);
 
         // Until we can instantiate an IPv6 address for a partial array, use a temporary buffer
-        byte[] tmp = new byte[INET6_LENGTH];
+        byte[] tmp = new byte[Ipv6Utils.INET6_LENGTH];
         System.arraycopy(array, startOffset, tmp, 0, size);
         return ipv6PrefixFor(tmp, mask);
     }
@@ -589,18 +586,18 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
 
     public final byte @NonNull[] ipv6PrefixToBytes(final @NonNull P6 prefix) {
         final String str = ipv6PrefixString(prefix);
-        final byte[] bytes = new byte[INET6_LENGTH + 1];
+        final byte[] bytes = new byte[Ipv6Utils.INET6_LENGTH + 1];
         final int slash = str.lastIndexOf('/');
         Ipv6Utils.fillIpv6Bytes(bytes, str, slash);
-        bytes[INET6_LENGTH] = (byte)Integer.parseInt(str.substring(slash + 1), 10);
+        bytes[Ipv6Utils.INET6_LENGTH] = (byte)Integer.parseInt(str.substring(slash + 1), 10);
         return bytes;
     }
 
     private static void appendIpv4String(final StringBuilder sb, final byte @NonNull[] bytes) {
-        checkArgument(bytes.length == INET4_LENGTH, "IPv4 address length is 4 bytes");
+        checkArgument(bytes.length == Ipv4Utils.INET4_LENGTH, "IPv4 address length is 4 bytes");
 
         sb.append(Byte.toUnsignedInt(bytes[0]));
-        for (int i = 1; i < INET4_LENGTH; ++i) {
+        for (int i = 1; i < Ipv4Utils.INET4_LENGTH; ++i) {
             sb.append('.').append(Byte.toUnsignedInt(bytes[i]));
         }
     }
@@ -618,7 +615,7 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
     }
 
     private static String addressStringV6(final byte @NonNull[] bytes) {
-        checkArgument(bytes.length == INET6_LENGTH, "IPv6 address length is 16 bytes");
+        checkArgument(bytes.length == Ipv6Utils.INET6_LENGTH, "IPv6 address length is 16 bytes");
 
         try {
             return addressStringV6(Inet6Address.getByAddress(null, bytes, null));
@@ -652,7 +649,7 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
     }
 
     private P4 v4PrefixForShort(final byte @NonNull[] array, final int startOffset, final int size, final int mask) {
-        if (startOffset == 0 && size == INET4_LENGTH && array.length == INET4_LENGTH) {
+        if (startOffset == 0 && size == Ipv4Utils.INET4_LENGTH && array.length == Ipv4Utils.INET4_LENGTH) {
             // Easy case, fall back to non-short
             return ipv4PrefixFor(array, mask);
         }
@@ -666,7 +663,7 @@ public abstract class AbstractIetfInetUtil<A4, A4NZ extends A4, P4, A6, A6NZ ext
         }
 
         // Add zeros
-        for (int i = size; i < INET4_LENGTH; i++) {
+        for (int i = size; i < Ipv4Utils.INET4_LENGTH; i++) {
             sb.append(".0");
         }
 
index 77da3db8dbdda24ee7e0832f6c27f840a4c302a4..9d2eb2e6b617cbee645242ddd328e4fd939c0765 100644 (file)
@@ -17,6 +17,8 @@ import org.eclipse.jdt.annotation.NonNull;
  */
 @Beta
 public final class Ipv4Utils {
+    static final int INET4_LENGTH = 4;
+
     private Ipv4Utils() {
         // Hidden on purpose
     }
index eb150b389182b505a268fb032b7b4977aa3607fa..9d42d3a42f8724f57f3413bfedea523b7600aeb4 100644 (file)
@@ -47,9 +47,7 @@ import org.eclipse.jdt.annotation.NonNull;
  */
 @Beta
 public final class Ipv6Utils {
-    private static final int INADDR4SZ = 4;
-    private static final int INADDR6SZ = 16;
-    private static final int INT16SZ = Short.BYTES;
+    static final int INET6_LENGTH = 16;
 
     private Ipv6Utils() {
         // Hidden on purpose
@@ -98,13 +96,13 @@ public final class Ipv6Utils {
             }
 
             // frankenstein - v4 attached to v6, mixed notation
-            if (ch == '.' && j + INADDR4SZ <= INADDR6SZ) {
+            if (ch == '.' && j + Ipv4Utils.INET4_LENGTH <= INET6_LENGTH) {
                 /*
                  * This has passed the regexp so it is fairly safe to parse it
                  * straight away. Use the Ipv4Utils for that.
                  */
                 Ipv4Utils.fillIpv4Bytes(bytes, j, str, curtok, strLimit);
-                j += INADDR4SZ;
+                j += Ipv4Utils.INET4_LENGTH;
                 haveVal = false;
                 break;
             }
@@ -120,16 +118,16 @@ public final class Ipv6Utils {
         }
 
         if (haveVal) {
-            verifySize(j + INT16SZ <= INADDR6SZ, str);
+            verifySize(j + Short.BYTES <= INET6_LENGTH, str);
             bytes[j++] = (byte) (val >> 8 & 0xff);
             bytes[j++] = (byte) (val & 0xff);
         }
 
         if (colonp != -1) {
-            verifySize(j != INADDR6SZ, str);
+            verifySize(j != INET6_LENGTH, str);
             expandZeros(bytes, colonp, j);
         } else {
-            verifySize(j == INADDR6SZ, str);
+            verifySize(j == INET6_LENGTH, str);
         }
     }
 
@@ -139,7 +137,7 @@ public final class Ipv6Utils {
 
     private static void expandZeros(final byte[] bytes, final int where, final int filledBytes) {
         final int tailLength = filledBytes - where;
-        final int tailOffset = INADDR6SZ - tailLength;
+        final int tailOffset = INET6_LENGTH - tailLength;
         System.arraycopy(bytes, where, bytes, tailOffset, tailLength);
         Arrays.fill(bytes, where, tailOffset, (byte)0);
     }