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; } }
IPv6Network network = IPv6Network.fromAddressAndMask(start, IPv6NetworkMask.fromPrefixLength(prefixLen)); if (!network.contains(end)) { return false; if (!network.contains(gateway)) { return false; if (network.getFirst().compareTo(start) == 0) { return false; if (network.getLast().compareTo(end) == 0) { return false;
public static String getFormalCidrOfNetworkCidr(String cidr) { IPv6Network network = IPv6Network.fromString(cidr); return network.toString(); }
public static boolean isIpv6CidrEqual( String cidr1, String cidr2) { IPv6Network network = IPv6Network.fromString(cidr1); return network.equals(IPv6Network.fromString(cidr2)); }
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 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 isValidIp6Cidr(final String ip6Cidr) { try { IPv6Network.fromString(ip6Cidr); } catch (final IllegalArgumentException ex) { return false; } return true; }
public static boolean isIp6InNetwork(final String ip6, final String ip6Cidr, final Boolean inclusiveHostCount) { IPv6Network network = null; try { network = IPv6Network.fromString(ip6Cidr); } catch (final IllegalArgumentException ex) { return false; } final IPv6Address ip = IPv6Address.fromString(ip6); if (inclusiveHostCount) { return network.contains(ip); } else { return ((network.getFirst().compareTo(ip) < 0) && (network.getLast().compareTo(ip) > 0)); } }
/** * Remove a network from the range, resulting in one, none or two new ranges. If a network outside (or partially outside) the range is * removed, this has no effect. If the network which is removed is aligned with the beginning or end of the range, a single new ranges * is returned (potentially empty if the range was equal to the network which is removed from it). If a network somewhere else in the * range is removed, two new ranges are returned. * * @param network network to remove from the range * @return list of resulting ranges */ public List<IPv6AddressRange> remove(IPv6Network network) { if (network == null) throw new IllegalArgumentException("invalid network [null]"); if (!contains(network)) return Collections.singletonList(this); else if (this.equals(network)) return Collections.emptyList(); else if (first.equals(network.getFirst())) return Collections.singletonList(fromFirstAndLast(network.getLast().add(1), last)); else if (last.equals(network.getLast())) return Collections.singletonList(fromFirstAndLast(first, network.getFirst().subtract(1))); else return Arrays.asList(fromFirstAndLast(first, network.getFirst().subtract(1)), fromFirstAndLast(network.getLast().add(1), last)); }
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 IPv6Address ip, final IPv6Network network) { return network.contains(ip); }
public static String getEndIpOfNetworkCidr(String cidr) { IPv6Network network = IPv6Network.fromString(cidr); return network.getLast().toString(); }
public boolean isFree(final IPv6Network network) { if (network == null) throw new IllegalArgumentException("network invalid [null]"); if (!this.allocationSubnetSize.equals(network.getNetmask())) throw new IllegalArgumentException( "network of prefix length [" + network.getNetmask().asPrefixLength() + "] can not be free in a pool which uses prefix length [" + allocationSubnetSize + "]"); // find a free range that contains the network for (IPv6AddressRange freeRange : freeRanges) { if (freeRange.contains(network)) { return true; } } // nothing found return false; }
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 ""; } }
next = IPv6Network.fromAddressAndMask(base, IPv6NetworkMask.fromPrefixLength(128 - step)); if (next.getLast().compareTo(last) < 0) base = next.getLast().add(1);
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 ""; } }
/** * Private helper method to find the free range just before the given network. */ private IPv6AddressRange findFreeRangeBefore(IPv6Network network) { for (IPv6AddressRange freeRange : freeRanges) { if (freeRange.getLast().add(1).equals(network.getFirst())) { return freeRange; } } // not found return null; }
/** * Create an IPv6 network from its String representation. For example "1234:5678:abcd:0:0:0:0:0/64" or "2001::ff/128". * * @param string string representation * @return ipv6 network */ public static IPv6Network fromString(String string) { if (string.indexOf('/') == -1) { throw new IllegalArgumentException("Expected format is network-address/prefix-length"); } final String networkAddressString = parseNetworkAddress(string); int prefixLength = parsePrefixLength(string); final IPv6Address networkAddress = IPv6Address.fromString(networkAddressString); return fromAddressAndMask(networkAddress, new IPv6NetworkMask(prefixLength)); }
public IPv6NetworkSplitsIterator(IPv6NetworkMask size) { this.size = size; this.nbrAddressesPerSplit = BigInteger.ONE.shiftLeft(128 - size.asPrefixLength()); this.current = IPv6Network.fromAddressAndMask(IPv6Network.this.address, size); }