cvs commit: src/sys/netinet ip_output.c

Robert Watson rwatson at FreeBSD.org
Sat Aug 20 21:32:09 GMT 2005


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


More information about the cvs-all mailing list