freebsd-dev/sys/netinet
Robert Watson dd5a318ba3 Introduce in_multi_mtx, which will protect IPv4-layer multicast address
lists, as well as accessor macros.  For now, this is a recursive mutex
due code sequences where IPv4 multicast calls into IGMP calls into
ip_output(), which then tests for a multicast forwarding case.

For support macros in in_var.h to check multicast address lists, assert
that in_multi_mtx is held.

Acquire in_multi_mtx around iteration over the IPv4 multicast address
lists, such as in ip_input() and ip_output().

Acquire in_multi_mtx when manipulating the IPv4 layer multicast addresses,
as well as over the manipulation of ifnet multicast address lists in order
to keep the two layers in sync.

Lock down accesses to IPv4 multicast addresses in IGMP, or assert the
lock when performing IGMP join/leave events.

Eliminate spl's associated with IPv4 multicast addresses, portions of
IGMP that weren't previously expunged by IGMP locking.

Add in_multi_mtx, igmp_mtx, and if_addr_mtx lock order to hard-coded
lock order in WITNESS, in that order.

Problem reported by:	Ed Maste <emaste at phaedrus dot sandvine dot ca>
MFC after:		10 days
2005-08-03 19:29:47 +00:00
..
libalias Libalias incorrectly applies proxy rules to the global divert 2005-06-27 22:21:42 +00:00
accf_data.c
accf_http.c
icmp6.h scope cleanup. with this change 2005-07-25 12:31:43 +00:00
icmp_var.h
if_atm.c
if_atm.h
if_ether.c Add hooks into the networking layer to support if_bridge. This changes struct 2005-06-05 03:13:13 +00:00
if_ether.h
igmp_var.h
igmp.c Introduce in_multi_mtx, which will protect IPv4-layer multicast address 2005-08-03 19:29:47 +00:00
igmp.h
in_cksum.c
in_gif.c Fix IP(v6) over IP tunneling most likely broken with ifnet changes. 2005-06-20 08:39:30 +00:00
in_gif.h
in_pcb.c Remove no-op spl references in in_pcb.c, since in_pcb locking has been 2005-07-19 12:24:27 +00:00
in_pcb.h
in_proto.c Export pfsyncstats via sysctl "net.inet.pfsync" in order to print them with 2005-07-14 22:22:51 +00:00
in_rmx.c
in_systm.h
in_var.h Introduce in_multi_mtx, which will protect IPv4-layer multicast address 2005-08-03 19:29:47 +00:00
in.c Introduce in_multi_mtx, which will protect IPv4-layer multicast address 2005-08-03 19:29:47 +00:00
in.h
ip6.h move RFC3542 related definitions into ip6.h. 2005-07-20 10:30:52 +00:00
ip_carp.c include netinet6/scope6_var.h. 2005-07-25 12:36:43 +00:00
ip_carp.h
ip_divert.c
ip_divert.h
ip_dummynet.c Add dummynet(4) support to if_bridge, this code is largely based on bridge.c. 2005-06-10 01:25:22 +00:00
ip_dummynet.h Add dummynet(4) support to if_bridge, this code is largely based on bridge.c. 2005-06-10 01:25:22 +00:00
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_fastfwd.c Misc spelling and/or English fixes in comments. 2005-07-23 00:59:13 +00:00
ip_fw2.c include scope6_var.h for in6_clearscope(). 2005-07-26 00:19:58 +00:00
ip_fw_pfil.c
ip_fw.h Add support for IPv4 only rules to IPFW2 now that it supports IPv6 as well. 2005-06-03 01:10:28 +00:00
ip_gre.c Add support for IPv6 over GRE [1]. PR kern/80340 includes the 2005-08-01 08:14:21 +00:00
ip_gre.h
ip_icmp.c
ip_icmp.h
ip_id.c
ip_input.c Introduce in_multi_mtx, which will protect IPv4-layer multicast address 2005-08-03 19:29:47 +00:00
ip_mroute.c Add back missing copyright and license statement. This is identical 2005-06-23 18:42:58 +00:00
ip_mroute.h
ip_output.c Introduce in_multi_mtx, which will protect IPv4-layer multicast address 2005-08-03 19:29:47 +00:00
ip_var.h Check the alignment of the IP header before passing the packet up to the 2005-07-02 23:13:31 +00:00
ip.h
ipprotosw.h
pim_var.h
pim.h
raw_ip.c
tcp_debug.c
tcp_debug.h
tcp_fsm.h
tcp_hostcache.c
tcp_input.c Fix for a bug in newreno partial ack handling where if a large amount 2005-07-05 19:23:02 +00:00
tcp_output.c
tcp_reass.c Fix for a bug in newreno partial ack handling where if a large amount 2005-07-05 19:23:02 +00:00
tcp_sack.c - Postpone SACK option processing until after PAWS checks. SACK option 2005-06-27 22:27:42 +00:00
tcp_seq.h
tcp_subr.c recover the line which was wrongly disappeared during scope cleanup. 2005-08-01 12:08:49 +00:00
tcp_syncache.c Remove no-op spl's and most comment references to spls, as TCP locking 2005-07-19 12:21:26 +00:00
tcp_timer.c Remove no-op spl's and most comment references to spls, as TCP locking 2005-07-19 12:21:26 +00:00
tcp_timer.h
tcp_timewait.c recover the line which was wrongly disappeared during scope cleanup. 2005-08-01 12:08:49 +00:00
tcp_usrreq.c scope cleanup. with this change 2005-07-25 12:31:43 +00:00
tcp_var.h - Postpone SACK option processing until after PAWS checks. SACK option 2005-06-27 22:27:42 +00:00
tcp.h
tcpip.h
udp_usrreq.c
udp_var.h
udp.h