Hi, route(8) sourceaddr is not used with p2p interfaces. My initial fear was about tunnel interfaces but after some more testing, there is no need to be so.
Here is the diff: Index: sbin/route/route.8 =================================================================== RCS file: /cvs/src/sbin/route/route.8,v retrieving revision 1.93 diff -u -p -r1.93 route.8 --- sbin/route/route.8 30 Oct 2020 14:30:51 -0000 1.93 +++ sbin/route/route.8 2 Nov 2020 19:53:34 -0000 @@ -234,8 +234,6 @@ The preferred source will not be used wh .It destination is on-link .It -output interface is point-to-point -.It source address is assigned to a disabled interface .El .El Index: sys/netinet/in_pcb.c =================================================================== RCS file: /cvs/src/sys/netinet/in_pcb.c,v retrieving revision 1.250 diff -u -p -r1.250 in_pcb.c --- sys/netinet/in_pcb.c 29 Oct 2020 21:15:27 -0000 1.250 +++ sys/netinet/in_pcb.c 2 Nov 2020 19:53:36 -0000 @@ -960,12 +960,10 @@ in_pcbselsrc(struct in_addr **insrc, str /* * Use preferred source address if : * - destination is not onlink - * - output interface is not PtoP * - preferred source addresss is set * - output interface is UP */ - if ((ro->ro_rt && !(ro->ro_rt->rt_flags & RTF_LLINFO)) && - (ia && !(ia->ia_ifp->if_flags & IFF_POINTOPOINT))) { + if (ro->ro_rt && !(ro->ro_rt->rt_flags & RTF_LLINFO)) { ip4_source = rtable_getsource(rtableid, AF_INET); if (ip4_source != NULL) { struct ifaddr *ifa; Index: sys/netinet6/in6_src.c =================================================================== RCS file: /cvs/src/sys/netinet6/in6_src.c,v retrieving revision 1.82 diff -u -p -r1.82 in6_src.c --- sys/netinet6/in6_src.c 29 Oct 2020 21:15:27 -0000 1.82 +++ sys/netinet6/in6_src.c 2 Nov 2020 19:53:36 -0000 @@ -220,12 +220,10 @@ in6_pcbselsrc(struct in6_addr **in6src, /* * Use preferred source address if : * - destination is not onlink - * - output interface is not PtoP * - preferred source addresss is set * - output interface is UP */ - if ((ro->ro_rt && !(ro->ro_rt->rt_flags & RTF_LLINFO)) && - (ia6 && !(ia6->ia_ifp->if_flags & IFF_POINTOPOINT))) { + if (ro->ro_rt && !(ro->ro_rt->rt_flags & RTF_LLINFO)) { ip6_source = rtable_getsource(rtableid, AF_INET6); if (ip6_source != NULL) { struct ifaddr *ifa;