<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, May 14, 2016 at 5:50 AM, Tore Anderson <span dir="ltr">&lt;<a href="mailto:tore@fud.no">tore@fud.no</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div>&gt; You&#39;re forgetting that the device might have an an IPv6 address on the<br>
&gt; cellular interface, and an OS that uses the weak host model like Linux is<br>
&gt; perfectly happy to use the cellular interface&#39;s IPv6 address to send<br>
&gt; packets on the wifi interface.<br>
<br>
</div></div>Hmm...so Android doesn&#39;t simulate a strong host model using<br>
per-interface network namespaces or private routing tables with<br>
associated policy rules?<br></blockquote><div><br></div><div>It uses per-interface routing tables, but that by itself is not sufficient to fix this particular problem. The Linux kernel implements RFC6724 with the weak host model and rule 2 is higher priority than rule 5. In order to fix this problem you need to restrict the RFC6724 candidate set to addresses that are only on the interface. We only fixed that in <a href="https://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git/commit/?id=3985e8a3611a93bb36789f65db862e5700aab65e">this commit</a> which I think only went into 6.0. The strong model is RECOMMENDED by RFC 6724, but not required:</div><div><br></div><div><div>   It is RECOMMENDED that the candidate source addresses be the set of</div><div>   unicast addresses assigned to the interface that will be used to send</div><div> <br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">If not, how do you avoid running into BCP38 issues when both the<br>
cellular and wifi interfaces are connected and both have active global<br>
IPv6 addresses? (That is, the cellular address being used as the source<br>
in packets sent to the wifi default router or vice versa?)<br></blockquote><div><br></div><div>When both those interfaces correctly have either no IPv6 configuration or complete IPv6 configuration, that problem is easier to solve because RFC 6724 will do the right thing. This was already working in 5.0. (Prior to 5.0 Android did not support two interfaces with default routes being up at the same time.)</div></div></div></div>