aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/btsnoop.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-01-12 00:50:41 +0000
committerMichael Mann <mmann78@netscape.net>2014-01-12 00:50:41 +0000
commitc071a1c7286eb9789dc5c96bb45ab75c75c3ecb4 (patch)
tree39717e01eed5f1ad45d3276c820938e3c0ee7d4d /wiretap/btsnoop.c
parent4210311b6985f957ad4073b410678685f0494865 (diff)
Bluetooth/Ubertooth improvements. Bug 9606 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9606)
From Michal Labedski 1. add support for new btsnoop "format" introduced by BlueZ team in "btmon" tool 2. Bluetooth: Make EIR, AD and COD more generic 3. Bluetooth: HCI/LL: Update Error Codes to Core 4.1 Specification 4. Ubertooth: Fix response command handling 5. Ubertooth: Update to support firmware version 6. Ubertooth: Dissect by Vendor Id/Product Id svn path=/trunk/; revision=54699
Diffstat (limited to 'wiretap/btsnoop.c')
-rw-r--r--wiretap/btsnoop.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/wiretap/btsnoop.c b/wiretap/btsnoop.c
index 69aaf1d108..9fc2cb06f4 100644
--- a/wiretap/btsnoop.c
+++ b/wiretap/btsnoop.c
@@ -63,8 +63,8 @@ struct btsnooprec_hdr {
#define KHciLoggerDatalinkTypeBCSP 1003
/* H5 is the official three wire serial protocol derived from BCSP*/
#define KHciLoggerDatalinkTypeH5 1004
-/* BlueZ 5 Monitor */
-#define KHciLoggerDatalinkBlueZ5Monitor 2001
+/* Linux Monitor */
+#define KHciLoggerDatalinkLinuxMonitor 2001
/* BlueZ 5 Simulator */
#define KHciLoggerDatalinkBlueZ5Simulator 2002
@@ -140,10 +140,9 @@ int btsnoop_open(wtap *wth, int *err, gchar **err_info)
*err = WTAP_ERR_UNSUPPORTED;
*err_info = g_strdup_printf("btsnoop: H5 capture logs unsupported");
return -1;
- case KHciLoggerDatalinkBlueZ5Monitor:
- *err = WTAP_ERR_UNSUPPORTED;
- *err_info = g_strdup_printf("btsnoop: BlueZ 5 Monitor capture logs unsupported");
- return -1;
+ case KHciLoggerDatalinkLinuxMonitor:
+ file_encap=WTAP_ENCAP_BLUETOOTH_LINUX_MONITOR;
+ break;
case KHciLoggerDatalinkBlueZ5Simulator:
*err = WTAP_ERR_UNSUPPORTED;
*err_info = g_strdup_printf("btsnoop: BlueZ 5 Simulator capture logs unsupported");
@@ -227,9 +226,7 @@ static gboolean btsnoop_read_record(wtap *wth, FILE_T fh,
if(wth->file_encap == WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR)
{
phdr->pseudo_header.p2p.sent = (flags & KHciLoggerControllerToHost) ? FALSE : TRUE;
- }
- else if(wth->file_encap == WTAP_ENCAP_BLUETOOTH_HCI)
- {
+ } else if(wth->file_encap == WTAP_ENCAP_BLUETOOTH_HCI) {
phdr->pseudo_header.bthci.sent = (flags & KHciLoggerControllerToHost) ? FALSE : TRUE;
if(flags & KHciLoggerCommandOrEvent)
{
@@ -246,6 +243,9 @@ static gboolean btsnoop_read_record(wtap *wth, FILE_T fh,
{
phdr->pseudo_header.bthci.channel = BTHCI_CHANNEL_ACL;
}
+ } else if (wth->file_encap == WTAP_ENCAP_BLUETOOTH_LINUX_MONITOR) {
+ phdr->pseudo_header.btmon.opcode = flags & 0xFFFF;
+ phdr->pseudo_header.btmon.adapter_id = flags >> 16;
}
@@ -261,8 +261,8 @@ int btsnoop_dump_can_write_encap(int encap)
if (encap == WTAP_ENCAP_PER_PACKET)
return WTAP_ERR_ENCAP_PER_PACKET_UNSUPPORTED;
- /* XXX - for now we only support WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR */
- if (encap != WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR)
+ /* XXX - for now we only support WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR and WTAP_ENCAP_BLUETOOTH_LINUX_MONITOR */
+ if (encap != WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR && encap != WTAP_ENCAP_BLUETOOTH_LINUX_MONITOR)
return WTAP_ERR_UNSUPPORTED_ENCAP;
return 0;