aboutsummaryrefslogtreecommitdiffstats
path: root/extcap
diff options
context:
space:
mode:
authorMikael Kanstrup <mikael.kanstrup@sony.com>2018-05-23 17:10:27 +0200
committerRoland Knall <rknall@gmail.com>2018-05-24 07:55:00 +0000
commitafd0eef4f63839b30711cba6d0ebe334ff2ef450 (patch)
tree154e9b84a49ffb42d8ef001c92abe47345abaa2e /extcap
parentc59fae221e3570d928666e82e213892261523d62 (diff)
androiddump: Fix tcpdump encap type when libwiretap is used
androiddump determines encap type by parsing pcap global header from tcpdump binary output. Only when libpcap is used with androiddump this (pcap linktype) value can be used right away. Libwiretap uses its own encap values but is feed with pcap linktype values making the whole packet encapsulation invalid. Fix by converting pcap linktype values into wiretap encap values (For pcap linktype definitions see http://www.tcpdump.org/linktypes.html) (For wtap encap defininitions see wiretap/wtap.h) Fixes: bfef57ebb7 ("androiddump: Fix and simplify tcpdump capture") Change-Id: I5ea86204b8e5774fd84d4007db8c2910680dbd53 Reviewed-on: https://code.wireshark.org/review/27747 Petri-Dish: Anders Broman <a.broman58@gmail.com> Reviewed-by: Florian Bezold <florian.bezold@esrlabs.com> Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'extcap')
-rw-r--r--extcap/androiddump.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/extcap/androiddump.c b/extcap/androiddump.c
index 3d518fd63c..b1d5bbd6e2 100644
--- a/extcap/androiddump.c
+++ b/extcap/androiddump.c
@@ -73,6 +73,7 @@
#endif
#else
#include "wiretap/wtap.h"
+ #include "wiretap/pcap-encap.h"
#endif
#ifdef ANDROIDDUMP_USE_LIBPCAP
@@ -2412,8 +2413,11 @@ static int capture_android_tcpdump(char *interface, char *fifo,
closesocket(sock);
return EXIT_CODE_GENERIC;
}
-
- extcap_dumper = extcap_dumper_open(fifo, (int) data[20]);
+ int encap = (int)data[20];
+#ifndef ANDROIDDUMP_USE_LIBPCAP
+ encap = wtap_pcap_encap_to_wtap_encap(encap);
+#endif
+ extcap_dumper = extcap_dumper_open(fifo, encap);
used_buffer_length = 0;
while (endless_loop) {