git: IPV6 - Attempt to fix tcp46 compatibility listen sockets

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Sep 10 19:18:01 PDT 2009


commit 65f3e756b4a281b51547617519a0ec2dd28285c9
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Wed Sep 9 21:52:01 2009 -0700

    IPV6 - Attempt to fix tcp46 compatibility listen sockets
    
    * When creating the accepted socket via the syncache, if the
      listen socket is INET6 but allows compatibility connections
      the inp created via sonewconn() will probably set IN6P_IPV6_V6ONLY.
    
      This flag must be cleared if the incoming connection is
      actually IPV4, otherwise tcp6_soport() will not properly
      fall through to tcp_soport().
    
    * NOTE: Even though the connection is IPV4 the socket's protocol
      is copied from the listen socket which is INET6.  This seems
      to work ok but it isn't ideal.
    
    * When connecting make sure that IPV6 connections use cpu 0 for
      now (we don't have a proper hash for IPV6 addresses yet).
    
    Reported-by: corecode

Summary of changes:
 sys/netinet/ip_demux.c     |    6 +++
 sys/netinet/tcp_syncache.c |    1 +
 sys/netinet/tcp_usrreq.c   |   74 +++++++++++++++++++++++++++++++++++++++----
 sys/netinet/tcp_var.h      |    1 +
 sys/netinet6/ip6_demux.c   |    9 +++++
 sys/netinet6/tcp6_var.h    |    1 +
 6 files changed, 85 insertions(+), 7 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/65f3e756b4a281b51547617519a0ec2dd28285c9


-- 
DragonFly BSD source repository





More information about the Commits mailing list