diff --git a/sys/netinet6/in6_mcast.c b/sys/netinet6/in6_mcast.c --- a/sys/netinet6/in6_mcast.c +++ b/sys/netinet6/in6_mcast.c @@ -374,9 +374,18 @@ IN6_MULTI_LIST_LOCK(); IF_ADDR_WLOCK(ifp); NET_EPOCH_ENTER(et); - inm = in6m_lookup_locked(ifp, group); + /* + * Does ifp support IPv6 multicasts? + */ + if (ifp->if_afdata[AF_INET6] == NULL) + error = ENODEV; + else + inm = in6m_lookup_locked(ifp, group); NET_EPOCH_EXIT(et); + if (error != 0) + goto out_locked; + if (inm != NULL) { /* * If we already joined this group, just bump the