summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2006-03-13 20:50:50 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2006-03-13 20:50:50 +0000
commitcdf3a2b322800fda51ba66d8cdc911228fa8564b (patch)
treef8446afa2189829f3a790349eec1e1d4f5d69092
parentedcaaee164ad486bc1302d11f08a021d0301e8b5 (diff)
downloadwireshark-cdf3a2b322800fda51ba66d8cdc911228fa8564b.tar.gz
if tcp checksum validation is enabled
and if the checksum is wrong and if the checksum field is 0x0000 mark the packet as [Checksum Offloaded] and still allow reassembly of tcp segmetns since it is most likely just a tco checksum offload engine and not a real checksum error svn path=/trunk/; revision=17612
-rw-r--r--epan/dissectors/packet-tcp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index d84aec0bdc..f0fad540b0 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -2591,6 +2591,13 @@ dissect_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Checksum is valid, so we're willing to desegment it. */
desegment_ok = TRUE;
+ } else if (th_sum == 0) {
+ /* checksum is probably fine but checksum offload is used */
+ proto_tree_add_uint_format(tcp_tree, hf_tcp_checksum, tvb,
+ offset + 16, 2, th_sum, "Checksum: 0x%04x [Checksum Offloaded]", th_sum);
+
+ /* Checksum is (probably) valid, so we're willing to desegment it. */
+ desegment_ok = TRUE;
} else {
proto_item *item;