freebsd-dev/sys/netinet
Bruce M Simpson ec002fee99 Implement reference counting for ifmultiaddr, in_multi, and in6_multi
structures. Detect when ifnet instances are detached from the network
stack and perform appropriate cleanup to prevent memory leaks.

This has been implemented in such a way as to be backwards ABI compatible.
Kernel consumers are changed to use if_delmulti_ifma(); in_delmulti()
is unable to detect interface removal by design, as it performs searches
on structures which are removed with the interface.

With this architectural change, the panics FreeBSD users have experienced
with carp and pfsync should be resolved.

Obtained from:	p4 branch bms_netdev
Reviewed by:	andre
Sponsored by:	Garance A Drosehn
Idea from:	NetBSD
MFC after:	1 month
2007-03-20 00:36:10 +00:00
..
libalias o made in kernel libalias mpsafe 2006-12-15 12:50:06 +00:00
accf_data.c
accf_http.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
icmp6.h sync with KAME regarding NDP 2005-10-21 16:23:01 +00:00
icmp_var.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_atm.c Add newline to debuging printf. 2005-08-26 15:27:18 +00:00
if_atm.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
if_ether.c Comply with RFC 3927, by forcing ARP replies which contain a source 2007-02-02 20:31:44 +00:00
if_ether.h Add CARP (Common Address Redundancy Protocol), which allows multiple 2005-02-22 13:04:05 +00:00
igmp_var.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
igmp.c Improve style(9) conformance of igmp.c. 2006-12-04 00:41:48 +00:00
igmp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_cksum.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_gif.c With exception of the if_name() macro, all definitions in net_osdep.h 2006-08-04 21:27:40 +00:00
in_gif.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_pcb.c #ifdef INET6 printing of inpcb IPv6 addresses in DDB. Patch committed 2007-02-18 08:57:23 +00:00
in_pcb.h Add "show inpcb", "show tcpcb" DDB commands, which should come in handy 2007-02-17 21:02:38 +00:00
in_proto.c Build PIM by default as part of the IPv4 multicast forwarding path. 2007-02-10 13:59:13 +00:00
in_rmx.c Complete timebase (time_second -> time_uptime) conversion. 2006-07-05 23:37:21 +00:00
in_systm.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
in_var.h Implement reference counting for ifmultiaddr, in_multi, and in6_multi 2007-03-20 00:36:10 +00:00
in.c Implement reference counting for ifmultiaddr, in_multi, and in6_multi 2007-03-20 00:36:10 +00:00
in.h Add INADDR_ALLRPTS_GROUP define for 224.0.0.22 for future IGMPv3 support. 2007-02-27 14:45:37 +00:00
ip6.h move RFC3542 related definitions into ip6.h. 2005-07-20 10:30:52 +00:00
ip_carp.c Since rev. 1.94 of netinet/in.c, the netinet layer frees all its 2007-02-02 09:39:09 +00:00
ip_carp.h Make sure that carp_header is 36 bytes long 2006-12-01 18:37:41 +00:00
ip_divert.c Some whitespace nits and remove a few casts. 2006-12-29 14:58:18 +00:00
ip_divert.h Convert IPDIVERT into a loadable module. This makes use of the dynamic loadability 2004-10-19 21:14:57 +00:00
ip_dummynet.c - Use non-recursive mutex. MTX_RECURSE is unnecessary since rev. 1.70 2006-10-29 12:09:24 +00:00
ip_dummynet.h When sending a packet from dummynet, indicate that we're forwarding 2006-02-14 06:36:39 +00:00
ip_ecn.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_ecn.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_encap.c With exception of the if_name() macro, all definitions in net_osdep.h 2006-08-04 21:27:40 +00:00
ip_encap.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_fastfwd.c In IPv4 fast forwarding path, send ICMP unreachable messages for 2007-03-18 23:05:20 +00:00
ip_fw2.c Include opt_ipdivert.h so that the message announcing ipfw correctly 2007-02-03 22:11:53 +00:00
ip_fw_pfil.c Summer of Code 2005: improve libalias - part 2 of 2 2006-12-29 21:59:17 +00:00
ip_fw.h Summer of Code 2005: improve libalias - part 2 of 2 2006-12-29 21:59:17 +00:00
ip_gre.c Fix the following bpf(4) race condition which can result in a panic: 2006-06-02 19:59:33 +00:00
ip_gre.h Fix stack corruptions on amd64. 2006-01-21 10:44:34 +00:00
ip_icmp.c Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.h 2006-10-22 11:52:19 +00:00
ip_icmp.h Pass icmp_error() the MTU argument directly instead of 2005-05-04 13:09:19 +00:00
ip_id.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ip_input.c Match up SYSCTL declaration style. 2007-03-19 19:00:51 +00:00
ip_ipsec.c Remove unneeded mac.h include. 2006-07-06 13:25:01 +00:00
ip_ipsec.h Move the IPSEC related code blocks to their own file to unclutter 2006-02-01 13:55:03 +00:00
ip_mroute.c Diff reduction with NetBSD; use IN_LOCAL_GROUP() to check if an address 2007-03-15 08:44:22 +00:00
ip_mroute.h Store the cached route in vifp in the normal send_packet() case. 2007-02-08 23:05:08 +00:00
ip_options.c Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.h 2006-10-22 11:52:19 +00:00
ip_options.h Move MAX_IPOPTLEN and struct ipoption back into ip_var.h as 2005-11-19 14:01:32 +00:00
ip_output.c Fix undirected broadcast sends for the case where SO_DONTROUTE has also 2007-03-01 13:29:30 +00:00
ip_var.h Fix a long-standing limitation in IPv4 multicast group membership. 2006-05-14 14:22:49 +00:00
ip.h Marking this as __packed was needed to get the alignment and offset of 2007-01-12 07:23:31 +00:00
ipprotosw.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
pim_var.h Remove public declarations of variables that were forgotten when they were 2005-08-10 07:10:02 +00:00
pim.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
raw_ip.c Summer of Code 2005: improve libalias - part 2 of 2 2006-12-29 21:59:17 +00:00
sctp_asconf.c - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_asconf.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_auth.c - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_auth.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_bsd_addr.c - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_bsd_addr.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_constants.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_crc32.c - Copyright updates (aka 2007) 2007-02-12 23:24:31 +00:00
sctp_crc32.h - most all includes (#include <>) migrate to the sctp_os_bsd.h file 2007-01-18 09:58:43 +00:00
sctp_header.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_indata.c - errno -> becomes error in sctp_output.c and sctputil.c 2007-03-19 06:53:02 +00:00
sctp_indata.h - most all includes (#include <>) migrate to the sctp_os_bsd.h file 2007-01-18 09:58:43 +00:00
sctp_input.c - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_input.h - most all includes (#include <>) migrate to the sctp_os_bsd.h file 2007-01-18 09:58:43 +00:00
sctp_lock_bsd.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_os_bsd.h Adds a hash table to speed local address lookup 2007-03-19 11:11:16 +00:00
sctp_os.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_output.c - errno -> becomes error in sctp_output.c and sctputil.c 2007-03-19 06:53:02 +00:00
sctp_output.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_pcb.c Adds a hash table to speed local address lookup 2007-03-19 11:11:16 +00:00
sctp_pcb.h Adds a hash table to speed local address lookup 2007-03-19 11:11:16 +00:00
sctp_peeloff.c - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_peeloff.h - most all includes (#include <>) migrate to the sctp_os_bsd.h file 2007-01-18 09:58:43 +00:00
sctp_structs.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_sysctl.c - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_sysctl.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_timer.c - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_timer.h - most all includes (#include <>) migrate to the sctp_os_bsd.h file 2007-01-18 09:58:43 +00:00
sctp_uio.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctp_usrreq.c - errno -> becomes error in sctp_output.c and sctputil.c 2007-03-19 06:53:02 +00:00
sctp_var.h - errno -> becomes error in sctp_output.c and sctputil.c 2007-03-19 06:53:02 +00:00
sctp.h - Sysctl's move to seperate file 2007-03-15 11:27:14 +00:00
sctputil.c Adds a hash table to speed local address lookup 2007-03-19 11:11:16 +00:00
sctputil.h Adds a hash table to speed local address lookup 2007-03-19 11:11:16 +00:00
tcp_debug.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_debug.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_fsm.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
tcp_hostcache.c MFp4: 92972, 98913 + one more change 2006-12-12 12:17:58 +00:00
tcp_input.c Match up SYSCTL declaration style. 2007-03-19 19:00:51 +00:00
tcp_output.c Match up SYSCTL_INT declarations in style. 2007-03-19 18:42:27 +00:00
tcp_reass.c Match up SYSCTL declaration style. 2007-03-19 19:00:51 +00:00
tcp_sack.c Match up SYSCTL declaration style. 2007-03-19 19:00:51 +00:00
tcp_seq.h Remove T/TCP RFC1644 Connection Count comparison macros. They are no longer 2006-06-18 14:24:12 +00:00
tcp_subr.c Match up SYSCTL declaration style. 2007-03-19 19:00:51 +00:00
tcp_syncache.c Unbreak IPv6 after consolidation of TCP options insertion. 2007-03-17 11:52:54 +00:00
tcp_timer.c Match up SYSCTL declaration style. 2007-03-19 19:00:51 +00:00
tcp_timer.h Reap FIN_WAIT_2 connections marked SOCANTRCVMORE faster. This mitigate 2007-02-26 22:25:21 +00:00
tcp_timewait.c Match up SYSCTL declaration style. 2007-03-19 19:00:51 +00:00
tcp_usrreq.c Reap FIN_WAIT_2 connections marked SOCANTRCVMORE faster. This mitigate 2007-02-26 22:25:21 +00:00
tcp_var.h Consolidate insertion of TCP options into a segment from within tcp_output() 2007-03-15 15:59:28 +00:00
tcp.h Consolidate insertion of TCP options into a segment from within tcp_output() 2007-03-15 15:59:28 +00:00
tcpip.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
udp_usrreq.c Fix IP_SENDSRCADDR semantics. 2007-03-08 15:26:54 +00:00
udp_var.h Rename two identically named log_in_vain variables: tcp_input.c's static 2007-02-20 10:20:03 +00:00
udp.h Gratuitous UDP restyling toward style(9) in 7.x. 2007-02-20 10:13:11 +00:00