Skip site navigation (1)Skip section navigation (2)
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>