public static String getIp6FromRange(final String ip6Range) { final String[] ips = ip6Range.split("-"); final String startIp = ips[0]; final IPv6Address start = IPv6Address.fromString(startIp); final BigInteger gap = countIp6InRange(ip6Range); BigInteger next = new BigInteger(gap.bitLength(), s_rand); while (next.compareTo(gap) >= 0) { next = new BigInteger(gap.bitLength(), s_rand); } InetAddress resultAddr = null; final BigInteger startInt = convertIPv6AddressToBigInteger(start); if (startInt != null) { final BigInteger resultInt = startInt.add(next); try { resultAddr = InetAddress.getByAddress(resultInt.toByteArray()); } catch (final UnknownHostException e) { return null; } } if( resultAddr != null) { final IPv6Address ip = IPv6Address.fromInetAddress(resultAddr); return ip.toString(); } return null; }
public static boolean isIpInCidrList(final InetAddress address, final String[] cidrlist) { boolean match = false; for (String cidr: cidrlist) { try { if (address instanceof Inet6Address && isValidIp6Cidr(cidr)) { if (isIp6InNetwork(IPv6Address.fromInetAddress(address), IPv6Network.fromString(cidr))) { match = true; break; } } else if (address instanceof Inet4Address && isValidIp4Cidr(cidr)) { if (NetUtils.isIpWithInCidrRange(address.getHostAddress(), cidr)) { match = true; break; } } } catch (IllegalArgumentException e) { continue; } } return match; }
public static String getIp6FromRange(final String ip6Range) { final String[] ips = ip6Range.split("-"); final String startIp = ips[0]; final IPv6Address start = IPv6Address.fromString(startIp); final BigInteger gap = countIp6InRange(ip6Range); BigInteger next = new BigInteger(gap.bitLength(), s_rand); while (next.compareTo(gap) >= 0) { next = new BigInteger(gap.bitLength(), s_rand); } InetAddress resultAddr = null; final BigInteger startInt = convertIPv6AddressToBigInteger(start); if (startInt != null) { final BigInteger resultInt = startInt.add(next); try { resultAddr = InetAddress.getByAddress(resultInt.toByteArray()); } catch (final UnknownHostException e) { return null; } } if (resultAddr != null) { final IPv6Address ip = IPv6Address.fromInetAddress(resultAddr); return ip.toString(); } return null; }
public static boolean isIpInCidrList(final InetAddress address, final String[] cidrlist) { boolean match = false; for (final String cidr : cidrlist) { try { if (address instanceof Inet6Address && isValidIp6Cidr(cidr)) { if (isIp6InNetwork(IPv6Address.fromInetAddress(address), IPv6Network.fromString(cidr))) { match = true; break; } } else if (address instanceof Inet4Address && isValidIp4Cidr(cidr)) { if (NetUtils.isIpWithtInCidrRange(address.getHostAddress(), cidr)) { match = true; break; } } } catch (final IllegalArgumentException e) { continue; } } return match; }