public static boolean isIpv6Address(String ip) { try { IPv6Address.fromString(ip); return true; } catch (Exception e){ return false; } }
public static boolean isIpv6InRange(String ip, String startIp, String endIp) { IPv6Address start = IPv6Address.fromString(startIp); IPv6Address end = IPv6Address.fromString(endIp); IPv6Address address = IPv6Address.fromString(ip); IPv6AddressRange range = IPv6AddressRange.fromFirstAndLast(start, end); return range.contains(address); }
public static String standardizeIp6Address(final String ip6Addr) { try { return IPv6Address.fromString(ip6Addr).toString(); } catch (final IllegalArgumentException ex) { throw new IllegalArgumentException("Invalid IPv6 address: " + ex.getMessage()); } }
public static boolean isIpv6RangeFull(String startIp, String endIp, long used) { BigInteger start = IPv6Address.fromString(startIp).toBigInteger(); BigInteger end = IPv6Address.fromString(endIp).toBigInteger(); return end.subtract(start).compareTo(new BigInteger(String.valueOf(used))) <= 0; }
public static Integer getIpversion(String ip) { if (isIpv4Address(ip)) { return IPv6Constants.IPv4; } else { try { IPv6Address.fromString(ip); return IPv6Constants.IPv6; } catch (Exception e) { throw e; } } }
public static boolean isIPv6EUI64(final String address) { return NetUtils.isIPv6EUI64(IPv6Address.fromString(address)); }
public static String getIpv6AddressCanonicalString(String ip) { IPv6Address ip6 = IPv6Address.fromString(ip); return ip6.toString(); }
public static long getIpv6RangeSize(String startIp, String endIp) { IPv6Address start = IPv6Address.fromString(startIp); IPv6Address end = IPv6Address.fromString(endIp); IPv6AddressRange range = IPv6AddressRange.fromFirstAndLast(start, end); if (range.size().compareTo(IPv6Constants.IntegerMax) >= 0) { return Integer.MAX_VALUE; } else { return range.size().longValue(); } }
public static String getSmallestIp(List<String> ips) { if (isIpv4Address(ips.get(0))) { List<Long> addresses = ips.stream().map(ip -> ipToLong(ip)).collect(Collectors.toList()); addresses.sort(Long::compareTo); return longToIP(addresses.get(0)); } else { List<IPv6Address> addresses = ips.stream().map(ip -> IPv6Address.fromString(ip)).collect(Collectors.toList()); addresses.sort(IPv6Address::compareTo); return addresses.get(0).toString(); } }
public static String getBiggesttIp(List<String> ips) { int length = ips.size(); if (isIpv4Address(ips.get(0))) { List<Long> addresses = ips.stream().map(ip -> ipToLong(ip)).collect(Collectors.toList()); addresses.sort(Long::compareTo); return longToIP(addresses.get(length -1)); } else { List<IPv6Address> addresses = ips.stream().map(ip -> IPv6Address.fromString(ip)).collect(Collectors.toList()); addresses.sort(IPv6Address::compareTo); return addresses.get(length -1).toString(); } }
public static Integer getPrefixLengthFromNetwork(String mask) { if (isIpv4Address(mask)) { return validNetmasks.get(mask); } else { try { IPv6Address addr = IPv6Address.fromString(mask); return addr.numberOfLeadingOnes(); } catch (Exception e) { throw e; } } } }
public static boolean isIpv6InCidrRange(String ip, String networkCidr) { IPv6Network network = IPv6Network.fromString(networkCidr); IPv6Address address = IPv6Address.fromString(ip); return network.contains(address); }
public static IPv6Address EUI64Address(final IPv6Network cidr, final String macAddress) { if (cidr.getNetmask().asPrefixLength() > 64) { throw new IllegalArgumentException("IPv6 subnet " + cidr.toString() + " is not 64 bits or larger in size"); } String mac[] = macAddress.toLowerCase().split(":"); return IPv6Address.fromString(cidr.getFirst().toString() + Integer.toHexString(Integer.parseInt(mac[0], 16) ^ 2) + mac[1] + ":" + mac[2] + "ff:fe" + mac[3] +":" + mac[4] + mac[5]); }
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 isIpv6UnicastAddress(String ip) { try { IPv6Address address = IPv6Address.fromString(ip); if (address.isMulticast() || address.isLinkLocal() || address.isSiteLocal()) { return false; } else { return true; } } catch (Exception e){ return false; } }
public static String getNetworkCidrOfIpRange(String startIp, int prefixLen) { try { IPv6Address start = IPv6Address.fromString(startIp); IPv6Network network = IPv6Network.fromAddressAndMask(start, IPv6NetworkMask.fromPrefixLength(prefixLen)); return network.toString(); } catch (Exception e) { return ""; } }
public static String getNetworkMaskOfIpRange(String startIp, int prefixLen) { try { IPv6Address start = IPv6Address.fromString(startIp); IPv6Network network = IPv6Network.fromAddressAndMask(start, IPv6NetworkMask.fromPrefixLength(prefixLen)); return network.getNetmask().toString(); } catch (Exception e) { return ""; } }
@Test public void testIPv6EUI64Address() { assertEquals(IPv6Address.fromString("2001:db8:100::47a:88ff:fe00:8b"), NetUtils.EUI64Address("2001:db8:100::/64", "06:7a:88:00:00:8b")); assertEquals(IPv6Address.fromString("2a00:f10:121:b00:434:a0ff:fe00:1bc7"), NetUtils.EUI64Address("2a00:f10:121:b00::/64", "06:34:a0:00:1b:c7")); assertEquals(IPv6Address.fromString("2001:980:7936:0:ea2a:eaff:fe58:eb98"), NetUtils.EUI64Address("2001:980:7936::/64", "e8:2a:ea:58:eb:98")); assertEquals(IPv6Address.fromString("2001:980:7936:0:c23f:d5ff:fe68:2808"), NetUtils.EUI64Address("2001:980:7936::/64", "c0:3f:d5:68:28:08")); }
@Test public void testIPv6LinkLocal() { assertEquals(IPv6Address.fromString("fe80::fc54:ff:fe00:3e05"), NetUtils.ipv6LinkLocal("fe:54:00:00:3e:05")); assertEquals(IPv6Address.fromString("fe80::42:e0ff:fee8:d6a3"), NetUtils.ipv6LinkLocal("02:42:e0:e8:d6:a3")); assertEquals(IPv6Address.fromString("fe80::47a:88ff:fe00:8b"), NetUtils.ipv6LinkLocal("06:7a:88:00:00:8b")); }
@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"))); }