private static CharSequence getZone(Inet6Address inet6Address) { NetworkInterface networkInterface = inet6Address.getScopedInterface(); String zone = null; if(networkInterface == null) { int scopeId = inet6Address.getScopeId(); if(scopeId != 0) { zone = Integer.toString(scopeId); } } else { zone = networkInterface.getName(); } return zone; }
public static InetAddress fixScopeIdAndGetInetAddress(final InetAddress inetAddress) throws SocketException { if (!(inetAddress instanceof Inet6Address)) { return inetAddress; } if (!inetAddress.isLinkLocalAddress() && !inetAddress.isSiteLocalAddress()) { return inetAddress; } final Inet6Address inet6Address = (Inet6Address) inetAddress; if (inet6Address.getScopeId() > 0 || inet6Address.getScopedInterface() != null) { return inetAddress; } final Inet6Address resultInetAddress = findRealInet6Address(inet6Address); return resultInetAddress == null ? inetAddress : resultInetAddress; }
public static InetAddress fixScopeIdAndGetInetAddress(final InetAddress inetAddress) throws SocketException { if (!(inetAddress instanceof Inet6Address)) { return inetAddress; } if (!inetAddress.isLinkLocalAddress() && !inetAddress.isSiteLocalAddress()) { return inetAddress; } final Inet6Address inet6Address = (Inet6Address) inetAddress; if (inet6Address.getScopeId() > 0 || inet6Address.getScopedInterface() != null) { return inetAddress; } final Inet6Address resultInetAddress = findRealInet6Address(inet6Address); return resultInetAddress == null ? inetAddress : resultInetAddress; }
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; }