/** * 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 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); IPv6Address networkAddress = new IPv6Address().fromString(networkAddressString); return new IPv6Network(networkAddress, new IPv6NetworkMask(prefixLength)); }
/** * Mask the address with the given network mask. * * @param networkMask network mask * @return an address of which the last 128 - * networkMask.asPrefixLength() bits are zero */ public IPv6Address maskWithNetworkMask(final IPv6NetworkMask networkMask) { if (networkMask.asPrefixLength() == 128) { return this; } else if (networkMask.asPrefixLength() == 64) { return new IPv6Address(this.highBits, 0); } else if (networkMask.asPrefixLength() == 0) { return new IPv6Address(0, 0); } else if (networkMask.asPrefixLength() > 64) { // apply mask on low bits only final int remainingPrefixLength = networkMask.asPrefixLength() - 64; return new IPv6Address(this.highBits, this.lowBits & (0xFFFFFFFFFFFFFFFFL << (64 - remainingPrefixLength))); } else { // apply mask on high bits, low bits completely 0 return new IPv6Address(this.highBits & (0xFFFFFFFFFFFFFFFFL << (64 - networkMask.asPrefixLength())), 0); } }
/** * Mask the address with the given network mask. * * @param networkMask network mask * @return an address of which the last 128 - * networkMask.asPrefixLength() bits are zero */ public IPv6Address maskWithNetworkMask(final IPv6NetworkMask networkMask) { if (networkMask.asPrefixLength() == 128) { return this; } else if (networkMask.asPrefixLength() == 64) { return new IPv6Address(this.highBits, 0); } else if (networkMask.asPrefixLength() == 0) { return new IPv6Address(0, 0); } else if (networkMask.asPrefixLength() > 64) { // apply mask on low bits only final int remainingPrefixLength = networkMask.asPrefixLength() - 64; return new IPv6Address(this.highBits, this.lowBits & (0xFFFFFFFFFFFFFFFFL << (64 - remainingPrefixLength))); } else { // apply mask on high bits, low bits completely 0 return new IPv6Address(this.highBits & (0xFFFFFFFFFFFFFFFFL << (64 - networkMask.asPrefixLength())), 0); } }
/** * Calculate the maximum address with the given network mask. * * @param networkMask network mask * @return an address of which the last 128 - * networkMask.asPrefixLength() bits are one */ public IPv6Address maximumAddressWithNetworkMask(final IPv6NetworkMask networkMask) { if (networkMask.asPrefixLength() == 128) { return this; } else if (networkMask.asPrefixLength() == 64) { return new IPv6Address(this.highBits, 0xFFFFFFFFFFFFFFFFL); } else if (networkMask.asPrefixLength() > 64) { // apply mask on low bits only final int remainingPrefixLength = networkMask.asPrefixLength() - 64; return new IPv6Address(this.highBits, this.lowBits | (0xFFFFFFFFFFFFFFFFL >>> remainingPrefixLength)); } else { // apply mask on high bits, low bits completely 1 return new IPv6Address(this.highBits | (0xFFFFFFFFFFFFFFFFL >>> networkMask.asPrefixLength()), 0xFFFFFFFFFFFFFFFFL); } }
/** * Calculate the maximum address with the given network mask. * * @param networkMask network mask * @return an address of which the last 128 - * networkMask.asPrefixLength() bits are one */ public IPv6Address maximumAddressWithNetworkMask(final IPv6NetworkMask networkMask) { if (networkMask.asPrefixLength() == 128) { return this; } else if (networkMask.asPrefixLength() == 64) { return new IPv6Address(this.highBits, 0xFFFFFFFFFFFFFFFFL); } else if (networkMask.asPrefixLength() > 64) { // apply mask on low bits only final int remainingPrefixLength = networkMask.asPrefixLength() - 64; return new IPv6Address(this.highBits, this.lowBits | (0xFFFFFFFFFFFFFFFFL >>> remainingPrefixLength)); } else { // apply mask on high bits, low bits completely 1 return new IPv6Address(this.highBits | (0xFFFFFFFFFFFFFFFFL >>> networkMask.asPrefixLength()), 0xFFFFFFFFFFFFFFFFL); } }
/** * 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 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); IPv6Address networkAddress = new IPv6Address().fromString(networkAddressString); return new IPv6Network(networkAddress, new IPv6NetworkMask(prefixLength)); }
public static String getIPV6NetMask(String ip) { IPv6Network strangeNetwork = new IPv6Network().fromString(ip); return strangeNetwork.getNetmask().asAddress().toString(); }
public static String getIPV6NetMask(String ip) { IPv6Network strangeNetwork = new IPv6Network().fromString(ip); return strangeNetwork.getNetmask().asAddress().toString(); }