pkgsrc/sysutils/hcidump/patches/patch-ag
salo 5d435ece85 Initial import of hcidump-1.5.1: Bluetooth traffic dumper, similar to tcpdump
hcidump reads raw HCI data coming from and going to a Bluetooth device
and prints to screen commands, events and data in a human-readable form.
Optionally, the dump can be written to a file rather than parsed, and
the dump file can be parsed in a subsequent moment.

NetBSD support added and packaged by Iain D. Hibbert, via pkgsrc-wip.
2006-07-25 16:28:47 +00:00

175 lines
4.4 KiB
Text

$NetBSD: patch-ag,v 1.1.1.1 2006/07/25 16:28:47 salo Exp $
NetBSD compatibility changes
--- parser/hci.c.orig 2003-09-13 00:38:11.000000000 +0100
+++ parser/hci.c
@@ -25,9 +25,13 @@
*/
#include <sys/types.h>
+#include <sys/time.h>
#include <sys/endian.h>
-#include <netgraph/bluetooth/include/ng_hci.h>
#include <stdio.h>
+#include <string.h>
+
+#include <netbt/bluetooth.h>
+#include <netbt/hci.h>
#include "parser.h"
@@ -215,56 +219,56 @@ char *cmd_status_map[] = {
static void command_dump(int level, struct frame *frm)
{
- ng_hci_cmd_pkt_t *hdr = frm->ptr;
+ hci_cmd_hdr_t *hdr = (hci_cmd_hdr_t *)frm->ptr;
uint16_t opcode = le16toh(hdr->opcode);
- uint16_t ogf = NG_HCI_OGF(opcode);
- uint16_t ocf = NG_HCI_OCF(opcode);
+ uint16_t ogf = HCI_OGF(opcode);
+ uint16_t ocf = HCI_OCF(opcode);
char *cmd;
if (p_filter(FILT_HCI))
return;
switch (ogf) {
- case NG_HCI_OGF_INFO:
+ case HCI_OGF_INFO:
if (ocf <= CMD_INFO_NUM)
cmd = cmd_info_map[ocf];
else
cmd = "Unknown";
break;
- case NG_HCI_OGF_HC_BASEBAND:
+ case HCI_OGF_HC_BASEBAND:
if (ocf <= CMD_HOSTCTL_NUM)
cmd = cmd_hostctl_map[ocf];
else
cmd = "Unknown";
break;
- case NG_HCI_OGF_LINK_CONTROL:
+ case HCI_OGF_LINK_CONTROL:
if (ocf <= CMD_LINKCTL_NUM)
cmd = cmd_linkctl_map[ocf];
else
cmd = "Unknown";
break;
- case NG_HCI_OGF_LINK_POLICY:
+ case HCI_OGF_LINK_POLICY:
if (ocf <= CMD_LINKPOL_NUM)
cmd = cmd_linkpol_map[ocf];
else
cmd = "Unknown";
break;
- case NG_HCI_OGF_STATUS:
+ case HCI_OGF_STATUS:
if (ocf <= CMD_STATUS_NUM)
cmd = cmd_status_map[ocf];
else
cmd = "Unknown";
break;
- case NG_HCI_OGF_BT_LOGO:
+ case HCI_OGF_BT_LOGO:
cmd = "Testing";
break;
- case NG_HCI_OGF_VENDOR:
+ case HCI_OGF_VENDOR:
cmd = "Vendor";
break;
@@ -286,7 +290,7 @@ static void command_dump(int level, stru
static void event_dump(int level, struct frame *frm)
{
- ng_hci_event_pkt_t *hdr = frm->ptr;
+ hci_event_hdr_t *hdr = (hci_event_hdr_t *)frm->ptr;
if (p_filter(FILT_HCI))
return;
@@ -296,9 +300,9 @@ static void event_dump(int level, struct
if (hdr->event <= EVENT_NUM)
printf("HCI Event: %s(0x%2.2x) plen %d\n",
event_map[hdr->event], hdr->event, hdr->length);
- else if (hdr->event == NG_HCI_EVENT_BT_LOGO)
+ else if (hdr->event == HCI_EVENT_BT_LOGO)
printf("HCI Event: Testing(0x%2.2x) plen %d\n", hdr->event, hdr->length);
- else if (hdr->event == NG_HCI_EVENT_VENDOR)
+ else if (hdr->event == HCI_EVENT_VENDOR)
printf("HCI Event: Vendor(0x%2.2x) plen %d\n", hdr->event, hdr->length);
else
printf("HCI Event: code 0x%2.2x plen %d\n", hdr->event, hdr->length);
@@ -311,7 +315,7 @@ static void event_dump(int level, struct
static void acl_dump(int level, struct frame *frm)
{
- ng_hci_acldata_pkt_t *hdr = (void *) frm->ptr;
+ hci_acldata_hdr_t *hdr = (void *) frm->ptr;
uint16_t handle = le16toh(hdr->con_handle);
uint16_t dlen = le16toh(hdr->length);
uint8_t flags = (handle >> 12); /* flags */
@@ -319,14 +323,14 @@ static void acl_dump(int level, struct f
if (!p_filter(FILT_HCI)) {
p_indent(level, frm);
printf("ACL data: handle 0x%4.4x flags 0x%2.2x dlen %d\n",
- NG_HCI_CON_HANDLE(handle), flags, dlen);
+ HCI_CON_HANDLE(handle), flags, dlen);
level++;
}
frm->ptr += sizeof(*hdr);
frm->len -= sizeof(*hdr);
frm->flags = flags;
- frm->handle = NG_HCI_CON_HANDLE(handle);
+ frm->handle = HCI_CON_HANDLE(handle);
if (parser.filter & ~FILT_HCI)
l2cap_dump(level, frm);
@@ -336,13 +340,13 @@ static void acl_dump(int level, struct f
static void sco_dump(int level, struct frame *frm)
{
- ng_hci_scodata_pkt_t *hdr = (void *) frm->ptr;
+ hci_scodata_hdr_t *hdr = (void *) frm->ptr;
uint16_t handle = le16toh(hdr->con_handle);
if (!p_filter(FILT_SCO)) {
p_indent(level, frm);
printf("SCO data: handle 0x%4.4x dlen %d\n",
- NG_HCI_CON_HANDLE(handle), hdr->length);
+ HCI_CON_HANDLE(handle), hdr->length);
level++;
frm->ptr += sizeof(*hdr);
@@ -356,19 +360,19 @@ void hci_dump(int level, struct frame *f
uint8_t type = *(uint8_t *)frm->ptr;
switch (type) {
- case NG_HCI_CMD_PKT:
+ case HCI_CMD_PKT:
command_dump(level, frm);
break;
- case NG_HCI_EVENT_PKT:
+ case HCI_EVENT_PKT:
event_dump(level, frm);
break;
- case NG_HCI_ACL_DATA_PKT:
+ case HCI_ACL_DATA_PKT:
acl_dump(level, frm);
break;
- case NG_HCI_SCO_DATA_PKT:
+ case HCI_SCO_DATA_PKT:
sco_dump(level, frm);
break;