On Mon, Mar 31, 2003 at 05:57:36PM -0500, David Powers wrote: > As I mentioned on the list a few days ago I have been having some > trouble with reply-to. In particular it seems to be generating a bad tc > checksum for the return packet. Since then I have rebuilt kernel and > world to source checked out this morning (3/31) and it seems to properly > return route pings, but still fails on the TCP with bad checksums. I > have put a more full TCP packet trace from the client machine below in > case it sparks something in anyone.
I can't reproduce this. One possible explanation is that your network interface is expected to do hardware TCP checksumming, but actually doesn't. In that case, you should see bad checksums for outgoing TCP packets even if reply-to is not used. Maybe you can test with adjusted routing table entries so reply-to is not needed for outgoing packets to get sent through that interface. What output does the following command produce? $ netstat -p tcp | grep check Can you try the patch below and tell us whether it changes anything? Daniel Index: pf.c =================================================================== RCS file: /cvs/src/sys/net/pf.c,v retrieving revision 1.329 diff -u -r1.329 pf.c --- pf.c 31 Mar 2003 13:15:27 -0000 1.329 +++ pf.c 31 Mar 2003 23:23:59 -0000 @@ -3963,14 +3963,18 @@ if (ip->ip_len <= ifp->if_mtu) { ip->ip_len = htons((u_int16_t)ip->ip_len); ip->ip_off = htons((u_int16_t)ip->ip_off); +/* if ((ifp->if_capabilities & IFCAP_CSUM_IPv4) && ifp->if_bridge == NULL) { m0->m_pkthdr.csum |= M_IPV4_CSUM_OUT; ipstat.ips_outhwcsum++; } else { +*/ ip->ip_sum = 0; ip->ip_sum = in_cksum(m0, ip->ip_hl << 2); +/* } +*/ /* Update relevant hardware checksum stats for TCP/UDP */ if (m0->m_pkthdr.csum & M_TCPV4_CSUM_OUT) tcpstat.tcps_outhwcsum++;