summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Kanstrup <mikael.kanstrup@gmail.com>2017-06-23 08:36:42 +0200
committerRoland Knall <rknall@gmail.com>2017-06-26 14:16:33 +0000
commit707b78907487cbf2965521b31e6c3222e4d8459f (patch)
tree6182edc9f0f14f936d0884ac686f2b27d63ee6b6
parentfaf100ecc55274b1389544516d90293dce37fc42 (diff)
downloadwireshark-707b78907487cbf2965521b31e6c3222e4d8459f.tar.gz
androiddump: Add helper functions for data link type conversions
Change-Id: I406f5cd6d979442014fdda01deacbcec2052ec18 Reviewed-on: https://code.wireshark.org/review/22400 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Roland Knall <rknall@gmail.com>
-rw-r--r--extcap/androiddump.c47
1 files changed, 26 insertions, 21 deletions
diff --git a/extcap/androiddump.c b/extcap/androiddump.c
index 741c02e01f..b7398de8e6 100644
--- a/extcap/androiddump.c
+++ b/extcap/androiddump.c
@@ -341,25 +341,41 @@ static void useNormalConnectTimeout(socket_handle_t sock) {
g_debug("Can't set socket timeout, using default");
}
+static int extcap_encap_to_dlt(int encap)
+{
+ int dlt = -1;
+#ifdef ANDROIDDUMP_USE_LIBPCAP
+ if (encap == EXTCAP_ENCAP_BLUETOOTH_H4_WITH_PHDR)
+ dlt = DLT_BLUETOOTH_H4_WITH_PHDR;
+ else if (encap == EXTCAP_ENCAP_WIRESHARK_UPPER_PDU)
+ dlt = DLT_WIRESHARK_UPPER_PDU;
+ else if (encap == EXTCAP_ENCAP_ETHERNET)
+ dlt = DLT_EN10MB;
+ return dlt;
+#else
+ if (encap == EXTCAP_ENCAP_BLUETOOTH_H4_WITH_PHDR)
+ dlt = WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR;
+ else if (encap == EXTCAP_ENCAP_WIRESHARK_UPPER_PDU)
+ dlt = WTAP_ENCAP_WIRESHARK_UPPER_PDU;
+ else if (encap == EXTCAP_ENCAP_ETHERNET)
+ dlt = WTAP_ENCAP_ETHERNET;
+#endif
+ return dlt;
+}
static struct extcap_dumper extcap_dumper_open(char *fifo, int encap) {
struct extcap_dumper extcap_dumper;
int encap_ext;
-#ifdef ANDROIDDUMP_USE_LIBPCAP
- pcap_t *pcap;
-
- if (encap == EXTCAP_ENCAP_BLUETOOTH_H4_WITH_PHDR)
- encap_ext = DLT_BLUETOOTH_H4_WITH_PHDR;
- else if (encap == EXTCAP_ENCAP_WIRESHARK_UPPER_PDU)
- encap_ext = DLT_WIRESHARK_UPPER_PDU;
- else if (encap == EXTCAP_ENCAP_ETHERNET)
- encap_ext = DLT_EN10MB;
- else {
+ encap_ext = extcap_encap_to_dlt(encap);
+ if (encap_ext == -1) {
g_warning("Unknown encapsulation");
exit(EXIT_CODE_UNKNOWN_ENCAPSULATION_LIBPCAP);
}
+#ifdef ANDROIDDUMP_USE_LIBPCAP
+ pcap_t *pcap;
+
pcap = pcap_open_dead_with_tstamp_precision(encap_ext, PACKET_LENGTH, PCAP_TSTAMP_PRECISION_NANO);
extcap_dumper.dumper.pcap = pcap_dump_open(pcap, fifo);
if (!extcap_dumper.dumper.pcap) {
@@ -379,17 +395,6 @@ static struct extcap_dumper extcap_dumper_open(char *fifo, int encap) {
register_all_wiretap_modules();
#endif
- if (encap == EXTCAP_ENCAP_BLUETOOTH_H4_WITH_PHDR)
- encap_ext = WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR;
- else if (encap == EXTCAP_ENCAP_WIRESHARK_UPPER_PDU)
- encap_ext = WTAP_ENCAP_WIRESHARK_UPPER_PDU;
- else if (encap == EXTCAP_ENCAP_ETHERNET)
- encap_ext = WTAP_ENCAP_ETHERNET;
- else {
- g_warning("Unknown Wiretap encapsulation");
- exit(EXIT_CODE_UNKNOWN_ENCAPSULATION_WIRETAP);
- }
-
extcap_dumper.dumper.wtap = wtap_dump_open(fifo, WTAP_FILE_TYPE_SUBTYPE_PCAP_NSEC, encap_ext, PACKET_LENGTH, FALSE, &err);
if (!extcap_dumper.dumper.wtap) {
cfile_dump_open_failure_message("androiddump", fifo, err, WTAP_FILE_TYPE_SUBTYPE_PCAP_NSEC);