From owner-cvs-src@FreeBSD.ORG Tue Jun 12 16:24:57 2007 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2416016A469; Tue, 12 Jun 2007 16:24:57 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 131D513C448; Tue, 12 Jun 2007 16:24:57 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l5CGOudH010437; Tue, 12 Jun 2007 16:24:56 GMT (envelope-from bms@repoman.freebsd.org) Received: (from bms@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l5CGOu2B010433; Tue, 12 Jun 2007 16:24:56 GMT (envelope-from bms) Message-Id: <200706121624.l5CGOu2B010433@repoman.freebsd.org> From: Bruce M Simpson Date: Tue, 12 Jun 2007 16:24:56 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: 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 ... X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jun 2007 16:24:57 -0000 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 . 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