freebsd-skq/sys/netinet6
bms 76f193cd69 Introduce a number of changes to the MROUTING code.
This is purely a forwarding plane cleanup; no control plane
code is involved.

Summary:
 * Split IPv4 and IPv6 MROUTING support. The static compile-time
   kernel option remains the same, however, the modules may now
   be built for IPv4 and IPv6 separately as ip_mroute_mod and
   ip6_mroute_mod.
 * Clean up the IPv4 multicast forwarding code to use BSD queue
   and hash table constructs. Don't build our own timer abstractions
   when ratecheck() and timevalclear() etc will do.
 * Expose the multicast forwarding cache (MFC) and virtual interface
   table (VIF) as sysctls, to reduce netstat's dependence on libkvm
   for this information for running kernels.
   * bandwidth meters however still require libkvm.
 * Make the MFC hash table size a boot/load-time tunable ULONG,
   net.inet.ip.mfchashsize (defaults to 256).
 * Remove unused members from struct vif and struct mfc.
 * Kill RSVP support, as no current RSVP implementation uses it.
   These stubs could be moved to raw_ip.c.
 * Don't share locks or initialization between IPv4 and IPv6.
 * Don't use a static struct route_in6 in ip6_mroute.c.
   The v6 code is still using a cached struct route_in6, this is
   moved to mif6 for the time being.
 * More cleanup remains to be merged from ip_mroute.c to ip6_mroute.c.

v4 path tested using ports/net/mcast-tools.
v6 changes are mostly mechanical locking and *have not* been tested.
As these changes partially break some kernel ABIs, they will not
be MFCed. There is a lot more work to be done here.

Reviewed by:	Pavlin Radoslavov
2009-03-19 01:43:03 +00:00
..
dest6.c Rather than using hidden includes (with cicular dependencies), 2008-12-02 21:37:28 +00:00
frag6.c Remove the single global unlocked route cache ip6_forward_rt 2009-02-01 21:11:08 +00:00
icmp6.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
icmp6.h
in6_cksum.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6_gif.c On architectures with strict alignment requirements compensate 2009-03-07 19:08:58 +00:00
in6_gif.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6_ifattach.c Remove IFF_NEEDSGIANT, a compatibility infrastructure introduced 2009-03-15 14:21:05 +00:00
in6_ifattach.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
in6_pcb.c Correct a number of evolved problems with inp_vflag and inp_flags: 2009-03-15 09:58:31 +00:00
in6_pcb.h Merge in6_pcbfree() into in_pcbfree() which after the previous 2008-11-27 12:04:35 +00:00
in6_proto.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
in6_rmx.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
in6_src.c Standardize the various prison_foo_ip[46] functions and prison_if to 2009-02-05 14:06:09 +00:00
in6_var.h This main goals of this project are: 2008-12-15 06:10:57 +00:00
in6.c Remove IFF_NEEDSGIANT, a compatibility infrastructure introduced 2009-03-15 14:21:05 +00:00
in6.h Default to ignoring potentially evil IPv6 Neighbor Solicitation 2008-10-02 00:32:59 +00:00
ip6_ecn.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
ip6_forward.c Try to remove/assimilate as much of formerly IPv4/6 specific 2009-02-08 09:27:07 +00:00
ip6_id.c Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
ip6_input.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
ip6_ipsec.c Try to remove/assimilate as much of formerly IPv4/6 specific 2009-02-08 09:27:07 +00:00
ip6_ipsec.h #if 0 out a currently unsued (and incomplete) function: ip6_ipsec_mtu(). 2008-03-14 11:44:30 +00:00
ip6_mroute.c Introduce a number of changes to the MROUTING code. 2009-03-19 01:43:03 +00:00
ip6_mroute.h Introduce a number of changes to the MROUTING code. 2009-03-19 01:43:03 +00:00
ip6_output.c Start removing IPv6 Type 0 Routing header code. 2009-03-03 13:12:12 +00:00
ip6_var.h Remove the single global unlocked route cache ip6_forward_rt 2009-02-01 21:11:08 +00:00
ip6.h
ip6protosw.h struct ip6protosw is a copy of struct protosw, so remove pr_usrreq there 2009-01-04 21:13:51 +00:00
mld6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
mld6.c Remove IFF_NEEDSGIANT, a compatibility infrastructure introduced 2009-03-15 14:21:05 +00:00
nd6_nbr.c Like with r185713 make sure to not leak a lock as rtalloc1(9) returns 2009-01-31 10:48:02 +00:00
nd6_rtr.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
nd6.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
nd6.h in6_clsroute() was applied to prefix routes causing some 2008-12-17 10:03:49 +00:00
pim6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
pim6.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
raw_ip6.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
raw_ip6.h Second round of putting global variables, which were virtualized 2008-12-13 19:13:03 +00:00
route6.c Start removing IPv6 Type 0 Routing header code. 2009-03-03 13:12:12 +00:00
scope6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
scope6.c For all files including net/vnet.h directly include opt_route.h and 2009-02-27 14:12:05 +00:00
sctp6_usrreq.c - Cleanup checksum code. 2009-02-03 11:04:03 +00:00
sctp6_var.h 1) Adds the rest of the VIMAGE change macros 2008-07-09 16:45:30 +00:00
tcp6_var.h Put a global variables, which were virtualized but formerly 2008-12-11 16:26:38 +00:00
udp6_usrreq.c Don't bother null-checking the thread pointer before the prison checks 2009-02-05 15:04:23 +00:00
udp6_var.h Clean up VCS Ids. 2007-12-10 16:03:40 +00:00
vinet6.h Add size-guards evaluated at compile-time to the main struct vnet_* 2009-03-01 11:01:00 +00:00