Accept any link-local IPv6 address.

This allows IPv6 to be used when providing an access point.
This commit is contained in:
akwizgran
2020-03-10 14:04:26 +00:00
parent e065d45d16
commit badc6da649
3 changed files with 63 additions and 67 deletions

View File

@@ -93,8 +93,8 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
Pair<InetAddress, Boolean> wifi = getWifiIpv4Address();
if (wifi == null) return emptyList();
if (ipv4) return singletonList(wifi.getFirst());
InetAddress slaac = getSlaacAddressForInterface(wifi.getFirst());
return slaac == null ? emptyList() : singletonList(slaac);
InetAddress ipv6 = getIpv6AddressForInterface(wifi.getFirst());
return ipv6 == null ? emptyList() : singletonList(ipv6);
}
/**
@@ -159,12 +159,12 @@ class AndroidLanTcpPlugin extends LanTcpPlugin {
}
@Nullable
private InetAddress getSlaacAddressForInterface(InetAddress wifi) {
private InetAddress getIpv6AddressForInterface(InetAddress wifi) {
try {
NetworkInterface iface = NetworkInterface.getByInetAddress(wifi);
if (iface == null) return null;
for (InetAddress addr : list(iface.getInetAddresses())) {
if (isSlaacAddress(addr)) return addr;
if (isIpv6LinkLocalAddress(addr)) return addr;
}
// No suitable address
return null;