Date: Sat, 20 Aug 2005 21:32:09 +0000 (UTC) From: Robert Watson <rwatson@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/netinet ip_output.c Message-ID: <200508202132.j7KLW9eY075585@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
rwatson 2005-08-20 21:32:09 UTC FreeBSD src repository Modified files: (Branch: RELENG_6) sys/netinet ip_output.c Log: Merge ip_output.c:1.244 from HEAD to RELENG_6: 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. Approved by: re (scottl) Revision Changes Path 1.242.2.1 +58 -33 src/sys/netinet/ip_output.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508202132.j7KLW9eY075585>