mirror of
https://git.openwrt.org/feed/routing.git
synced 2024-06-15 11:43:55 +02:00
59e8d5fa8c
* tcpdump: Fix endianness in ICMPv6 Echo Request/Reply parsing Signed-off-by: Sven Eckelmann <sven@narfation.org>
40 lines
1.6 KiB
Diff
40 lines
1.6 KiB
Diff
From: Linus Lüssing <linus.luessing@c0d3.blue>
|
|
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 <linus.luessing@c0d3.blue>
|
|
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
|
|
|
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",
|