X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/730d36df2c5582096e293cffc81e1682bbf26ef2..309ca62193772fd8ba532fd413b51a61be0c741e:/print-tcp.c?ds=sidebyside diff --git a/print-tcp.c b/print-tcp.c index 24025e59..88b46157 100644 --- a/print-tcp.c +++ b/print-tcp.c @@ -129,30 +129,8 @@ static int tcp_cksum(register const struct ip *ip, register const struct tcphdr *tp, register u_int len) { - struct phdr { - u_int32_t src; - u_int32_t dst; - u_char mbz; - u_char proto; - u_int16_t len; - } ph; - struct cksum_vec vec[2]; - - /* pseudo-header.. */ - ph.len = htons((u_int16_t)len); - ph.mbz = 0; - ph.proto = IPPROTO_TCP; - memcpy(&ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t)); - if (IP_HL(ip) == 5) - memcpy(&ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t)); - else - ph.dst = ip_finddst(ip); - - vec[0].ptr = (const u_int8_t *)(void *)&ph; - vec[0].len = sizeof(ph); - vec[1].ptr = (const u_int8_t *)tp; - vec[1].len = len; - return in_cksum(vec, 2); + return (nextproto4_cksum(ip, (const u_int8_t *)tp, len, + IPPROTO_TCP)); } void @@ -432,7 +410,7 @@ tcp_print(register const u_char *bp, register u_int length, #ifdef INET6 else if (IP_V(ip) == 6 && ip6->ip6_plen) { if (TTEST2(tp->th_sport, length)) { - sum = nextproto6_cksum(ip6, (u_short *)tp, length, IPPROTO_TCP); + sum = nextproto6_cksum(ip6, (const u_int8_t *)tp, length, IPPROTO_TCP); tcp_sum = EXTRACT_16BITS(&tp->th_sum); (void)printf(", cksum 0x%04x", tcp_sum);