Do not treat loopback interfaces as p2p interfaces and create only
authormpi <mpi@openbsd.org>
Mon, 20 Apr 2015 09:07:42 +0000 (09:07 +0000)
committermpi <mpi@openbsd.org>
Mon, 20 Apr 2015 09:07:42 +0000 (09:07 +0000)
commit6c41171ac3f356768bb9a72ef5bbea401d598e94
treeb4e0348fc105fa159659e2d61b0e18a9242bc906
parent9ea9b1e7b5bc976440c9fdc976fd4ae72d6298c0
Do not treat loopback interfaces as p2p interfaces and create only
one route to "::1".

Due to a clever BSD trick, the `ifa_dstaddr` field of addresses on
IFF_LOOPBACK ifps is set to the same value that `ifa_addr`.  That's
why filtering for broadcast addresses is so complicated, because
guess what, `ifa_broadaddr` is the same as `ifa_dstaddr`!

Sadly our IPv6 code was "only" checking for `ifa_dstaddr` without
looking if the ifa was attached to a IFF_POINTOTPOINT interface.
So it always tried to create two routes to "::1" and, with the
recent RTF_LOCAL work, succeed.

You should now have only one local route to "::1".

 ::1             ::1         UHl       14  0 32768     1 lo0
-::1             ::1         UH         0  0 32768     4 lo0

ok henning@
sys/netinet6/in6.c