NetBSD/sys/netinet6
dyoung 8068916447 Synchronize access to the ifaddr list by in6_update_ifa() and
in6_control() with splnet()/splx().  I was being a bit paranoid
here.  Following a cursory analysis of the code, this still looked
necessary.  We don't spend a lot of time in these calls, so it
should not be too harmful to suspend network interrupts.

In in6_unlink_ifa(), call in6_delmulti() just once on each multicast
address (in6_multi).  Previously, in6_unlink_ifa() called in6_delmulti()
on each in6_multi until in6_delmulti() removed the in6_multi from
the list and freed its memory.  That's not justified: the multicast
list holds *one* reference.  All other references belong to other
entities.  We must wait to free the memory until the other entities
release their references, to protect against dereferencing a freed
in6_multi.

XXX I need to revisit in6_delmulti(), in6_unlink_ifa(), and friends,
XXX to pry apart the conditions where an in6_multi is removed from
XXX its list and where it is freed.  Following my change, above,
XXX we still risk dereferencing a freed in6_multi.

Prevent in6_update_ifa() and in6_addremloop() from creating dangling
pointers to interfaces in the routing table.  Previously, my NetBSD
tunnel concentrator, which adds and deletes a lot of P2P interfaces
with the same local address, crashed in 8 hours or less when it
dereferenced a dangling pointer to a deleted ifnet.  Now, its uptime
is greater than 3 days.
2006-12-02 20:40:58 +00:00
..
ah_aesxcbcmac.c
ah_aesxcbcmac.h
ah_core.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
ah_input.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
ah_output.c fix spelling of accommodate; from Zapher. 2006-11-24 19:46:58 +00:00
ah.h
dest6.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
esp_aesctr.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
esp_aesctr.h
esp_core.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
esp_input.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
esp_output.c fix spelling of accommodate; from Zapher. 2006-11-24 19:46:58 +00:00
esp_rijndael.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
esp_rijndael.h
esp.h
files.ipsec Merge kernel and userland rmd160 and sha2 implementation. 2006-10-27 21:20:48 +00:00
files.netinet6 move tso-by-software code to their own files. no functional changes. 2006-11-25 18:41:36 +00:00
frag6.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
icmp6.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
in6_cksum.c PR 32653: mrt@notwork.org: remove 'sum += w[0]' left in previous revision. 2006-01-27 20:08:11 +00:00
in6_gif.c merge FreeBSD timecounters from branch simonb-timecounters 2006-06-07 22:33:33 +00:00
in6_gif.h
in6_ifattach.c Use the TAILQ_/LIST_ macros instead of open-coding them. 2006-11-20 04:16:27 +00:00
in6_ifattach.h NDP-related improvements: 2006-03-05 23:47:08 +00:00
in6_offload.c move tso-by-software code to their own files. no functional changes. 2006-11-25 18:41:36 +00:00
in6_offload.h move tso-by-software code to their own files. no functional changes. 2006-11-25 18:41:36 +00:00
in6_pcb.c Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
in6_pcb.h Use the LWP cached credentials where sane. 2006-07-23 22:06:03 +00:00
in6_proto.c New EtherIP driver based on tap(4) and gif(4) by Hans Rosenfeld. 2006-11-23 04:07:07 +00:00
in6_src.c Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
in6_var.h Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
in6.c Synchronize access to the ifaddr list by in6_update_ifa() and 2006-12-02 20:40:58 +00:00
in6.h Commented out IPv6 socket options which are no longer supported. 2006-10-31 00:29:30 +00:00
ip6_etherip.c New EtherIP driver based on tap(4) and gif(4) by Hans Rosenfeld. 2006-11-23 04:07:07 +00:00
ip6_etherip.h New EtherIP driver based on tap(4) and gif(4) by Hans Rosenfeld. 2006-11-23 04:07:07 +00:00
ip6_forward.c Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
ip6_id.c Fix initializers. 2006-08-30 17:11:53 +00:00
ip6_input.c Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
ip6_mroute.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
ip6_mroute.h
ip6_output.c Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
ip6_var.h Add support for RFC 3542 Adv. Socket API for IPv6 (which obsoletes 2292). 2006-05-05 00:03:21 +00:00
ip6protosw.h gc unused member. 2006-08-27 23:55:16 +00:00
ipcomp_core.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
ipcomp_input.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
ipcomp_output.c fix spelling of accommodate; from Zapher. 2006-11-24 19:46:58 +00:00
ipcomp.h
ipsec.c Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
ipsec.h
Makefile
mld6_var.h NDP-related improvements: 2006-03-05 23:47:08 +00:00
mld6.c Fix a spelling error. 2006-11-29 03:05:12 +00:00
nd6_nbr.c Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
nd6_rtr.c Use LIST_/TAILQ_ macros, esp. LIST_FOREACH() and TAILQ_FOREACH(). 2006-11-20 04:34:16 +00:00
nd6.c fix spelling of accommodate; from Zapher. 2006-11-24 19:46:58 +00:00
nd6.h Use LIST_/TAILQ_ macros, esp. LIST_FOREACH() and TAILQ_FOREACH(). 2006-11-20 04:34:16 +00:00
pim6_var.h
pim6.h
raw_ip6.c Use the queue(3) macros instead of open-coding them. Shorten 2006-12-02 18:59:17 +00:00
raw_ip6.h
route6.c __unused removal on arguments; approved by core. 2006-11-16 01:32:37 +00:00
scope6_var.h Better support of IPv6 scoped addresses. 2006-01-21 00:15:35 +00:00
scope6.c comment out impossible comparison. 2006-09-03 05:16:59 +00:00
udp6_output.c Use the LWP cached credentials where sane. 2006-07-23 22:06:03 +00:00
udp6_usrreq.c Use the LWP cached credentials where sane. 2006-07-23 22:06:03 +00:00
udp6_var.h Use the LWP cached credentials where sane. 2006-07-23 22:06:03 +00:00
udp6.h