You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently the posix version of getifaddrs() has 2 paths:
For Android with ndk version < 24, it calls getifaddrs that's specific to Android.
For all other situations, it uses Envoy's default getifaddrs() impl.
It is discovered that the default getifaddrs() doesn't quite work with Android with ndk level >=24. It's not able to send traffic in IPV6 but works fine in IPV4.
This is not an issue now since all Envoy-mobile applications are built with <24 ndk. But it's an ticking bomb that will go off with future toolchain upgrade.
It's verified that the <24 code path also works with >=24 build. Thus the easiest solution is to remove the ANDROID_API < 24 guard and jus run the Android specific getifaddrs() for all Android ndk versions.
The text was updated successfully, but these errors were encountered:
When running getifaddrs on the backward compatible Android path, the result I get is [fe80::f8f3:11ff:fef4:25a8]:0
On the generic path, I get [fe80::f8f3:11ff:fef4:25a8%20]:0.
The difference here is that the latter contains a scope id that's specific to link-local IPV6 address.
I did some hacking of stripping the scope id from the generic path result, and traffic goes back to normal.
I think the root issue is likely that Envoy-mobile is not able to handle outbound traffic with scope id on Android.
Commit Message: Remove scope id from ipv6 address in getLocalAddress
Additional Description: This fixes the issue where Envoy-mobile fails to send out any packet on ipv6.
Risk Level: Low
Testing: unit tests
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: n/a
Fixes#25326
Signed-off-by: Renjie Tang <renjietang@google.com>
Currently the posix version of getifaddrs() has 2 paths:
For Android with ndk version < 24, it calls getifaddrs that's specific to Android.
For all other situations, it uses Envoy's default getifaddrs() impl.
It is discovered that the default getifaddrs() doesn't quite work with Android with ndk level >=24. It's not able to send traffic in IPV6 but works fine in IPV4.
This is not an issue now since all Envoy-mobile applications are built with <24 ndk. But it's an ticking bomb that will go off with future toolchain upgrade.
It's verified that the <24 code path also works with >=24 build. Thus the easiest solution is to remove the ANDROID_API < 24 guard and jus run the Android specific getifaddrs() for all Android ndk versions.
The text was updated successfully, but these errors were encountered: