From 34e3e010b69c8a54176d81694f10a99adbb6e5cd Mon Sep 17 00:00:00 2001 From: Yoshinobu Inoue Date: Wed, 19 Apr 2000 15:05:00 +0000 Subject: [PATCH] Let initialize th_sum before in6_cksum(), again. Without this fix, all IPv6 TCP RST packet has wrong cksum value, so IPv6 connect() trial to 5.0 machine won't fail until tcp connect timeout, when they should fail soon. Thanks to haro@tk.kubota.co.jp (Munehiro Matsuda) for his much debugging help and detailed info. --- sys/netinet/tcp_subr.c | 1 + sys/netinet/tcp_timewait.c | 1 + 2 files changed, 2 insertions(+) diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index d4c552f03cc..e38a2a7bf45 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -420,6 +420,7 @@ tcp_respond(tp, ipgen, th, m, ack, seq, flags) nth->th_urp = 0; #ifdef INET6 if (isipv6) { + nth->th_sum = 0; nth->th_sum = in6_cksum(m, IPPROTO_TCP, sizeof(struct ip6_hdr), tlen - sizeof(struct ip6_hdr)); diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c index d4c552f03cc..e38a2a7bf45 100644 --- a/sys/netinet/tcp_timewait.c +++ b/sys/netinet/tcp_timewait.c @@ -420,6 +420,7 @@ tcp_respond(tp, ipgen, th, m, ack, seq, flags) nth->th_urp = 0; #ifdef INET6 if (isipv6) { + nth->th_sum = 0; nth->th_sum = in6_cksum(m, IPPROTO_TCP, sizeof(struct ip6_hdr), tlen - sizeof(struct ip6_hdr));