> BTW, I think that Linux's current IPv6 code is not enough to work with
> multi-addressed network, because of weakness in source address selection.
The patch is good and correct, but the solution is bad.
We may make this thing in IPv4 because function inet_select_addr()
is not in data path; selected source addresses are stored in routing tables.
Correct solution would cache once found source address
in IPv6 routing table, probably, cloning route, if it is required.
BTW we have to make this thing in IPv4 because by historical reasons
internet routing is very messy and smart source selection is required
to route replies back. Moreover, by the same historical reasons, almost
all IP apps are confused, when loopback address appears as source
address of packet destined to some address of the host.
Emerging IPv6 principles should not inherit all of this brain damage,
so that the problem is present but it is not critical.