cvs commit: src/sys/netinet ip_output.c
Robert Watson
rwatson at FreeBSD.org
Tue Aug 9 17:19:22 GMT 2005
rwatson 2005-08-09 17:19:22 UTC
FreeBSD src repository
Modified files:
sys/netinet ip_output.c
Log:
Add helper function ip_findmoptions(), which accepts an inpcb, and attempts
to atomically return either an existing set of IP multicast options for the
PCB, or a newlly allocated set with default values. The inpcb is returned
locked. This function may sleep.
Call ip_moptions() to acquire a reference to a PCB's socket options, and
perform the update of the options while holding the PCB lock. Release the
lock before returning.
Remove garbage collection of multicast options when values return to the
default, as this complicates locking substantially. Most applications
allocate a socket either to be multicast, or not, and don't tend to keep
around sockets that have previously been used for multicast, then used for
unicast.
This closes a number of race conditions involving multiple threads or
processes modifying the IP multicast state of a socket simultaenously.
MFC after: 7 days
Revision Changes Path
1.244 +58 -33 src/sys/netinet/ip_output.c
More information about the cvs-src
mailing list