svn commit: r353357 - head/sys/netinet
Gleb Smirnoff
glebius at FreeBSD.org
Wed Oct 9 17:03:21 UTC 2019
Author: glebius
Date: Wed Oct 9 17:03:20 2019
New Revision: 353357
URL: https://svnweb.freebsd.org/changeset/base/353357
Log:
Revert most of the multicast changes from r353292. This needs a more
accurate approach.
Modified:
head/sys/netinet/in_mcast.c
head/sys/netinet/ip_output.c
Modified: head/sys/netinet/in_mcast.c
==============================================================================
--- head/sys/netinet/in_mcast.c Wed Oct 9 17:02:28 2019 (r353356)
+++ head/sys/netinet/in_mcast.c Wed Oct 9 17:03:20 2019 (r353357)
@@ -388,12 +388,14 @@ inm_lookup_locked(struct ifnet *ifp, const struct in_a
struct in_multi *
inm_lookup(struct ifnet *ifp, const struct in_addr ina)
{
+ struct epoch_tracker et;
struct in_multi *inm;
IN_MULTI_LIST_LOCK_ASSERT();
- NET_EPOCH_ASSERT();
+ NET_EPOCH_ENTER(et);
inm = inm_lookup_locked(ifp, ina);
+ NET_EPOCH_EXIT(et);
return (inm);
}
@@ -1198,13 +1200,10 @@ int
in_joingroup(struct ifnet *ifp, const struct in_addr *gina,
/*const*/ struct in_mfilter *imf, struct in_multi **pinm)
{
- struct epoch_tracker et;
int error;
IN_MULTI_LOCK();
- NET_EPOCH_ENTER(et);
error = in_joingroup_locked(ifp, gina, imf, pinm);
- NET_EPOCH_EXIT(et);
IN_MULTI_UNLOCK();
return (error);
@@ -1227,7 +1226,6 @@ in_joingroup_locked(struct ifnet *ifp, const struct in
struct in_multi *inm;
int error;
- NET_EPOCH_ASSERT();
IN_MULTI_LOCK_ASSERT();
IN_MULTI_LIST_UNLOCK_ASSERT();
@@ -1285,14 +1283,11 @@ in_joingroup_locked(struct ifnet *ifp, const struct in
int
in_leavegroup(struct in_multi *inm, /*const*/ struct in_mfilter *imf)
{
- struct epoch_tracker et;
int error;
- NET_EPOCH_ENTER(et);
IN_MULTI_LOCK();
error = in_leavegroup_locked(inm, imf);
IN_MULTI_UNLOCK();
- NET_EPOCH_EXIT(et);
return (error);
}
@@ -1316,7 +1311,6 @@ in_leavegroup_locked(struct in_multi *inm, /*const*/ s
struct in_mfilter timf;
int error;
- NET_EPOCH_ASSERT();
IN_MULTI_LOCK_ASSERT();
IN_MULTI_LIST_UNLOCK_ASSERT();
@@ -1818,11 +1812,15 @@ inp_getmoptions(struct inpcb *inp, struct sockopt *sop
if (!in_nullhost(imo->imo_multicast_addr)) {
mreqn.imr_address = imo->imo_multicast_addr;
} else if (ifp != NULL) {
+ struct epoch_tracker et;
+
mreqn.imr_ifindex = ifp->if_index;
+ NET_EPOCH_ENTER(et);
IFP_TO_IA(ifp, ia, &in_ifa_tracker);
if (ia != NULL)
mreqn.imr_address =
IA_SIN(ia)->sin_addr;
+ NET_EPOCH_EXIT(et);
}
}
INP_WUNLOCK(inp);
Modified: head/sys/netinet/ip_output.c
==============================================================================
--- head/sys/netinet/ip_output.c Wed Oct 9 17:02:28 2019 (r353356)
+++ head/sys/netinet/ip_output.c Wed Oct 9 17:03:20 2019 (r353357)
@@ -1079,7 +1079,6 @@ int
ip_ctloutput(struct socket *so, struct sockopt *sopt)
{
struct inpcb *inp = sotoinpcb(so);
- struct epoch_tracker et;
int error, optval;
#ifdef RSS
uint32_t rss_bucket;
@@ -1518,9 +1517,7 @@ ip_ctloutput(struct socket *so, struct sockopt *sopt)
case IP_MULTICAST_TTL:
case IP_MULTICAST_LOOP:
case IP_MSFILTER:
- NET_EPOCH_ENTER(et);
error = inp_getmoptions(inp, sopt);
- NET_EPOCH_EXIT(et);
break;
#if defined(IPSEC) || defined(IPSEC_SUPPORT)
More information about the svn-src-all
mailing list