android: Retrigger a roam event if reportedly connected but no source address found
authorTobias Brunner <tobias@strongswan.org>
Tue, 21 Jul 2015 09:14:53 +0000 (11:14 +0200)
committerTobias Brunner <tobias@strongswan.org>
Tue, 28 Jul 2015 11:27:33 +0000 (13:27 +0200)
commit030bcee1b0f8cebce7cce1a87e33b98f3e1ed784
treeb406c47bf065c5a67a35ec437e1db23c6851b021
parent41b59a3443a862825d9b59d613b9fa27bc4174da
android: Retrigger a roam event if reportedly connected but no source address found

In dual-stack environments the IPv6 connectivity (via autoconfiguration)
might be established before the IPv4 connectivity (via DHCP).  It seems
Android triggers the CONNECTIVITY_ACTION broadcast already when the first
family is fully configured.  At that time we might not be able to find an
IPv4 source address.  And since Android does not trigger the broadcast
again if IPv4 connectivity is established, the connection is broken
afterwards.

So we store the connectivity state and if we are reportedly connected but
still find no source address we trigger a roam event to recheck for an IPv4
address.  This will cause regular rechecks if a device enters an IPv6-only
network, but I guess that's rare (otherwise we could limit the number of
rechecks done between connectivity changes).
src/frontends/android/jni/libandroidbridge/kernel/android_net.c