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