freebsd-skq/sys/netinet6
Gleb Smirnoff ea53792942 Fix races between in_lltable_prefix_free(), lla_lookup(),
llentry_free() and arptimer():

o Use callout_init_rw() for lle timeout, this allows us safely
  disestablish them.
  - This allows us to simplify the arptimer() and make it
    race safe.
o Consistently use ifp->if_afdata_lock to lock access to
  linked lists in the lle hashes.
o Introduce new lle flag LLE_LINKED, which marks an entry that
  is attached to the hash.
  - Use LLE_LINKED to avoid double unlinking via consequent
    calls to llentry_free().
  - Mark lle with LLE_DELETED via |= operation istead of =,
    so that other flags won't be lost.
o Make LLE_ADDREF(), LLE_REMREF() and LLE_FREE_LOCKED() more
  consistent and provide more informative KASSERTs.

The patch is a collaborative work of all submitters and myself.

PR:		kern/165863
Submitted by:	Andrey Zonov <andrey zonov.org>
Submitted by:	Ryan Stone <rysto32 gmail.com>
Submitted by:	Eric van Gyzen <eric_van_gyzen dell.com>
2012-08-02 13:57:49 +00:00
..
dest6.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
frag6.c Implement handling of "atomic fragements" as outlined in 2012-07-08 15:30:24 +00:00
icmp6.c MFp4 bz_ipv6_fast: 2012-05-25 01:42:48 +00:00
icmp6.h
in6_cksum.c MFp4 bz_ipv6_fast: 2012-05-24 18:25:09 +00:00
in6_gif.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
in6_gif.h
in6_ifattach.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
in6_ifattach.h
in6_mcast.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
in6_pcb.c in6_pcblookup_local() still can return a pcb with NULL 2012-03-21 08:43:38 +00:00
in6_pcb.h Implement a CPU-affine TCP and UDP connection lookup data structure, 2011-06-06 12:55:02 +00:00
in6_pcbgroup.c Implement a CPU-affine TCP and UDP connection lookup data structure, 2011-06-06 12:55:02 +00:00
in6_proto.c o Convert IPv6 read-only stats sysctls to the read-write ones. 2011-12-19 05:50:34 +00:00
in6_rmx.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
in6_src.c Just add a comment to further investigate when being closer to that code 2012-06-22 21:26:35 +00:00
in6_var.h Provide the IPv6 counterpart to the extended IPv4 rtalloc(9) KPI. 2012-02-03 09:33:58 +00:00
in6.c Fix races between in_lltable_prefix_free(), lla_lookup(), 2012-08-02 13:57:49 +00:00
in6.h MFp4 bz_ipv6_fast: 2012-05-24 18:25:09 +00:00
ip6_ecn.h
ip6_forward.c Seperate SCTP checksum offloading for IPv4 and IPv6. 2012-05-30 20:56:07 +00:00
ip6_id.c
ip6_input.c Deliver IPV6_TCLASS, IPV6_HOPLIMIT and IPV6_PKTINFO cmsgs (if 2012-06-12 13:57:56 +00:00
ip6_ipsec.c Properly apply #ifdef INET and leave a comment that we are (will) apply 2012-07-31 05:44:03 +00:00
ip6_ipsec.h
ip6_mroute.c Remove route caching from IP multicast routing code. There is no 2012-07-02 19:44:18 +00:00
ip6_mroute.h Remove route caching from IP multicast routing code. There is no 2012-07-02 19:44:18 +00:00
ip6_output.c In case of IPsec he have to do delayed checksum calculations before 2012-07-31 23:34:06 +00:00
ip6_var.h MFp4 bz_ipv6_fast: 2012-05-25 01:48:15 +00:00
ip6.h
ip6protosw.h
mld6_var.h Use ALLOW_NEW_SOURCES and BLOCK_OLD_SOURCES to signal a join or leave 2009-12-22 20:40:22 +00:00
mld6.c Kick the current-state report timer when a V1 group report would 2012-06-28 23:48:40 +00:00
mld6.h
nd6_nbr.c When ip_output()/ip6_output() is supplied a struct route *ro argument, 2012-07-04 07:37:53 +00:00
nd6_rtr.c Add multi-FIB IPv6 support to the core network stack supplementing 2012-02-03 13:08:44 +00:00
nd6.c MFp4 bz_ipv6_fast: 2012-05-25 09:27:16 +00:00
nd6.h Remove "prefer_source" address selection option. FreeBSD has had an 2012-07-09 06:21:46 +00:00
pim6_var.h
pim6.h
raw_ip6.c Add SO_SETFIB option support on PF_INET6 sockets and allow inheriting the 2012-02-03 11:00:53 +00:00
raw_ip6.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
route6.c MFp4 bz_ipv6_fast: 2012-05-25 01:43:52 +00:00
scope6_var.h MFp4 bz_ipv6_fast: 2012-05-24 16:30:13 +00:00
scope6.c MFp4 bz_ipv6_fast: 2012-05-24 16:30:13 +00:00
sctp6_usrreq.c Changes which improve compilation if neither INET nor INET6 is defined. 2012-07-15 20:16:17 +00:00
sctp6_var.h Use consistent text at the begining of the files. 2012-05-23 11:26:28 +00:00
send.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
send.h Use uint8_t for sockaddr sa_len. 2011-06-05 11:40:30 +00:00
tcp6_var.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
udp6_usrreq.c It turns out that too many drivers are not only parsing the L2/3/4 2012-05-28 09:30:13 +00:00
udp6_var.h