X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/d18bb2331dbcb9585d6ca2de96ad02a2ddb7ad03..678e9da1a8b35a1e338457a6e14985e2616eeac8:/print-udp.c diff --git a/print-udp.c b/print-udp.c index 02a1e6ec..885d42e4 100644 --- a/print-udp.c +++ b/print-udp.c @@ -286,30 +286,8 @@ static int udp_cksum(register const struct ip *ip, register const struct udphdr *up, 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_UDP; - 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 *)(void *)up; - vec[1].len = len; - return (in_cksum(vec, 2)); + return (nextproto4_cksum(ip, (const u_int8_t *)(void *)up, len, + IPPROTO_UDP)); } #ifdef INET6 @@ -631,7 +609,7 @@ udp_print(register const u_char *bp, u_int length, ripng_print((const u_char *)(up + 1), length); else if (ISPORT(DHCP6_SERV_PORT) || ISPORT(DHCP6_CLI_PORT)) dhcp6_print((const u_char *)(up + 1), length); - else if (ISPORT(BABEL_PORT)) + else if (ISPORT(BABEL_PORT) || ISPORT(BABEL_PORT_OLD)) babel_print((const u_char *)(up + 1), length); #endif /*INET6*/ /*