cvs commit: src/sys/netinet igmp.h igmp_var.h in.c in.h in_mcast.c
in_pcb.c in_var.h ip_carp.c ip_output.c ip_var.h sctp_pcb.c
udp_usrreq.c udp_var.h src/sys/conf files src/sys/netinet6 in6.h
in6_ifattach.c in6_pcb.c src/sys/sys param.h socket.h ...
Bruce M Simpson
bms at FreeBSD.org
Tue Jun 12 16:24:57 UTC 2007
bms 2007-06-12 16:24:56 UTC
FreeBSD src repository
Modified files:
sys/netinet igmp.h igmp_var.h in.c in.h in_pcb.c
in_var.h ip_carp.c ip_output.c ip_var.h
sctp_pcb.c udp_usrreq.c udp_var.h
sys/conf files
sys/netinet6 in6.h in6_ifattach.c in6_pcb.c
sys/sys param.h socket.h
usr.sbin/mtest mtest.c
lib/libc/net Symbol.map Makefile.inc
share/man/man4 ip.4
tools/regression/netinet/ipsockopt ipsockopt.c
usr.bin/netstat inet.c
. UPDATING
Added files:
sys/netinet in_mcast.c
Log:
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)
Revision Changes Path
1.495 +19 -0 src/UPDATING
1.67 +4 -1 src/lib/libc/net/Makefile.inc
1.17 +4 -0 src/lib/libc/net/Symbol.map
1.49 +15 -1 src/share/man/man4/ip.4
1.1217 +1 -0 src/sys/conf/files
1.14 +38 -1 src/sys/netinet/igmp.h
1.22 +55 -1 src/sys/netinet/igmp_var.h
1.100 +1 -164 src/sys/netinet/in.c
1.100 +123 -1 src/sys/netinet/in.h
1.1 +1786 -0 src/sys/netinet/in_mcast.c (new)
1.193 +2 -1 src/sys/netinet/in_pcb.c
1.61 +48 -0 src/sys/netinet/in_var.h
1.50 +3 -0 src/sys/netinet/ip_carp.c
1.273 +22 -478 src/sys/netinet/ip_output.c
1.101 +30 -7 src/sys/netinet/ip_var.h
1.37 +1 -1 src/sys/netinet/sctp_pcb.c
1.211 +70 -49 src/sys/netinet/udp_usrreq.c
1.32 +1 -0 src/sys/netinet/udp_var.h
1.45 +20 -0 src/sys/netinet6/in6.h
1.37 +22 -10 src/sys/netinet6/in6_ifattach.c
1.80 +2 -1 src/sys/netinet6/in6_pcb.c
1.303 +1 -1 src/sys/sys/param.h
1.94 +3 -0 src/sys/sys/socket.h
1.8 +2 -2 src/tools/regression/netinet/ipsockopt/ipsockopt.c
1.77 +4 -1 src/usr.bin/netstat/inet.c
1.9 +33 -5 src/usr.sbin/mtest/mtest.c
More information about the cvs-src
mailing list