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 String getIpv6AddressCanonicalString(String ip) { IPv6Address ip6 = IPv6Address.fromString(ip); return ip6.toString(); }
public static String ipv6AddressToString(BigInteger ip) { return IPv6Address.fromBigInteger(ip).toString(); }
private static String IPv6AddressToString(BigInteger ip) { return IPv6Address.fromBigInteger(ip).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 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 getEndIpOfNetworkCidr(String cidr) { IPv6Network network = IPv6Network.fromString(cidr); return network.getLast().toString(); }
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 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 List<String> getFreeIpv6InRange(String startIp, String endIp, List<String> usedIps, int limit, String start) { IPv6Address s = IPv6Address.fromString(startIp); IPv6Address e = IPv6Address.fromString(endIp); IPv6Address f = IPv6Address.fromString(start); IPv6AddressRange range = IPv6AddressRange.fromFirstAndLast(s, e); List<String> res = new ArrayList<String>(); while (s.compareTo(e) <= 0) { if (s.compareTo(f) <= 0) { s = s.add(1); continue; } if (usedIps.contains(s.toString())) { s = s.add(1); continue; } res.add(s.toString()); s = s.add(1); if (res.size() >= limit) { break; } } return res; }
public static String getNextIp6InRange(final String currentIp, final String ipRange) { final String[] ips = ipRange.split("-"); final String startIp = ips[0]; String endIp = null; if (ips.length > 1) { endIp = ips[1]; } final IPv6Address start = IPv6Address.fromString(startIp); final IPv6Address end = IPv6Address.fromString(endIp); final IPv6Address current = IPv6Address.fromString(currentIp); IPv6Address result = null; if (current.equals(end)) { result = start; } else { result = current.add(1); } String resultIp = null; if (result != null) { resultIp = result.toString(); } return resultIp; }
@Test public void testGetIp6FromRange() { assertEquals(NetUtils.getIp6FromRange("1234:5678::1-1234:5678::1"), "1234:5678::1"); for (int i = 0; i < 5; i++) { final String ip = NetUtils.getIp6FromRange("1234:5678::1-1234:5678::2"); assertThat(ip, anyOf(equalTo("1234:5678::1"), equalTo("1234:5678::2"))); s_logger.info("IP is " + ip); } String ipString = null; final IPv6Address ipStart = IPv6Address.fromString("1234:5678::1"); final IPv6Address ipEnd = IPv6Address.fromString("1234:5678::ffff:ffff:ffff:ffff"); for (int i = 0; i < 10; i++) { ipString = NetUtils.getIp6FromRange(ipStart.toString() + "-" + ipEnd.toString()); s_logger.info("IP is " + ipString); final IPv6Address ip = IPv6Address.fromString(ipString); assertThat(ip, greaterThanOrEqualTo(ipStart)); assertThat(ip, lessThanOrEqualTo(ipEnd)); } }
nic.setIPv6Address(ipv6addr.toString());
@Override public String toString() { return address.toString() + "/" + networkMask.asPrefixLength(); }
public static String standardizeIp6Address(final String ip6Addr) { try { return IPv6Address.fromString(ip6Addr).toString(); } catch (final IllegalArgumentException e) { throw new IllegalArgumentException("Invalid IPv6 address: " + e.getMessage(), e); } }
nic.setIPv6Address(ipv6addr.toString());
private Ipv6Address parseSrv6SidAddress(final String locatorIp, final String locatorLength, final Long opcode) { com.googlecode.ipv6.IPv6Address ip = com.googlecode.ipv6.IPv6Address.fromString(locatorIp); IPv6NetworkMask mask = IPv6NetworkMask.fromPrefixLength(parseInt(locatorLength)); com.googlecode.ipv6.IPv6Address srv6Sid = ip.maskWithNetworkMask(mask); return new Ipv6Address(srv6Sid.add(opcode.intValue()).toString()); }
Ipv6Address resolveSidAddress(@Nonnull final Prefix locPrefix, @Nonnull Sid localSid) { com.googlecode.ipv6.IPv6Address ip = com.googlecode.ipv6.IPv6Address.fromString(locPrefix.getAddress().getValue()); IPv6NetworkMask mask = IPv6NetworkMask.fromPrefixLength(locPrefix.getLength().getValue()); // strip function part if present ip = ip.maskWithNetworkMask(mask); //add new function part based on opcode String locIp = ip.add(localSid.getOpcode().getValue().intValue()).toString(); return new Ipv6Address(locIp); }