diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -686,11 +686,7 @@ ip_mrouter_init(struct socket *so, int version) { - CTR3(KTR_IPMF, "%s: so_type %d, pr_protocol %d", __func__, - so->so_type, so->so_proto->pr_protocol); - - if (so->so_type != SOCK_RAW || so->so_proto->pr_protocol != IPPROTO_IGMP) - return EOPNOTSUPP; + CTR2(KTR_IPMF, "%s: so %p", __func__, so); if (version != 1) return ENOPROTOOPT; diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c --- a/sys/netinet/raw_ip.c +++ b/sys/netinet/raw_ip.c @@ -693,6 +693,8 @@ error = priv_check(curthread, PRIV_NETINET_MROUTE); if (error != 0) return (error); + if (inp->inp_ip_p != IPPROTO_IGMP) + return (EOPNOTSUPP); error = ip_mrouter_get ? ip_mrouter_get(so, sopt) : EOPNOTSUPP; break;