public static boolean isIp6InNetwork(final String ip6, final String ip6Cidr) { try { return isIp6InNetwork(IPv6Address.fromString(ip6), IPv6Network.fromString(ip6Cidr)); } catch (final IllegalArgumentException ex) { return false; } }
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; }
throw new InvalidParameterValueException("Invalid ip6cidr"); if (!NetUtils.isIp6InNetwork(startIPv6, ip6Cidr)) { throw new InvalidParameterValueException("startIPv6 is not in ip6cidr indicated network!"); if (!NetUtils.isIp6InNetwork(endIPv6, ip6Cidr)) { throw new InvalidParameterValueException("endIPv6 is not in ip6cidr indicated network!"); if (!NetUtils.isIp6InNetwork(ip6Gateway, ip6Cidr)) { throw new InvalidParameterValueException("ip6Gateway is not in ip6cidr indicated network!");
@Test public void testIsIp6InNetwork() { assertFalse(NetUtils.isIp6InNetwork(IPv6Address.fromString("1234:5678:abcd::1"), IPv6Network.fromString("1234:5678::/64"))); assertTrue(NetUtils.isIp6InNetwork(IPv6Address.fromString("1234:5678::1"), IPv6Network.fromString("1234:5678::/64"))); assertTrue(NetUtils.isIp6InNetwork(IPv6Address.fromString("1234:5678::ffff:ffff:ffff:ffff"), IPv6Network.fromString("1234:5678::/64"))); assertTrue(NetUtils.isIp6InNetwork(IPv6Address.fromString("1234:5678::"), IPv6Network.fromString("1234:5678::/64"))); }
/** * Performs some checks on the given IPv6 address. It will throw exceptions in the following cases: * <ul> * <li>the the requested IPv6 address is already in use in the network;</li> * <li>IPv6 address is equals to the Gateway;</li> * <li>the network offering is empty;</li> * <li>the IPv6 address is not in the network.</li> * </ul> */ protected void checkIfCanAllocateIpv6Address(Network network, String ipv6) throws InsufficientAddressCapacityException { if (isIp6Taken(network, ipv6)) { throw new InsufficientAddressCapacityException( String.format("The IPv6 address [%s] is already in use in the network [id=%s, name=%s]", ipv6, network.getId(), network.getName()), Network.class, network.getId()); } if (ipAddressManager.isIpEqualsGatewayOrNetworkOfferingsEmpty(network, ipv6)) { throw new InvalidParameterValueException( String.format("The network [id=%s] offering is empty or the requested IP address [%s] is equals to the Gateway", network.getId(), ipv6)); } String networkIp6Cidr = network.getIp6Cidr(); if (!NetUtils.isIp6InNetwork(ipv6, networkIp6Cidr)) { throw new InvalidParameterValueException( String.format("The IPv6 address [%s] is not in the network [id=%s, name=%s, ipv6cidr=%s]", ipv6, network.getId(), network.getName(), network.getIp6Cidr())); } }
public static String getCidrHostAddress6(final String cidrv6) { final String[] cidrPair = cidrv6.split("\\/"); final String address = cidrPair[0]; if (isValidIp6(address) && isIp6InNetwork(address, cidrv6, false)) { return address; } return null; }
public static boolean isIp6InNetwork(final String ip6, final String ip6Cidr) { try { return isIp6InNetwork(IPv6Address.fromString(ip6), IPv6Network.fromString(ip6Cidr)); } catch (final IllegalArgumentException ex) { return false; } }
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; }
@Test public void testIsIp6InNetwork() { assertFalse(NetUtils.isIp6InNetwork(IPv6Address.fromString("1234:5678:abcd::1"), IPv6Network.fromString("1234:5678::/64"))); assertTrue(NetUtils.isIp6InNetwork(IPv6Address.fromString("1234:5678::1"), IPv6Network.fromString("1234:5678::/64"))); assertTrue(NetUtils.isIp6InNetwork(IPv6Address.fromString("1234:5678::ffff:ffff:ffff:ffff"), IPv6Network.fromString("1234:5678::/64"))); assertTrue(NetUtils.isIp6InNetwork(IPv6Address.fromString("1234:5678::"), IPv6Network.fromString("1234:5678::/64"))); }