OpenSolaris

Printable Version Enter a New Search
Bug ID 6679754
Synopsis Never ending chksum IPF storry continues - ICMP chksums are wrong
State 10-Fix Delivered (Fix available in build)
Category:Subcategory network:ipfilter
Keywords rtiq_regression
Responsible Engineer Alexandr Nedvedicky
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_87
Fixed In snv_87
Release Fixed solaris_nevada(snv_87)
Related Bugs 6629154 , 2162436
Submit Date 25-March-2008
Last Update Date 9-April-2008
Description
The nat_calc_chksum_diffs() introduced in 6629154, does not compute chksum delta (adjustment) properly for ICMP packets.
The problem is that the NICs with partial chksum delta offload does not handle
chksums for ICMP packets. The ICMP packets must be handled as no partial chksum
would be ever used.

there are two fields in NAT entry structure:
    nat_sumd[0] -- holds adjustment for no chksum offload
    nat_sumd[1] -- holds adjustment for partial chksum offload.

if ICMP protocol is handled, then nat_calc_chksum_diffs() function will perform
nat_sumd[1] = nat_sumd[0] - to enforce use of proper chksum adjustment, when
packets are translated.  also some sanity counter measures were also
introduced: if the L4 header does not use any kind of chksum, then the both
fields (nat_sumd[0], nat_sumd[1]) are set to zero.  the fix also going to use
nat_flags to determine which protocol is handled (TCP/UDP/ICMP).
Work Around
N/A
Comments
N/A