freebsd-nq/sys/netinet6
Sam Leffler d1dd20be6e Locking for updates to routing table entries. Each rtentry gets a mutex
that covers updates to the contents.  Note this is separate from holding
a reference and/or locking the routing table itself.

Other/related changes:

o rtredirect loses the final parameter by which an rtentry reference
  may be returned; this was never used and added unwarranted complexity
  for locking.
o minor style cleanups to routing code (e.g. ansi-fy function decls)
o remove the logic to bump the refcnt on the parent of cloned routes,
  we assume the parent will remain as long as the clone; doing this avoids
  a circularity in locking during delete
o convert some timeouts to MPSAFE callouts

Notes:

1. rt_mtx in struct rtentry is guarded by #ifdef _KERNEL as user-level
   applications cannot/do-no know about mutex's.  Doing this requires
   that the mutex be the last element in the structure.  A better solution
   is to introduce an externalized version of struct rtentry but this is
   a major task because of the intertwining of rtentry and other data
   structures that are visible to user applications.
2. There are known LOR's that are expected to go away with forthcoming
   work to eliminate many held references.  If not these will be resolved
   prior to release.
3. ATM changes are untested.

Sponsored by:	FreeBSD Foundation
Obtained from:	BSD/OS (partly)
2003-10-04 03:44:50 +00:00
..
ah6.h
ah_core.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
ah_input.c Update netisr handling; Each SWI now registers its queue, and all queue 2003-03-04 23:19:55 +00:00
ah_output.c panic() doesn't need \n 2003-04-29 08:43:56 +00:00
ah.h
dest6.c
esp6.h
esp_core.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
esp_input.c Update netisr handling; Each SWI now registers its queue, and all queue 2003-03-04 23:19:55 +00:00
esp_output.c panic() doesn't need \n 2003-04-29 08:43:56 +00:00
esp_rijndael.c "struct route" is not sufficient. NetBSD PR 18751 2003-01-08 17:59:24 +00:00
esp_rijndael.h
esp.h
frag6.c use arc4random() 2003-10-01 21:10:02 +00:00
icmp6.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
icmp6.h
in6_cksum.c panic() doesn't need \n 2003-04-29 08:43:56 +00:00
in6_gif.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
in6_gif.h last arg of in6?_gif_output() is not used any more. 2002-10-17 17:47:55 +00:00
in6_ifattach.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
in6_ifattach.h
in6_pcb.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
in6_pcb.h Create new functions in_sockaddr(), in6_sockaddr(), and 2002-08-21 11:57:12 +00:00
in6_prefix.c
in6_prefix.h
in6_proto.c randomize IPv6 flowlabel when RANDOM_IP_ID is defined. 2003-10-01 21:24:28 +00:00
in6_rmx.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
in6_src.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
in6_var.h Update netisr handling; Each SWI now registers its queue, and all queue 2003-03-04 23:19:55 +00:00
in6.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
in6.h Add definitions for IN6ADDR_LINKLOCAL_ALLMDNS_INIT and INADDR_ALLMDNS_GROUP. 2003-04-29 22:03:46 +00:00
ip6_ecn.h
ip6_forward.c Correct pfil_run_hooks return handling: if the return value is non-zero 2003-09-30 04:46:08 +00:00
ip6_fw.c Cleanup useless break. 2003-07-29 14:10:13 +00:00
ip6_fw.h
ip6_id.c add randomtab for ip6_randomflowlabel(). 2003-10-01 21:45:57 +00:00
ip6_input.c randomize IPv6 flowlabel when RANDOM_IP_ID is defined. 2003-10-01 21:24:28 +00:00
ip6_mroute.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
ip6_mroute.h
ip6_output.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
ip6_var.h randomize IPv6 flowlabel when RANDOM_IP_ID is defined. 2003-10-01 21:24:28 +00:00
ip6.h
ip6protosw.h o update PFIL_HOOKS support to current API used by netbsd 2003-09-23 17:54:04 +00:00
ipcomp6.h
ipcomp_core.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
ipcomp_input.c
ipcomp_output.c sync with the latest KAME (just a cosmetic change) 2003-04-28 08:21:57 +00:00
ipcomp.h
ipsec6.h Add a TCP TIMEWAIT state which uses less space than a fullblown TCP 2003-02-19 22:32:43 +00:00
ipsec.c - include opt_random_ip_id.h 2003-10-01 20:24:20 +00:00
ipsec.h Add a TCP TIMEWAIT state which uses less space than a fullblown TCP 2003-02-19 22:32:43 +00:00
mld6_var.h
mld6.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
nd6_nbr.c Enable IPv6 for Token Ring. 2003-09-14 02:32:31 +00:00
nd6_rtr.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
nd6.c Locking for updates to routing table entries. Each rtentry gets a mutex 2003-10-04 03:44:50 +00:00
nd6.h introduced a flag bit "ND6_IFF_ACCEPT_RTADV" in the nd_ifinfo structure to 2003-08-05 14:57:11 +00:00
pim6_var.h
pim6.h
raw_ip6.c Add a TCP TIMEWAIT state which uses less space than a fullblown TCP 2003-02-19 22:32:43 +00:00
raw_ip6.h
README
route6.c Replace aux mbufs with packet tags: 2002-10-16 01:54:46 +00:00
scope6_var.h
scope6.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
tcp6_var.h
udp6_output.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
udp6_usrreq.c Add a TCP TIMEWAIT state which uses less space than a fullblown TCP 2003-02-19 22:32:43 +00:00
udp6_var.h

a note to committers about KAME tree
$FreeBSD$
KAME project


FreeBSD IPv6/IPsec tree is from KAMEproject (http://www.kame.net/).
To synchronize KAME tree and FreeBSD better today and in the future,
please understand the following:

- DO NOT MAKE COSTMETIC CHANGES.
  "Cosmetic changes" here includes tabify, untabify, removal of space at EOL,
  minor KNF items, and whatever adds more output lines on "diff freebsd kame".
  To make future synchronization easier. it is critical to preserve certain
  statements in the code.  Also, as KAME tree supports all 4 BSDs (Free, Open,
  Net, BSD/OS) in single shared tree, it is not always possible to backport
  FreeBSD changes into KAME tree.  So again, please do not make cosmetic
  changes.  Even if you think it a right thing, that will bite KAME guys badly
  during upgrade attempts, and prevent us from synchronizing two trees.
  (you don't usually make cosmetic changes against third-party code, do you?)

- REPORT CHANGES/BUGS TO KAME GUYS.
  It is not always possible for KAME guys to watch all the freebsd mailing
  list traffic, as the traffic is HUGE.  So if possible, please, inform
  kame guys of changes you made in IPv6/IPsec related portion.  Contact
  path would be snap-users@kame.net or KAME PR database on www.kame.net.
  (or to core@kame.net if it is necessary to make it confidential)

Thank you for your cooperation and have a happy IPv6 life!


Note: KAME-origin code is in the following locations.
The above notice applies to corresponding manpages too.
The list may not be complete.  If you see $KAME$ in the code, it is from
KAME distribution.  If you see some file that is IPv6/IPsec related, it is
highly possible that the file is from KAME distribution.

include/ifaddrs.h
lib/libc/net
lib/libc/net/getaddrinfo.c
lib/libc/net/getifaddrs.c
lib/libc/net/getnameinfo.c
lib/libc/net/ifname.c
lib/libc/net/ip6opt.c
lib/libc/net/map_v4v6.c
lib/libc/net/name6.c
lib/libftpio
lib/libipsec
sbin/ip6fw
sbin/ping6
sbin/rtsol
share/doc/IPv6
share/man/man4/ip6.4
share/man/man4/inet6.4
sys/crypto (except sys/crypto/rc4)
sys/kern/uipc_mbuf2.c
sys/net/if_faith.[ch]
sys/net/if_gif.[ch]
sys/net/if_stf.[ch]
sys/net/pfkeyv2.h
sys/netinet/icmp6.h
sys/netinet/in_gif.[ch]
sys/netinet/ip6.h
sys/netinet/ip_encap.[ch]
sys/netinet6
sys/netkey
usr.sbin/faithd
usr.sbin/gifconfig
usr.sbin/ifmcstat
usr.sbin/mld6query
usr.sbin/ndp
usr.sbin/pim6dd
usr.sbin/pim6sd
usr.sbin/prefix
usr.sbin/rip6query
usr.sbin/route6d
usr.sbin/rrenumd
usr.sbin/rtadvd
usr.sbin/rtsold
usr.sbin/scope6config
usr.sbin/setkey
usr.sbin/traceroute6