freebsd-dev/sys/conf
Bruce M Simpson 71498f308b Import rewrite of IPv4 socket multicast layer to support source-specific
and protocol-independent host mode multicast. The code is written to
accomodate IPv6, IGMPv3 and MLDv2 with only a little additional work.

This change only pertains to FreeBSD's use as a multicast end-station and
does not concern multicast routing; for an IGMPv3/MLDv2 router
implementation, consider the XORP project.

The work is based on Wilbert de Graaf's IGMPv3 code drop for FreeBSD 4.6,
which is available at: http://www.kloosterhof.com/wilbert/igmpv3.html

Summary
 * IPv4 multicast socket processing is now moved out of ip_output.c
   into a new module, in_mcast.c.
 * The in_mcast.c module implements the IPv4 legacy any-source API in
   terms of the protocol-independent source-specific API.
 * Source filters are lazy allocated as the common case does not use them.
   They are part of per inpcb state and are covered by the inpcb lock.
 * struct ip_mreqn is now supported to allow applications to specify
   multicast joins by interface index in the legacy IPv4 any-source API.
 * In UDP, an incoming multicast datagram only requires that the source
   port matches the 4-tuple if the socket was already bound by source port.
   An unbound socket SHOULD be able to receive multicasts sent from an
   ephemeral source port.
 * The UDP socket multicast filter mode defaults to exclusive, that is,
   sources present in the per-socket list will be blocked from delivery.
 * The RFC 3678 userland functions have been added to libc: setsourcefilter,
   getsourcefilter, setipv4sourcefilter, getipv4sourcefilter.
 * Definitions for IGMPv3 are merged but not yet used.
 * struct sockaddr_storage is now referenced from <netinet/in.h>. It
   is therefore defined there if not already declared in the same way
   as for the C99 types.
 * The RFC 1724 hack (specify 0.0.0.0/8 addresses to IP_MULTICAST_IF
   which are then interpreted as interface indexes) is now deprecated.
 * A patch for the Rhyolite.com routed in the FreeBSD base system
   is available in the -net archives. This only affects individuals
   running RIPv1 or RIPv2 via point-to-point and/or unnumbered interfaces.
 * Make IPv6 detach path similar to IPv4's in code flow; functionally same.
 * Bump __FreeBSD_version to 700048; see UPDATING.

This work was financially supported by another FreeBSD committer.

Obtained from:  p4://bms_netdev
Submitted by:   Wilbert de Graaf (original work)
Reviewed by:    rwatson (locking), silence from fenner,
		net@ (but with encouragement)
2007-06-12 16:24:56 +00:00
..
defines
files Import rewrite of IPv4 socket multicast layer to support source-specific 2007-06-12 16:24:56 +00:00
files.amd64 Use default options for default partitioning schemes, rather than 2007-06-11 00:38:06 +00:00
files.arm opt_ah.h ends up copied into a kernelcompile directory in some 2006-12-18 05:45:23 +00:00
files.i386 Use default options for default partitioning schemes, rather than 2007-06-11 00:38:06 +00:00
files.ia64 LINT on ia64 requires memset symbol too. Make fire it is present by adding 2007-04-09 14:02:18 +00:00
files.pc98 Use default options for default partitioning schemes, rather than 2007-06-11 00:38:06 +00:00
files.powerpc sort. 2007-04-06 11:29:52 +00:00
files.sparc64 Use default options for default partitioning schemes, rather than 2007-06-11 00:38:06 +00:00
files.sun4v Use default options for default partitioning schemes, rather than 2007-06-11 00:38:06 +00:00
kern.mk Temporarily add 'WITH_GCC3' that removes -Wno-pointer-sign from the 2007-05-24 21:53:42 +00:00
kern.post.mk If KERNEL_EXTRA is defined, make kernel-all target depend on it. 2007-03-23 21:55:59 +00:00
kern.pre.mk Disable -Werror for now. 2007-05-19 04:48:08 +00:00
kmod_syms.awk
kmod.mk Disable -Werror for now. 2007-05-19 04:48:08 +00:00
ldscript.amd64 Provide the _start_ctors and _stop_ctors symbols. As on i386, the addresses 2004-05-29 01:09:00 +00:00
ldscript.arm Create a non-elf pure binary version of the kernel as well. 2005-11-24 02:25:49 +00:00
ldscript.i386 Align the .ctors section correctly. 2003-12-03 07:40:03 +00:00
ldscript.ia64 Have the linker provide btext. It's used for profiling. 2004-08-25 07:43:28 +00:00
ldscript.powerpc
ldscript.sparc64 Use the same SEARCH_DIR as other platforms. 2003-06-07 18:23:50 +00:00
Makefile.amd64 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.arm Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.i386 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.ia64 Remove definition of the GCC3 variable. It was introduced in rev. 2007-06-02 21:30:39 +00:00
Makefile.pc98 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.powerpc Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.sparc64 Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
Makefile.sun4v Revert config(8) version bump. It brings major pain for people working on 2007-05-16 17:23:54 +00:00
makeLINT.mk
makeLINT.sed
newvers.sh Pad the strings sccs[], version[], and osrelease[] up to a minimum of 2005-08-19 01:49:15 +00:00
NOTES Update 802.11 wireless support: 2007-06-11 03:36:55 +00:00
options Remove the MUTEX_WAKE_ALL option and make it the default behaviour for our 2007-06-08 21:36:52 +00:00
options.amd64 Remove sio(4) and related options from MI files to amd64, i386 2006-07-29 18:38:54 +00:00
options.arm Add CPU_XSCALE_81342 before I forget again. 2007-06-11 21:31:13 +00:00
options.i386 Remove sio(4) and related options from MI files to amd64, i386 2006-07-29 18:38:54 +00:00
options.ia64 o Move ISA specific code from ppc.c to ppc_isa.c -- a bus front- 2006-04-24 23:31:51 +00:00
options.pc98 Remove sio(4) and related options from MI files to amd64, i386 2006-07-29 18:38:54 +00:00
options.powerpc Catch up with sparc64 OFWCONS_POLL_HZ change 2004-06-25 13:44:34 +00:00
options.sparc64 - In sunkbd_probe_keyboard() don't bother to determine the keyboard layout 2006-11-02 00:01:15 +00:00
options.sun4v Remove remnants from the sparc64 origin of this file and which are 2007-01-19 12:22:50 +00:00
systags.sh Use a simpler way to reach the <machine> include dir, which should 2005-12-03 21:37:54 +00:00