diff options
-rw-r--r-- | sys/netinet/ip_mroute.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c index 612e41232ff..38b63812f22 100644 --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ip_mroute.c,v 1.110 2017/02/09 15:36:46 rzalamena Exp $ */ +/* $OpenBSD: ip_mroute.c,v 1.111 2017/03/14 10:27:10 rzalamena Exp $ */ /* $NetBSD: ip_mroute.c,v 1.85 2004/04/26 01:31:57 matt Exp $ */ /* @@ -157,11 +157,14 @@ mfc_find(struct ifnet *ifp, struct in_addr *origin, struct in_addr *group, if (rt == NULL) return (NULL); - /* Return first ocurrence if interface is not specified. */ - if (ifp == NULL) - return (rt); - do { + /* Don't consider non multicast routes. */ + if (ISSET(rt->rt_flags, RTF_HOST | RTF_MULTICAST) != + (RTF_HOST | RTF_MULTICAST)) + continue; + /* Return first occurrence if interface is not specified. */ + if (ifp == NULL) + return (rt); if (rt->rt_ifidx == ifp->if_index) return (rt); } while ((rt = rtable_iterate(rt)) != NULL); |