BUG-6647 Increase code coverage and clean up II
[bgpcep.git] / util / src / main / java / org / opendaylight / protocol / util / Ipv4Util.java
index e12e580c1c9257ce3604d9120a0143cf68a49ace..4eb674387feea4a05a4a1602af45f6282487b512 100644 (file)
@@ -18,17 +18,19 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IetfInetUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
+import java.util.Map;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
 
 /**
  * Util class for creating generated Ipv4Address.
  */
 public final class Ipv4Util {
     public static final int IP4_LENGTH = 4;
+    public static final int IP4_BITS_LENGTH = 32;
     private static final Ipv4Prefix EMPTY_PREFIX = new Ipv4Prefix("0.0.0.0/0");
 
     private Ipv4Util() {
@@ -177,9 +179,12 @@ public final class Ipv4Util {
                 list.add(EMPTY_PREFIX);
                 continue;
             }
-            final int byteCount = (bitLength % Byte.SIZE != 0) ? (bitLength / Byte.SIZE) + 1 : bitLength / Byte.SIZE;
-            list.add(prefixForBytes(ByteArray.subByte(bytes, byteOffset, byteCount), bitLength));
-            byteOffset += byteCount;
+
+            list.add(IetfInetUtil.INSTANCE.ipv4PrefixForShort(bytes, byteOffset, bitLength));
+            byteOffset += bitLength / Byte.SIZE;
+            if (bitLength % Byte.SIZE != 0) {
+                byteOffset++;
+            }
 
         }
         return list;
@@ -214,12 +219,44 @@ public final class Ipv4Util {
      * @return InetSocketAddress
      */
     public static InetSocketAddress toInetSocketAddress(final IpAddress ipAddress, final PortNumber port) {
-        final String ipString;
+        final String ipString = toStringIP(ipAddress);
+        return new InetSocketAddress(InetAddresses.forString(ipString), port.getValue());
+    }
+
+    /**
+     * Increment Address
+     *
+     * @param ipv4Address String containing Ipv4Address
+     * @return String containing Ipv4Address incremented by 1
+     */
+    public static String incrementIpv4Address(final String ipv4Address) {
+        return InetAddresses.increment(InetAddresses.forString(ipv4Address)).getHostAddress();
+    }
+
+    /**
+     * Increment Address
+     *
+     * @param ipv4Address ipv4 address to be incremented
+     * @return new ipv4 address
+     */
+    public static Ipv4Address incrementIpv4Address(final Ipv4Address ipv4Address) {
+        return new Ipv4Address(incrementIpv4Address(ipv4Address.getValue()));
+    }
+
+    public static Ipv4Prefix incrementIpv4Prefix(final Ipv4Prefix ipv4Prefix) {
+        final Map.Entry<Ipv4Address, Integer> splitIpv4Prefix = IetfInetUtil.INSTANCE.splitIpv4Prefix(ipv4Prefix);
+        return IetfInetUtil.INSTANCE.ipv4PrefixFor(incrementIpv4Address(splitIpv4Prefix.getKey()), splitIpv4Prefix.getValue());
+    }
+
+    /**
+     * Get string representation of IpAddress
+     * @param ipAddress
+     * @return String value of Ipv4Address or Ipv6Address
+     */
+    public static String toStringIP(final IpAddress ipAddress) {
         if (ipAddress.getIpv4Address() != null) {
-            ipString = ipAddress.getIpv4Address().getValue();
-        } else {
-            ipString = ipAddress.getIpv6Address().getValue();
+            return ipAddress.getIpv4Address().getValue();
         }
-        return new InetSocketAddress(InetAddresses.forString(ipString), port.getValue());
+        return ipAddress.getIpv6Address().getValue();
     }
 }