diff options
author | rwatson <rwatson@FreeBSD.org> | 2005-08-09 17:19:21 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2005-08-09 17:19:21 +0000 |
commit | 693479e03f1711525db4d8009d23e685b7b0b61c (patch) | |
tree | 86f0480969f2d3b38dbd9e956dbe8f56db212480 /Makefile | |
parent | ff8809a26012612a57067d2c970daad79a900f30 (diff) | |
download | FreeBSD-src-693479e03f1711525db4d8009d23e685b7b0b61c.zip FreeBSD-src-693479e03f1711525db4d8009d23e685b7b0b61c.tar.gz |
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
Diffstat (limited to 'Makefile')
0 files changed, 0 insertions, 0 deletions