From: Linus Lüssing Date: Sun, 13 Sep 2020 23:30:19 +0200 Subject: batctl: tcpdump: Fix endianness in ICMPv6 Echo Request/Reply parsing The ICMPv6 Echo Request/Reply sequence number and id as well as the IPv6 header length are two byte long fields and therefore might need a conversion on a little endian system. Otherwise the output will be broken on such a machine. Fixes: 35b37756f4a3 ("add IPv6 support to tcpdump parser") Signed-off-by: Linus Lüssing Signed-off-by: Sven Eckelmann Origin: upstream, https://git.open-mesh.org/batctl.git/commit/e42f73d0d2a04edfbed1b9d0ad9fd57af9e90faf diff --git a/tcpdump.c b/tcpdump.c index 72c1869eb50d25c1f6b1e1fcae42199b9337cb4e..f3b1b8bd536e83e583bc535d01630843b80a558d 100644 --- a/tcpdump.c +++ b/tcpdump.c @@ -537,13 +537,15 @@ static void dump_ipv6(unsigned char *packet_buff, ssize_t buff_len, break; case ICMP6_ECHO_REQUEST: printf(" echo request, id: %d, seq: %d, length: %hu\n", - icmphdr->icmp6_id, icmphdr->icmp6_seq, - iphdr->ip6_plen); + ntohs(icmphdr->icmp6_id), + ntohs(icmphdr->icmp6_seq), + ntohs(iphdr->ip6_plen)); break; case ICMP6_ECHO_REPLY: printf(" echo reply, id: %d, seq: %d, length: %hu\n", - icmphdr->icmp6_id, icmphdr->icmp6_seq, - iphdr->ip6_plen); + ntohs(icmphdr->icmp6_id), + ntohs(icmphdr->icmp6_seq), + ntohs(iphdr->ip6_plen)); break; case ICMP6_TIME_EXCEEDED: printf(" time exceeded in-transit, length %zu\n",