freebsd-nq/sys/netinet
Robert Watson 77dfcdc445 Rework global locks for interface list and index management, correcting
several critical bugs, including race conditions and lock order issues:

Replace the single rwlock, ifnet_lock, with two locks, an rwlock and an
sxlock.  Either can be held to stablize the lists and indexes, but both
are required to write.  This allows the list to be held stable in both
network interrupt contexts and sleepable user threads across sleeping
memory allocations or device driver interactions.  As before, writes to
the interface list must occur from sleepable contexts.

Reviewed by:	bz, julian
MFC after:	3 days
2009-08-23 20:40:19 +00:00
..
ipfw Fix another typo right next to the previous one, that amazingly, I did 2009-08-23 08:49:32 +00:00
libalias What's the point of adjusting a checksum if we are going to toss the 2009-04-11 15:26:31 +00:00
accf_data.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
accf_dns.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
accf_http.c Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
icmp6.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
icmp_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
if_atm.c
if_atm.h
if_ether.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
if_ether.h remove dependency on net/if.h of this header 2009-02-16 15:07:40 +00:00
igmp_var.h Update stats in struct igmpstat using two new macros: 2009-04-12 13:41:13 +00:00
igmp.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
igmp.h These are no longer referenced in the tree, so can be safely removed. 2009-06-10 18:12:15 +00:00
in_cksum.c
in_gif.c Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
in_gif.h
in_mcast.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
in_pcb.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
in_pcb.h Add padding to struct inpcb, missed during our padding sweep earlier in 2009-08-02 22:47:08 +00:00
in_proto.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
in_rmx.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
in_systm.h Use uint32_t instead of n_long and n_time, and uint16_t instead of n_short. 2009-02-13 15:14:43 +00:00
in_var.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
in.c Rework global locks for interface list and index management, correcting 2009-08-23 20:40:19 +00:00
in.h - Rename IP_NONLOCALOK IP socket option to IP_BINDANY, to be more consistent 2009-06-01 10:30:00 +00:00
ip6.h Start removing IPv6 Type 0 Routing header code. 2009-03-03 13:12:12 +00:00
ip_carp.c Fix CARP memory leaks on carp_if's malloc'd using M_CARP. This occurs when 2009-08-20 02:33:12 +00:00
ip_carp.h Update stats in struct carpstats using two new macros: CARPSTATS_ADD() 2009-04-12 14:19:37 +00:00
ip_divert.c Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
ip_divert.h
ip_dummynet.h - fix dummynet 'fast' mode for WF2Q case. 2009-06-24 22:57:07 +00:00
ip_ecn.c
ip_ecn.h
ip_encap.c
ip_encap.h
ip_fastfwd.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ip_fw.h Fix ipfw's initialization functions to get the correct order of evaluation 2009-08-21 11:20:10 +00:00
ip_gre.c
ip_gre.h
ip_icmp.c Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
ip_icmp.h Use uint32_t instead of n_long and n_time, and uint16_t instead of n_short. 2009-02-13 15:14:43 +00:00
ip_id.c
ip_input.c Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
ip_ipsec.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ip_ipsec.h Only four out of nine arguments for ip_ipsec_output() are actually used. 2009-06-05 23:53:17 +00:00
ip_mroute.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ip_mroute.h Switch cmd argument to u_long. This matches what if_ethersubr.c does and 2009-06-21 10:29:31 +00:00
ip_options.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ip_options.h Add function ip_checkrouteralert(), which will be used 2009-03-04 02:51:22 +00:00
ip_output.c - change the interface to flowtable_lookup so that we don't rely on 2009-08-18 20:28:58 +00:00
ip_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
ip.h Use uint32_t instead of n_long and n_time, and uint16_t instead of n_short. 2009-02-13 15:14:43 +00:00
pim_var.h Update stats in struct pimstat using two new macros: PIMSTAT_ADD() 2009-04-12 14:06:26 +00:00
pim.h
raw_ip.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
sctp_asconf.c
sctp_asconf.h
sctp_auth.c Turns out that when a receiver forwards through its TNS's the 2009-07-28 14:09:06 +00:00
sctp_auth.h
sctp_bsd_addr.c Add missing address lock when we look at the ifa list 2009-04-14 19:20:27 +00:00
sctp_bsd_addr.h
sctp_cc_functions.c
sctp_cc_functions.h
sctp_constants.h Fixes several PR-SCTP releated bugs. 2009-03-14 13:42:13 +00:00
sctp_crc32.c repository sync to multi-OS repo ... spaceing change 2009-05-07 16:43:49 +00:00
sctp_crc32.h This commit fixes the issue with alias_sctp.c. No 2009-02-14 11:34:57 +00:00
sctp_header.h Add the add-stream capability. Still needs more 2009-02-20 15:03:54 +00:00
sctp_indata.c * Fix a bug where PR-SCTP settings are ignore when using implicit 2009-08-15 21:10:52 +00:00
sctp_indata.h
sctp_input.c * Fix a bug where PR-SCTP settings are ignore when using implicit 2009-08-15 21:10:52 +00:00
sctp_input.h
sctp_lock_bsd.h
sctp_os_bsd.h SCTP is not yet compatible with options VIMAGE kernels although it compiles 2009-08-14 22:43:25 +00:00
sctp_os.h
sctp_output.c Fix a crash when using one-to-one stlye socket in non-blocking 2009-08-18 19:58:49 +00:00
sctp_output.h Fix the add stream feature of strm-reset to really work: 2009-02-27 20:54:45 +00:00
sctp_pcb.c * Fix a bug where PR-SCTP settings are ignore when using implicit 2009-08-15 21:10:52 +00:00
sctp_pcb.h - Cleanup checksum code. 2009-02-03 11:04:03 +00:00
sctp_peeloff.c
sctp_peeloff.h
sctp_structs.h add an llentry to struct route{_in6} to allow it to be passed around with 2009-04-15 20:34:19 +00:00
sctp_sysctl.c Fix a bug where wrong initialization value 2009-07-28 15:07:41 +00:00
sctp_sysctl.h Fix a bug where wrong initialization value 2009-07-28 15:07:41 +00:00
sctp_timer.c * Fix a bug where PR-SCTP settings are ignore when using implicit 2009-08-15 21:10:52 +00:00
sctp_timer.h
sctp_uio.h Get rid of unused field. This will also be deleted 2009-07-27 12:09:32 +00:00
sctp_usrreq.c Many bug fixes (from the IETF hack-fest): 2009-04-04 11:43:32 +00:00
sctp_var.h Fixes several PR-SCTP releated bugs. 2009-03-14 13:42:13 +00:00
sctp.h Changes to the NR-Sack code so that: 2009-06-17 12:34:56 +00:00
sctputil.c Fix a bug in the handling of unreliable messages 2009-08-19 12:02:28 +00:00
sctputil.h * Fix a bug where PR-SCTP settings are ignore when using implicit 2009-08-15 21:10:52 +00:00
tcp_debug.c Remove the "The option TCPDEBUG requires option INET." requirement. 2009-06-10 10:39:41 +00:00
tcp_debug.h Use uint32_t instead of n_long and n_time, and uint16_t instead of n_short. 2009-02-13 15:14:43 +00:00
tcp_fsm.h
tcp_hostcache.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_hostcache.h
tcp_input.c Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
tcp_lro.c
tcp_lro.h
tcp_offload.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_offload.h Replace struct tcpopt with a proxy toeopt struct in the TOE driver interface to 2009-07-13 11:51:02 +00:00
tcp_output.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_reass.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_sack.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_seq.h
tcp_subr.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_syncache.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_syncache.h Replace struct tcpopt with a proxy toeopt struct in the TOE driver interface to 2009-07-13 11:51:02 +00:00
tcp_timer.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_timer.h
tcp_timewait.c Fix signed comparison bug when ticks goes negative after 24 days of 2009-08-20 22:53:28 +00:00
tcp_usrreq.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
tcp_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
tcp.h
tcpip.h
toedev.h
udp_usrreq.c Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
udp_var.h Many network stack subsystems use a single global data structure to hold 2009-08-02 19:43:32 +00:00
udp.h Added support for NAT-Traversal (RFC 3948) in IPsec stack. 2009-06-12 15:44:35 +00:00