cvs commit: src/sys/net if.c if_var.h

Ed Maste emaste at FreeBSD.org
Tue Jan 3 14:42:59 PST 2006


emaste      2006-01-03 22:42:58 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_5)
    sys/net              if.c if_var.h 
  Log:
  Merge link layer mutlicast address list locking from HEAD to RELENG_5,
  with a few changes to preserve ABI compatibility.
  
  if_var.h:1.100:
    Add if_addr_mtx, a mutex to protect ifnet-related address lists.  Add
    accessor macros.
  
    Unlike FreeBSD 6 and HEAD, share a global mutex (instead of putting it
    in struct ifnet) to maintain ABI backwards compatibility.
  
  if_var.h:1.101:
    - Rename ifmaof_ifpforaddr() to if_findmulti(); assert if_addr_mtx.
      Staticize.
  
  if.c:1.239:
    Protect link layer network interface multicast address list manipulation
    using (global) if_addr_mtx:
  
    - Initialize if_addr_mtx in if_init().
  
    - Rename ifmaof_ifpforaddr() to if_findmulti(); assert if_addr_mtx.
      Staticize.
  
    - Extract ifmultiaddr allocation and initialization into if_allocmulti();
      accept a 'mflags' argument to indicate whether or not sleeping is
      permitted.  This centralizes error handling and address duplication.
  
    - Extract ifmultiaddr tear-down and deallocation in if_freemulti().
  
    - Re-structure if_addmulti() to hold if_addr_mtx around manipulation of
      the ifnet multicast address list and reference count manipulation.
      Make use of non-sleeping allocations.  Annotate the fact that we only
      generate routing socket events for explicit address addition, not
      implicit link layer address addition.
  
    - Re-structure if_delmulti() to hold if_addr_mtx around manipulation of
      the ifnet multicast address list and reference count manipulation.
      Annotate the lack of a routing socket event for implicit link layer
      address removal.
  
    - De-spl all and sundry.
  
  Approved by:    rwatson (mentor)
  
  Revision    Changes    Path
  1.199.2.20  +208 -119  src/sys/net/if.c
  1.84.2.8    +17 -1     src/sys/net/if_var.h


More information about the cvs-src mailing list