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