/** * Returns {@code true} if one of following cases applies: * <p> * <ol> * <li>both addresses are site local</li> * <li>both addresses are link local</li> * <li>{@code ia} is neither site local nor link local</li> * </ol> */ private boolean compareLocalType(Inet6Address ia) { if (ia.isSiteLocalAddress() && isSiteLocalAddress()) { return true; } if (ia.isLinkLocalAddress() && isLinkLocalAddress()) { return true; } if (!ia.isSiteLocalAddress() && !ia.isLinkLocalAddress()) { return true; } return false; }
public static int getScopeId(NetworkInterface networkInterface, InetAddress compareWith) { Assert.checkNotNullParam("networkInterface", networkInterface); Inet6Address cw6 = compareWith instanceof Inet6Address ? (Inet6Address) compareWith : null; Inet6Address address = doPrivileged((PrivilegedAction<Inet6Address>) () -> { final Enumeration<InetAddress> addresses = networkInterface.getInetAddresses(); while (addresses.hasMoreElements()) { final InetAddress a = addresses.nextElement(); if (a instanceof Inet6Address) { final Inet6Address a6 = (Inet6Address) a; if (cw6 == null || a6.isLinkLocalAddress() == cw6.isLinkLocalAddress() && a6.isSiteLocalAddress() == cw6.isSiteLocalAddress() ) { return a6; } } } return null; }); return address == null ? 0 : address.getScopeId(); }
if (addr.isSiteLocalAddress()) buf.append(" host"); else if (addr.isLinkLocalAddress()) buf.append(" link"); else if (addr.isAnyLocalAddress())
InetAddress a = InetAddress.getByName(“www.sun.com”); if (a instanceof Inet6Address) { Inet6Address a2 = (Inet6Address) a; if (a2.isIPv4CompatibleAddress()) { ... } if ( a2.isLinkLocalAddress()) { ... } }
/** * Returns {@code true} if one of following cases applies: * <p> * <ol> * <li>both addresses are site local</li> * <li>both addresses are link local</li> * <li>{@code ia} is neither site local nor link local</li> * </ol> */ private boolean compareLocalType(Inet6Address ia) { if (ia.isSiteLocalAddress() && isSiteLocalAddress()) { return true; } if (ia.isLinkLocalAddress() && isLinkLocalAddress()) { return true; } if (!ia.isSiteLocalAddress() && !ia.isLinkLocalAddress()) { return true; } return false; }
/** * Returns {@code true} if one of following cases applies: * <p> * <ol> * <li>both addresses are site local</li> * <li>both addresses are link local</li> * <li>{@code ia} is neither site local nor link local</li> * </ol> */ private boolean compareLocalType(Inet6Address ia) { if (ia.isSiteLocalAddress() && isSiteLocalAddress()) { return true; } if (ia.isLinkLocalAddress() && isLinkLocalAddress()) { return true; } if (!ia.isSiteLocalAddress() && !ia.isLinkLocalAddress()) { return true; } return false; }
/** * Returns {@code true} if one of following cases applies: * <p> * <ol> * <li>both addresses are site local</li> * <li>both addresses are link local</li> * <li>{@code ia} is neither site local nor link local</li> * </ol> */ private boolean compareLocalType(Inet6Address ia) { if (ia.isSiteLocalAddress() && isSiteLocalAddress()) { return true; } if (ia.isLinkLocalAddress() && isLinkLocalAddress()) { return true; } if (!ia.isSiteLocalAddress() && !ia.isLinkLocalAddress()) { return true; } return false; }
/** * Returns {@code true} if one of following cases applies: * <p> * <ol> * <li>both addresses are site local</li> * <li>both addresses are link local</li> * <li>{@code ia} is neither site local nor link local</li> * </ol> */ private boolean compareLocalType(Inet6Address ia) { if (ia.isSiteLocalAddress() && isSiteLocalAddress()) { return true; } if (ia.isLinkLocalAddress() && isLinkLocalAddress()) { return true; } if (!ia.isSiteLocalAddress() && !ia.isLinkLocalAddress()) { return true; } return false; }
/** * Returns {@code true} if one of following cases applies: * <p> * <ol> * <li>both addresses are site local</li> * <li>both addresses are link local</li> * <li>{@code ia} is neither site local nor link local</li> * </ol> */ private boolean compareLocalType(Inet6Address ia) { if (ia.isSiteLocalAddress() && isSiteLocalAddress()) { return true; } if (ia.isLinkLocalAddress() && isLinkLocalAddress()) { return true; } if (!ia.isSiteLocalAddress() && !ia.isLinkLocalAddress()) { return true; } return false; }
/** * Returns {@code true} if one of following cases applies: * <p> * <ol> * <li>both addresses are site local</li> * <li>both addresses are link local</li> * <li>{@code ia} is neither site local nor link local</li> * </ol> */ private boolean compareLocalType(Inet6Address ia) { if (ia.isSiteLocalAddress() && isSiteLocalAddress()) { return true; } if (ia.isLinkLocalAddress() && isLinkLocalAddress()) { return true; } if (!ia.isSiteLocalAddress() && !ia.isLinkLocalAddress()) { return true; } return false; }
if (!ipv6.isLinkLocalAddress()) {
public static int getScopeId(NetworkInterface networkInterface, InetAddress compareWith) { Assert.checkNotNullParam("networkInterface", networkInterface); Inet6Address cw6 = compareWith instanceof Inet6Address ? (Inet6Address) compareWith : null; Inet6Address address = doPrivileged((PrivilegedAction<Inet6Address>) () -> { final Enumeration<InetAddress> addresses = networkInterface.getInetAddresses(); while (addresses.hasMoreElements()) { final InetAddress a = addresses.nextElement(); if (a instanceof Inet6Address) { final Inet6Address a6 = (Inet6Address) a; if (cw6 == null || a6.isLinkLocalAddress() == cw6.isLinkLocalAddress() && a6.isSiteLocalAddress() == cw6.isSiteLocalAddress() ) { return a6; } } } return null; }); return address == null ? 0 : address.getScopeId(); }
private static void addPossibleAddress(Inet6Address inet6Address, Deque<Inet6Address> possibleAddresses, NetworkInterface ni) throws UnknownHostException { Enumeration<InetAddress> addresses = ni.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress address = addresses.nextElement(); if (address instanceof Inet4Address) { continue; } if (inet6Address.isLinkLocalAddress() && address.isLinkLocalAddress() || inet6Address.isSiteLocalAddress() && address.isSiteLocalAddress()) { final Inet6Address newAddress = Inet6Address.getByAddress(null, inet6Address.getAddress(), ((Inet6Address) address).getScopeId()); possibleAddresses.addFirst(newAddress); } } }
private static void addPossibleAddress(Inet6Address inet6Address, Deque<Inet6Address> possibleAddresses, NetworkInterface ni) throws UnknownHostException { Enumeration<InetAddress> addresses = ni.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress address = addresses.nextElement(); if (address instanceof Inet4Address) { continue; } if (inet6Address.isLinkLocalAddress() && address.isLinkLocalAddress() || inet6Address.isSiteLocalAddress() && address.isSiteLocalAddress()) { final Inet6Address newAddress = Inet6Address.getByAddress(null, inet6Address.getAddress(), ((Inet6Address) address).getScopeId()); possibleAddresses.addFirst(newAddress); } } }
public static int getScopeId(NetworkInterface networkInterface, InetAddress compareWith) { Assert.checkNotNullParam("networkInterface", networkInterface); Inet6Address cw6 = compareWith instanceof Inet6Address ? (Inet6Address) compareWith : null; Inet6Address address = doPrivileged((PrivilegedAction<Inet6Address>) () -> { final Enumeration<InetAddress> addresses = networkInterface.getInetAddresses(); while (addresses.hasMoreElements()) { final InetAddress a = addresses.nextElement(); if (a instanceof Inet6Address) { final Inet6Address a6 = (Inet6Address) a; if (cw6 == null || a6.isLinkLocalAddress() == cw6.isLinkLocalAddress() && a6.isSiteLocalAddress() == cw6.isSiteLocalAddress() ) { return a6; } } } return null; }); return address == null ? 0 : address.getScopeId(); }
public static Collection<Inet6Address> getPossibleInetAddressesFor(final Inet6Address inet6Address) { if ((!inet6Address.isSiteLocalAddress() && !inet6Address.isLinkLocalAddress()) || inet6Address.getScopeId() > 0 || inet6Address.getScopedInterface() != null) { return Collections.singleton(inet6Address); } LinkedList<Inet6Address> possibleAddresses = new LinkedList<Inet6Address>(); try { Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface ni = interfaces.nextElement(); addPossibleAddress(inet6Address, possibleAddresses, ni); } } catch (IOException ignored) { ignore(ignored); } if (possibleAddresses.isEmpty()) { throw new IllegalArgumentException("Could not find a proper network interface" + " to connect to " + inet6Address); } return possibleAddresses; }
public static Collection<Inet6Address> getPossibleInetAddressesFor(final Inet6Address inet6Address) { if ((!inet6Address.isSiteLocalAddress() && !inet6Address.isLinkLocalAddress()) || inet6Address.getScopeId() > 0 || inet6Address.getScopedInterface() != null) { return Collections.singleton(inet6Address); } LinkedList<Inet6Address> possibleAddresses = new LinkedList<Inet6Address>(); try { Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface ni = interfaces.nextElement(); addPossibleAddress(inet6Address, possibleAddresses, ni); } } catch (IOException ignored) { ignore(ignored); } if (possibleAddresses.isEmpty()) { throw new IllegalArgumentException("Could not find a proper network interface" + " to connect to " + inet6Address); } return possibleAddresses; }
public static Inet6Address getInetAddressFor(final Inet6Address inetAddress, String scope) throws UnknownHostException, SocketException { if (inetAddress.isLinkLocalAddress() || inetAddress.isSiteLocalAddress()) { final char[] chars = scope.toCharArray(); boolean numeric = true; for (char c : chars) { if (!Character.isDigit(c)) { numeric = false; break; } } if (numeric) { return Inet6Address.getByAddress(null, inetAddress.getAddress(), Integer.parseInt(scope)); } else { return Inet6Address.getByAddress(null, inetAddress.getAddress(), NetworkInterface.getByName(scope)); } } return inetAddress; }
public static Inet6Address getInetAddressFor(final Inet6Address inetAddress, String scope) throws UnknownHostException, SocketException { if (inetAddress.isLinkLocalAddress() || inetAddress.isSiteLocalAddress()) { final char[] chars = scope.toCharArray(); boolean numeric = true; for (char c : chars) { if (!Character.isDigit(c)) { numeric = false; break; } } if (numeric) { return Inet6Address.getByAddress(null, inetAddress.getAddress(), Integer.parseInt(scope)); } else { return Inet6Address.getByAddress(null, inetAddress.getAddress(), NetworkInterface.getByName(scope)); } } return inetAddress; }
Inet6Address dstAddr = (Inet6Address)dst.getAddress(); if(srcAddr.isLinkLocalAddress() != dstAddr.isLinkLocalAddress())