public static boolean isValidIp6Cidr(final String ip6Cidr) { try { IPv6Network.fromString(ip6Cidr); } catch (final IllegalArgumentException ex) { return false; } return true; }
public static boolean isIpv6CidrEqual( String cidr1, String cidr2) { IPv6Network network = IPv6Network.fromString(cidr1); return network.equals(IPv6Network.fromString(cidr2)); }
public static boolean isCidr(String cidr) { try { IPv6Network.fromString(cidr); return true; } catch (Exception e) { Pattern pattern = Pattern.compile("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$"); Matcher matcher = pattern.matcher(cidr); return matcher.find(); } }
public static boolean isCidr(String cidr, int ipVersion) { if (ipVersion == IPv6Constants.IPv4) { Pattern pattern = Pattern.compile("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$"); Matcher matcher = pattern.matcher(cidr); return matcher.find(); } else if(ipVersion == IPv6Constants.IPv6) { try { IPv6Network.fromString(cidr); return true; } catch (Exception e) { return false; } } return false; }
public static String standardizeIp6Cidr(final String ip6Cidr){ try { return IPv6Network.fromString(ip6Cidr).toString(); } catch (final IllegalArgumentException ex) { throw new IllegalArgumentException("Invalid IPv6 CIDR: " + ex.getMessage()); } }
public static String getFormalCidrOfNetworkCidr(String cidr) { IPv6Network network = IPv6Network.fromString(cidr); return network.toString(); }
public static IPv6Address EUI64Address(final String cidr, final String macAddress) { return EUI64Address(IPv6Network.fromString(cidr), macAddress); }
public static String getIPv6AddresFromMac(String networkCidr, String mac) { IPv6Network network = IPv6Network.fromString(networkCidr); if (network.getNetmask().asPrefixLength() > 64) { return null; } int idx = networkCidr.indexOf("::"); String[] macs = mac.split(":"); String ip = networkCidr.substring(0, idx) + "::" + Integer.toHexString(Integer.parseInt(macs[0], 16) ^ 2) + macs[1] + ":" + macs[2] + "ff:fe" + macs[3] +":" + macs[4] + macs[5]; return getIpv6AddressCanonicalString(ip); }
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 int getIp6CidrSize(final String ip6Cidr) { IPv6Network network = null; try { network = IPv6Network.fromString(ip6Cidr); } catch (final IllegalArgumentException ex) { return 0; } return network.getNetmask().asPrefixLength(); }
public static boolean isIpv6InCidrRange(String ip, String networkCidr) { IPv6Network network = IPv6Network.fromString(networkCidr); IPv6Address address = IPv6Address.fromString(ip); return network.contains(address); }
public static int getPrefixLenOfNetworkCidr(String cidr) { IPv6Network network = IPv6Network.fromString(cidr); return network.getNetmask().asPrefixLength(); }
public static String getEndIpOfNetworkCidr(String cidr) { IPv6Network network = IPv6Network.fromString(cidr); return network.getLast().toString(); }
public static String getFormalNetmaskOfNetworkCidr(String cidr) { Integer prefix = IPv6Network.fromString(cidr).getNetmask().asPrefixLength(); return getFormalNetmaskOfNetworkCidr(prefix); }
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 getStartIpOfNetworkCidr(String cidr) { IPv6Network network = IPv6Network.fromString(cidr); if (network.getNetmask().asPrefixLength() < 127) { return network.getFirst().add(2).toString(); } else { return network.getFirst().toString(); } }
public static String getGatewayOfNetworkCidr(String cidr) { IPv6Network network = IPv6Network.fromString(cidr); if (network.getNetmask().asPrefixLength() <= 127) { return network.getFirst().add(1).toString(); } else { return network.getFirst().toString(); } }
@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"))); }
public static boolean isValidUnicastNetworkCidr(String networkCidr) { try { IPv6Network network = IPv6Network.fromString(networkCidr); if ((network.getNetmask().asPrefixLength() > IPv6Constants.IPV6_PREFIX_LEN_MAX) || (network.getNetmask().asPrefixLength() < IPv6Constants.IPV6_PREFIX_LEN_MIN)) { return false; } return !(network.getFirst().isSiteLocal() || network.getFirst().isLinkLocal() || network.getFirst().isMulticast()); } catch (Exception e) { return false; } }
public static boolean isValidIp6Cidr(final String ip6Cidr) { try { IPv6Network.fromString(ip6Cidr); } catch (final IllegalArgumentException ex) { return false; } return true; }