Index: net/route.c =================================================================== RCS file: /cvs/src/sys/net/route.c,v retrieving revision 1.379 diff -u -p -r1.379 route.c --- net/route.c 23 Nov 2018 16:24:11 -0000 1.379 +++ net/route.c 7 Feb 2019 01:54:11 -0000 @@ -1042,7 +1042,7 @@ rt_ifa_add(struct ifaddr *ifa, int flags memset(&info, 0, sizeof(info)); info.rti_ifa = ifa; - info.rti_flags = flags | RTF_MPATH; + info.rti_flags = flags; info.rti_info[RTAX_DST] = dst; if (flags & RTF_LLINFO) info.rti_info[RTAX_GATEWAY] = sdltosa(ifp->if_sadl); @@ -1175,7 +1175,7 @@ rt_ifa_addlocal(struct ifaddr *ifa) flags |= RTF_LLINFO; /* If there is no local entry, allocate one. */ - rt = rtalloc(ifa->ifa_addr, 0, ifa->ifa_ifp->if_rdomain); + rt = rtalloc(ifa->ifa_addr, RTF_MPATH, ifa->ifa_ifp->if_rdomain); if (rt == NULL || ISSET(rt->rt_flags, flags) != flags) error = rt_ifa_add(ifa, flags, ifa->ifa_addr); rtfree(rt); Index: netinet/in.c =================================================================== RCS file: /cvs/src/sys/netinet/in.c,v retrieving revision 1.160 diff -u -p -r1.160 in.c --- netinet/in.c 11 Jul 2018 21:18:23 -0000 1.160 +++ netinet/in.c 7 Feb 2019 01:54:11 -0000 @@ -694,7 +694,7 @@ in_purgeaddr(struct ifaddr *ifa) int in_addhost(struct in_ifaddr *ia, struct sockaddr_in *dst) { - return rt_ifa_add(&ia->ia_ifa, RTF_HOST, sintosa(dst)); + return rt_ifa_add(&ia->ia_ifa, RTF_HOST | RTF_MPATH, sintosa(dst)); } int @@ -712,12 +712,13 @@ in_insert_prefix(struct in_ifaddr *ia) struct ifaddr *ifa = &ia->ia_ifa; int error; - error = rt_ifa_add(ifa, RTF_CLONING | RTF_CONNECTED, ifa->ifa_addr); + error = rt_ifa_add(ifa, RTF_CLONING | RTF_CONNECTED | RTF_MPATH, + ifa->ifa_addr); if (error) return (error); if (ia->ia_broadaddr.sin_addr.s_addr != 0) - error = rt_ifa_add(ifa, RTF_HOST | RTF_BROADCAST, + error = rt_ifa_add(ifa, RTF_HOST | RTF_BROADCAST | RTF_MPATH, ifa->ifa_broadaddr); return (error); Index: netinet/ip_mroute.c =================================================================== RCS file: /cvs/src/sys/netinet/ip_mroute.c,v retrieving revision 1.123 diff -u -p -r1.123 ip_mroute.c --- netinet/ip_mroute.c 10 Oct 2018 11:46:59 -0000 1.123 +++ netinet/ip_mroute.c 7 Feb 2019 01:54:11 -0000 @@ -1308,7 +1308,7 @@ rt_mcast_add(struct ifnet *ifp, struct s return (NULL); } - rv = rt_ifa_add(ifa, RTF_HOST | RTF_MULTICAST, group); + rv = rt_ifa_add(ifa, RTF_HOST | RTF_MULTICAST | RTF_MPATH, group); if (rv != 0) { DPRINTF("rt_ifa_add failed (%d)", rv); return (NULL); Index: netinet6/in6.c =================================================================== RCS file: /cvs/src/sys/netinet6/in6.c,v retrieving revision 1.228 diff -u -p -r1.228 in6.c --- netinet6/in6.c 5 Oct 2018 07:06:09 -0000 1.228 +++ netinet6/in6.c 7 Feb 2019 01:54:11 -0000 @@ -376,7 +376,8 @@ in6_ioctl_change_ifaddr(u_long cmd, cadd break; /* No need to install a connected route. */ } - error = rt_ifa_add(&ia6->ia_ifa, RTF_CLONING | RTF_CONNECTED, + error = rt_ifa_add(&ia6->ia_ifa, + RTF_CLONING | RTF_CONNECTED | RTF_MPATH, ia6->ia_ifa.ifa_addr); if (error) { in6_purgeaddr(&ia6->ia_ifa); @@ -982,7 +983,8 @@ in6_ifinit(struct ifnet *ifp, struct in6 if ((ifp->if_flags & IFF_POINTOPOINT) && plen == 128 && ia6->ia_dstaddr.sin6_family == AF_INET6) { ifa = &ia6->ia_ifa; - error = rt_ifa_add(ifa, RTF_HOST, ifa->ifa_dstaddr); + error = rt_ifa_add(ifa, RTF_HOST | RTF_MPATH, + ifa->ifa_dstaddr); if (error != 0) return (error); ia6->ia_flags |= IFA_ROUTE; Index: netinet6/in6_ifattach.c =================================================================== RCS file: /cvs/src/sys/netinet6/in6_ifattach.c,v retrieving revision 1.111 diff -u -p -r1.111 in6_ifattach.c --- netinet6/in6_ifattach.c 5 Oct 2018 07:06:09 -0000 1.111 +++ netinet6/in6_ifattach.c 7 Feb 2019 01:54:11 -0000 @@ -374,7 +374,7 @@ in6_ifattach_linklocal(struct ifnet *ifp return (0); /* No need to install a connected route. */ } - flags = RTF_CONNECTED; + flags = RTF_CONNECTED | RTF_MPATH; if ((ifp->if_flags & IFF_POINTOPOINT) == 0) flags |= RTF_CLONING; Index: netinet6/ip6_mroute.c =================================================================== RCS file: /cvs/src/sys/netinet6/ip6_mroute.c,v retrieving revision 1.116 diff -u -p -r1.116 ip6_mroute.c --- netinet6/ip6_mroute.c 10 Oct 2018 11:46:59 -0000 1.116 +++ netinet6/ip6_mroute.c 7 Feb 2019 01:54:11 -0000 @@ -1241,7 +1241,7 @@ mrt6_mcast6_add(struct ifnet *ifp, struc return NULL; } - rv = rt_ifa_add(ifa, RTF_HOST | RTF_MULTICAST, group); + rv = rt_ifa_add(ifa, RTF_HOST | RTF_MULTICAST | RTF_MPATH, group); if (rv != 0) { DPRINTF("rt_ifa_add failed %d", rv); return NULL;