freebsd-nq/sys/net
Robert Watson c3b31afd92 Protect link layer network interface multicast address list manipulation
using ifp->if_addr_mtx:

- Initialize if_addr_mtx when ifnet is initialized.

- Destroy if_addr_mtx when ifnet is torn down.

- 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.

Problem reported by:	Ed Maste <emaste at phaedrus dot sandvine dot ca>
MFC after:		1 week
2005-08-02 23:23:26 +00:00
..
bpf_compat.h Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
bpf_filter.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
bpf.c Rather than hold a mutex over calls to SYSCTL_OUT allocate a 2005-07-26 17:21:56 +00:00
bpf.h additions from libpcap 0.9.1 release 2005-07-11 03:16:23 +00:00
bpfdesc.h Introduce new sysctl variable: net.bpf.stats. This sysctl variable can 2005-07-24 17:21:17 +00:00
bridge.c Check the alignment of the IP header before passing the packet up to the 2005-07-03 18:24:03 +00:00
bridge.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
bridgestp.c - Previously when broadcasting to N number of interfaces we would run pfil 2005-07-06 01:24:45 +00:00
bsd_comp.c Eliminate MAC entry point mac_create_mbuf_from_mbuf(), which is 2005-07-05 23:39:51 +00:00
ethernet.h add ETHERTYPE_PAE for EAPOL/802.1x 2004-10-05 19:28:52 +00:00
fddi.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
firewire.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_arc.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_arcsubr.c When allocating link layer ifnet address list entries in 2005-08-02 17:52:52 +00:00
if_arp.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_atm.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_atmsubr.c Lock down netnatm and mark as MPSAFE: 2005-07-18 16:55:46 +00:00
if_bridge.c We check that all the member interfaces have the same MTU on attach to the 2005-07-25 02:22:37 +00:00
if_bridgevar.h - Previously when broadcasting to N number of interfaces we would run pfil 2005-07-06 01:24:45 +00:00
if_clone.c o Move ifcr_count sanity check up and reject negative values before we 2005-02-24 13:14:41 +00:00
if_clone.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_disc.c Fix some long standing bugs in writing to the BPF device attached to 2005-06-26 18:11:11 +00:00
if_dl.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_ef.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_ethersubr.c When allocating link layer ifnet address list entries in 2005-08-02 17:52:52 +00:00
if_faith.c Fix some long standing bugs in writing to the BPF device attached to 2005-06-26 18:11:11 +00:00
if_fddisubr.c When allocating link layer ifnet address list entries in 2005-08-02 17:52:52 +00:00
if_fwsubr.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_gif.c scope cleanup. with this change 2005-07-25 12:31:43 +00:00
if_gif.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_gre.c Add support for IPv6 over GRE [1]. PR kern/80340 includes the 2005-08-01 08:14:21 +00:00
if_gre.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_iso88025subr.c When allocating link layer ifnet address list entries in 2005-08-02 17:52:52 +00:00
if_llc.h Add hooks into the networking layer to support if_bridge. This changes struct 2005-06-05 03:13:13 +00:00
if_loop.c Fix some long standing bugs in writing to the BPF device attached to 2005-06-26 18:11:11 +00:00
if_media.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_media.h Add CARP (Common Address Redundancy Protocol), which allows multiple 2005-02-22 13:04:05 +00:00
if_mib.c If we are going to 2005-05-06 02:50:00 +00:00
if_mib.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_ppp.c Eliminate MAC entry point mac_create_mbuf_from_mbuf(), which is 2005-07-05 23:39:51 +00:00
if_ppp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_pppvar.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_sl.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_slvar.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_sppp.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_spppfr.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_spppsubr.c scope cleanup. with this change 2005-07-25 12:31:43 +00:00
if_stf.c Fix some long standing bugs in writing to the BPF device attached to 2005-06-26 18:11:11 +00:00
if_stf.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_tap.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_tap.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_tapvar.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_tun.c Fix some long standing bugs in writing to the BPF device attached to 2005-06-26 18:11:11 +00:00
if_tun.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_types.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_var.h Protect link layer network interface multicast address list manipulation 2005-08-02 23:23:26 +00:00
if_vlan_var.h Allocate the M_VLANTAG m_pkthdr flag, and use it to indicate that 2005-02-18 22:31:19 +00:00
if_vlan.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if.c Protect link layer network interface multicast address list manipulation 2005-08-02 23:23:26 +00:00
if.h Add hooks into the networking layer to support if_bridge. This changes struct 2005-06-05 03:13:13 +00:00
iso88025.h Add #defines for control fields and address bits. 2005-04-13 08:14:14 +00:00
net_osdep.h we are not OLD_BPF system. 2005-01-11 07:08:15 +00:00
netisr.c Correctly unregister a netisr by clearing the ni->ni_queue field to NULL as 2004-10-11 20:01:43 +00:00
netisr.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
pfil.c Fix semantics of ph_busy_count == -1 to pass instead of block. 2005-05-23 17:07:16 +00:00
pfil.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
pfkeyv2.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_comp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_deflate.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_defs.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ppp_tty.c Use m_uiotombuf() instead of own implementation. This is not just 2005-07-01 15:22:47 +00:00
radix.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
radix.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
raw_cb.c Acquire the raw_cb mutex around LIST_REMOVE() of a raw socket control 2005-01-24 22:56:09 +00:00
raw_cb.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
raw_usrreq.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
route.c Require gateways for routes to be of the same address family as the 2005-06-28 23:32:22 +00:00
route.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
rtsock.c Fix for PR 82974. We were not checking that the route looked up in 2005-07-15 09:18:34 +00:00
slcompress.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
slcompress.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
slip.h Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
zlib.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
zlib.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00