When I changed rt_ifp to no longer point to lo0 for RTF_LOCAL routes I forgot the chunk below and introduced a regression.
Checking for (rt_ifp->if_flags & IFF_LOOPBACK) was the old way to check for RTF_LOCAL. ok? Index: netinet6/in6_src.c =================================================================== RCS file: /cvs/src/sys/netinet6/in6_src.c,v retrieving revision 1.66 diff -u -p -r1.66 in6_src.c --- netinet6/in6_src.c 24 Oct 2015 12:33:16 -0000 1.66 +++ netinet6/in6_src.c 24 Oct 2015 14:09:00 -0000 @@ -396,8 +396,8 @@ in6_selectroute(struct sockaddr_in6 *dst if (opts && opts->ip6po_pktinfo && opts->ip6po_pktinfo->ipi6_ifindex) { if (ro->ro_rt != NULL && - (ro->ro_rt->rt_ifp->if_flags & IFF_LOOPBACK) == 0 && - ro->ro_rt->rt_ifp->if_index != + !ISSET(ro->ro_rt->rt_flags, RTF_LOCAL) && + ro->ro_rt->rt_ifidx != opts->ip6po_pktinfo->ipi6_ifindex) { return (NULL); }