Subject: Re: kern/29544: NFS server broken in -current
To: None <gnats-bugs@netbsd.org>
From: john heasley <heas@shrubbery.net>
List: netbsd-bugs
Date: 03/05/2005 02:08:47
This seems to fix them problem, where the w/ Jason's patch, the first
fragment did not have the header length.
Index: ip_output.c
===================================================================
RCS file: /cvsroot/src/sys/netinet/ip_output.c,v
retrieving revision 1.144
diff -u -r1.144 ip_output.c
--- ip_output.c 26 Feb 2005 22:45:12 -0000 1.144
+++ ip_output.c 5 Mar 2005 02:07:25 -0000
@@ -978,6 +978,7 @@
KASSERT((m->m_pkthdr.csum_flags & M_CSUM_IPv4) == 0);
} else {
m->m_pkthdr.csum_flags |= M_CSUM_IPv4;
+ m->m_pkthdr.csum_data |= hlen << 16;
}
ipstat.ips_ofragments++;
fragments++;
@@ -997,6 +998,7 @@
m->m_pkthdr.csum_flags &= ~M_CSUM_IPv4;
} else {
KASSERT(m->m_pkthdr.csum_flags & M_CSUM_IPv4);
+ m->m_pkthdr.csum_data |= hlen << 16;
}
sendorfree:
/*
@@ -1038,7 +1040,7 @@
if (csum == 0 && (m->m_pkthdr.csum_flags & M_CSUM_UDPv4) != 0)
csum = 0xffff;
- offset += m->m_pkthdr.csum_data; /* checksum offset */
+ offset += M_CSUM_DATA_IPv4_OFFSET(m->m_pkthdr.csum_data);
if ((offset + sizeof(u_int16_t)) > m->m_len) {
/* This happen when ip options were inserted