Sun Dec 19 20:20:44 2010 UTC ()
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.

This is a patched standalone version not requiring bluez-libs, suitable
for use with the netbt Bluetooth stack [originating] in NetBSD.
--
the sysutils/hcidump package (which this will replace) is a descendent of a
previous version of the bluez-hcidump package.

Status:

Vendor Tag:	TNF
Release Tags:	pkgsrc-base


(plunky)
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/DESCR
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/Makefile
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/PLIST
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/distinfo
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/options.mk
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-aa
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ab
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ac
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ad
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ae
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-af
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ag
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ah
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ai
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-aj
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ak
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-al
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-am
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-an
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ao
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-ap
diff -r0 -r1.1.1.1 pkgsrc/sysutils/netbt-hcidump/patches/patch-aq

File Added: pkgsrc/sysutils/netbt-hcidump/DESCR
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.

This is a patched standalone version not requiring bluez-libs, suitable
for use with the netbt Bluetooth stack [originating] in NetBSD.

File Added: pkgsrc/sysutils/netbt-hcidump/Makefile
# $NetBSD: Makefile,v 1.1.1.1 2010/12/19 20:20:42 plunky Exp $

DISTNAME=		netbt-hcidump-1.42
CATEGORIES=		sysutils
MASTER_SITES=		http://bluez.sourceforge.net/download/	\
			http://www.kernel.org/pub/linux/bluetooth/
DISTFILES=		bluez-hcidump-1.42.tar.gz	\
			bluez-4.81.tar.gz

MAINTAINER=		plunky@rya-online.net
HOMEPAGE=		http://www.bluez.org/
COMMENT=		Bluetooth packet analyzer (netbt version)

LICENSE=		gnu-gpl-v2

ONLY_FOR_PLATFORM=	NetBSD-[4-9].*-*
CONFLICTS+=		hcidump-[0-9]* bluez-hcidump-[0-9]*

INSTALLATION_DIRS=	sbin ${PKGMANDIR}/cat8 ${PKGMANDIR}/man8

WRKSRC=			${WRKDIR}/bluez-hcidump-1.42
LIBSRC=			${WRKDIR}/bluez-4.81

PKG_DESTDIR_SUPPORT=	user-destdir

.include "options.mk"

CPPFLAGS+=	-DVERSION=\""1.42-netbt"\"

USE_BSD_MAKEFILE=	yes

post-extract:
	mkdir ${WRKSRC}/bluetooth
	cp ${LIBSRC}/lib/bluetooth.h ${WRKSRC}/bluetooth
	cp ${LIBSRC}/lib/hci.h ${WRKSRC}/bluetooth
	cp ${LIBSRC}/lib/hci_lib.h ${WRKSRC}/bluetooth
	cp ${LIBSRC}/lib/l2cap.h ${WRKSRC}/bluetooth
	cp ${LIBSRC}/lib/bluetooth.c ${WRKSRC}/src/bt_lib.c
	cp ${LIBSRC}/lib/hci.c ${WRKSRC}/src/hci_lib.c

.include "../../mk/bsd.pkg.mk"

File Added: pkgsrc/sysutils/netbt-hcidump/PLIST
@comment $NetBSD: PLIST,v 1.1.1.1 2010/12/19 20:20:42 plunky Exp $
man/cat8/hcidump.0
man/man8/hcidump.8
sbin/hcidump

File Added: pkgsrc/sysutils/netbt-hcidump/distinfo
$NetBSD: distinfo,v 1.1.1.1 2010/12/19 20:20:42 plunky Exp $

SHA1 (bluez-4.81.tar.gz) = 852c79e2af55ca7db4e4dd66a2e98f839464093b
RMD160 (bluez-4.81.tar.gz) = 700c3ac877279bcb4636ed175ea3cdbb04107967
Size (bluez-4.81.tar.gz) = 1104444 bytes
SHA1 (bluez-hcidump-1.42.tar.gz) = b18e41cbf92c00cfd0331506312fa248b39a0eee
RMD160 (bluez-hcidump-1.42.tar.gz) = c80eab49c75b8782d35e64eecfbc5a0e56214d4c
Size (bluez-hcidump-1.42.tar.gz) = 150060 bytes
SHA1 (patch-aa) = 6e30f3bd8e06e152bd2b65b32e173de039320787
SHA1 (patch-ab) = b938aa1d4cba4891b58e7d4a2add3e88f86605f7
SHA1 (patch-ac) = adbc1e33996e61ccc5c016154bee3c4af72d784d
SHA1 (patch-ad) = b7007a6c55011ac6a1da2fd1883f953532d75ea5
SHA1 (patch-ae) = e59424e971879f368c09adae894088952612f1be
SHA1 (patch-af) = 7748d6d83ce118eff90b9d8158badd0664faa308
SHA1 (patch-ag) = 858aa64a1495b81231a0ebd20b1b14576d3fbaab
SHA1 (patch-ah) = b5a190251ccb9e55d2ac8460a436df3026d6be3d
SHA1 (patch-ai) = 46239a7931f8fecee9216b13f98227711c69c54d
SHA1 (patch-aj) = 3ef708a26e82ea209ef66c556889ba0cb9c9dd86
SHA1 (patch-ak) = 0d7d144bb67cd5ebf8e3c74fbb0fbdcce87bc4ac
SHA1 (patch-al) = cdef6a512fc1fa4e64c59ae43ce07506103061d4
SHA1 (patch-am) = 0f3d33c1f06edabed5fef4500109a83eff599219
SHA1 (patch-an) = 35d9fd1b0d82addf0688e2997fdf589fbc89d921
SHA1 (patch-ao) = 519b39a8dc2217c06d618c45029df6bd4437117a
SHA1 (patch-ap) = f957985946117ffadcd10c39bfe74e132e173c86
SHA1 (patch-aq) = a6a49e3469768971121def3cf329f16be53c2e1e

File Added: pkgsrc/sysutils/netbt-hcidump/Attic/options.mk
# $NetBSD: options.mk,v 1.1.1.1 2010/12/19 20:20:42 plunky Exp $

PKG_OPTIONS_VAR=	PKG_OPTIONS.hcidump
PKG_SUPPORTED_OPTIONS=	inet6
PKG_SUGGESTED_OPTIONS=	inet6

.include "../../mk/bsd.options.mk"

.if !empty(PKG_OPTIONS:Minet6)
CPPFLAGS+=	-DINET6
.endif

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-aa
$NetBSD: patch-aa,v 1.1.1.1 2010/12/19 20:20:42 plunky Exp $

--- Makefile.orig	2009-11-30 19:29:18.000000000 +0000
+++ Makefile
@@ -0,0 +1,4 @@
+
+SUBDIR+=	src
+
+.include <bsd.subdir.mk>

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ab
$NetBSD: patch-ab,v 1.1.1.1 2010/12/19 20:20:42 plunky Exp $

--- bluetooth/bluetooth.h.orig	2009-11-30 19:29:17.000000000 +0000
+++ bluetooth/bluetooth.h
@@ -30,6 +30,7 @@
 extern "C" {
 #endif
 
+#if 0
 #include <stdio.h>
 #include <stdint.h>
 #include <string.h>
@@ -97,6 +98,17 @@ enum {
 #else
 #error "Unknown byte order"
 #endif
+#else
+#include <bluetooth.h>
+#include <string.h>
+
+#define SOL_HCI		BTPROTO_HCI
+
+#define htobs(d)	htole16(d)
+#define htobl(d)	htole32(d)
+#define btohs(d)	le16toh(d)
+#define btohl(d)	le32toh(d)
+#endif
 
 /* Bluetooth unaligned access */
 #define bt_get_unaligned(ptr)			\
@@ -115,6 +127,7 @@ do {						\
 	__p->__v = (val);			\
 } while(0)
 
+#if 0
 /* BD Address */
 typedef struct {
 	uint8_t b[6];
@@ -123,6 +136,7 @@ typedef struct {
 #define BDADDR_ANY   (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}})
 #define BDADDR_ALL   (&(bdaddr_t) {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}})
 #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}})
+#endif
 
 /* Copy, swap, convert BD Address */
 static inline int bacmp(const bdaddr_t *ba1, const bdaddr_t *ba2)
@@ -135,9 +149,12 @@ static inline void bacpy(bdaddr_t *dst, 
 }
 
 void baswap(bdaddr_t *dst, const bdaddr_t *src);
+#if 0
 bdaddr_t *strtoba(const char *str);
 char *batostr(const bdaddr_t *ba);
+#endif
 int ba2str(const bdaddr_t *ba, char *str);
+#if 0
 int str2ba(const char *str, bdaddr_t *ba);
 int ba2oui(const bdaddr_t *ba, char *oui);
 int bachk(const char *str);
@@ -146,12 +163,15 @@ int baprintf(const char *format, ...);
 int bafprintf(FILE *stream, const char *format, ...);
 int basprintf(char *str, const char *format, ...);
 int basnprintf(char *str, size_t size, const char *format, ...);
+#endif
 
 void *bt_malloc(size_t size);
 void bt_free(void *ptr);
 
+#if 0
 int bt_error(uint16_t code);
 char *bt_compidtostr(int id);
+#endif
 
 #ifdef __cplusplus
 }

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ac
$NetBSD: patch-ac,v 1.1.1.1 2010/12/19 20:20:42 plunky Exp $

--- bluetooth/hci.h.orig	2010-09-30 08:53:08.000000000 +0000
+++ bluetooth/hci.h
@@ -39,6 +39,7 @@ extern "C" {
 #define HCI_MAX_EVENT_SIZE	260
 #define HCI_MAX_FRAME_SIZE	(HCI_MAX_ACL_SIZE + 4)
 
+#if 0
 /* HCI dev events */
 #define HCI_DEV_REG	1
 #define HCI_DEV_UNREG	2
@@ -101,6 +102,7 @@ enum {
 #define HCIUNBLOCKADDR	_IOW('H', 231, int)
 
 #define HCIINQUIRY	_IOR('H', 240, int)
+#endif
 
 #ifndef __NO_HCI_DEFS
 
@@ -2232,6 +2234,7 @@ typedef struct {
 
 #endif /* _NO_HCI_DEFS */
 
+#if 0
 /* HCI Socket options */
 #define HCI_DATA_DIR	1
 #define HCI_FILTER	2
@@ -2339,6 +2342,12 @@ struct hci_inquiry_req {
 	uint8_t  num_rsp;
 };
 #define IREQ_CACHE_FLUSH 0x0001
+#else
+#define HCI_CMSG_DIR	SCM_HCI_DIRECTION
+#define HCI_CMSG_TSTAMP	SCM_TIMESTAMP
+#define HCI_DEV_NONE	NULL
+#define HCI_DATA_DIR	SO_HCI_DIRECTION
+#endif
 
 #ifdef __cplusplus
 }

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ad
$NetBSD: patch-ad,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- bluetooth/hci_lib.h.orig	2010-09-30 08:53:08.000000000 +0000
+++ bluetooth/hci_lib.h
@@ -30,6 +30,7 @@
 extern "C" {
 #endif
 
+#if 0
 struct hci_request {
 	uint16_t ogf;
 	uint16_t ocf;
@@ -135,11 +136,15 @@ char *hci_bustostr(int bus);
 char *hci_typetostr(int type);
 char *hci_dtypetostr(int type);
 char *hci_dflagstostr(uint32_t flags);
+#endif
 char *hci_ptypetostr(unsigned int ptype);
+#if 0
 int hci_strtoptype(char *str, unsigned int *val);
 char *hci_scoptypetostr(unsigned int ptype);
 int hci_strtoscoptype(char *str, unsigned int *val);
+#endif
 char *hci_lptostr(unsigned int ptype);
+#if 0
 int hci_strtolp(char *str, unsigned int *val);
 char *hci_lmtostr(unsigned int ptype);
 int hci_strtolm(char *str, unsigned int *val);
@@ -147,9 +152,13 @@ int hci_strtolm(char *str, unsigned int 
 char *hci_cmdtostr(unsigned int cmd);
 char *hci_commandstostr(uint8_t *commands, char *pref, int width);
 
+#endif
 char *hci_vertostr(unsigned int ver);
+#if 0
 int hci_strtover(char *str, unsigned int *ver);
+#endif
 char *lmp_vertostr(unsigned int ver);
+#if 0
 int lmp_strtover(char *str, unsigned int *ver);
 
 char *lmp_featurestostr(uint8_t *features, char *pref, int width);
@@ -218,6 +227,7 @@ static inline int hci_filter_test_opcode
 {
 	return (f->opcode == opcode);
 }
+#endif
 
 #ifdef __cplusplus
 }

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ae
$NetBSD: patch-ae,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- bluetooth/l2cap.h.orig	2009-11-30 19:29:17.000000000 +0000
+++ bluetooth/l2cap.h
@@ -30,6 +30,7 @@
 extern "C" {
 #endif
 
+#if 0
 #include <sys/socket.h>
 
 /* L2CAP defaults */
@@ -66,6 +67,7 @@ struct l2cap_conninfo {
 #define L2CAP_LM_TRUSTED	0x0008
 #define L2CAP_LM_RELIABLE	0x0010
 #define L2CAP_LM_SECURE		0x0020
+#endif
 
 /* L2CAP command codes */
 #define L2CAP_COMMAND_REJ	0x01

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-af
$NetBSD: patch-af,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- parser/bnep.c.orig	2007-02-18 03:39:02.000000000 +0000
+++ parser/bnep.c
@@ -33,7 +33,7 @@
 #include <string.h>
 #include <sys/types.h>
 
-#include <net/ethernet.h>
+#include <net/ethertypes.h>
 
 #include "parser.h"
 

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ag
$NetBSD: patch-ag,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

fix SDP universal attributes, has been reported upstream (30 Nov 2009)

--- parser/sdp.c.orig	2009-11-30 19:29:31.000000000 +0000
+++ parser/sdp.c
@@ -194,8 +194,8 @@ static sdp_attr_id_nam_lookup_table_t sd
 	{ SDP_ATTR_ID_BLUETOOTH_PROFILE_DESCRIPTOR_LIST, "BTProfileDescList"  },
 	{ SDP_ATTR_ID_DOCUMENTATION_URL,                 "DocURL"             },
 	{ SDP_ATTR_ID_CLIENT_EXECUTABLE_URL,             "ClientExeURL"       },
-	{ SDP_ATTR_ID_ICON_10,                           "Icon10"             },
 	{ SDP_ATTR_ID_ICON_URL,                          "IconURL"            },
+	{ SDP_ATTR_ID_ADDITIONAL_PROTOCOL_DESC_LISTS,    "AdditionalProtocolDescLists" },
 	{ SDP_ATTR_ID_SERVICE_NAME,                      "SrvName"            },
 	{ SDP_ATTR_ID_SERVICE_DESCRIPTION,               "SrvDesc"            },
 	{ SDP_ATTR_ID_PROVIDER_NAME,                     "ProviderName"       },

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ah
$NetBSD: patch-ah,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- parser/parser.h.orig	2007-02-18 03:39:02.000000000 +0000
+++ parser/parser.h
@@ -35,7 +35,7 @@ struct frame {
 	uint32_t	data_len;
 	void		*ptr;
 	uint32_t	len;
-	uint16_t	dev_id;
+	char		*dev_id;
 	uint8_t		in;
 	uint8_t		master;
 	uint16_t	handle;

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ai
$NetBSD: patch-ai,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- parser/rfcomm.h.orig	2007-02-18 03:39:02.000000000 +0000
+++ parser/rfcomm.h
@@ -25,7 +25,9 @@
 #ifndef __RFCOMM_H
 #define __RFCOMM_H
 
+#if 0
 #include <endian.h>
+#endif
 
 #define RFCOMM_PSM 3
 

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-aj
$NetBSD: patch-aj,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- parser/tcpip.c.orig	2007-02-18 03:39:02.000000000 +0000
+++ parser/tcpip.c
@@ -32,8 +32,9 @@
 #include <string.h>
 #include <sys/types.h>
 
-#include <net/ethernet.h>
+#include <net/if.h>
 #include <netinet/in.h>
+#include <netinet/in_systm.h>
 #include <netinet/ip.h>
 #include <netinet/ip6.h>
 #include <netinet/if_ether.h>

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ak
$NetBSD: patch-ak,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- src/Makefile.orig	2009-11-30 19:29:18.000000000 +0000
+++ src/Makefile
@@ -0,0 +1,16 @@
+.PATH: ../parser
+
+PROG=	hcidump
+MAN=	hcidump.8
+
+BINDIR=	${PREFIX}/sbin
+
+SRCS=	hcidump.c bt_lib.c hci_lib.c 				\
+	avctp.c avdtp.c bnep.c bpa.c capi.c cmtp.c csr.c	\
+	ericsson.c hci.c hcrp.c hidp.c l2cap.c lmp.c obex.c	\
+	parser.c ppp.c rfcomm.c sdp.c tcpip.c
+
+CPPFLAGS+=	-I..
+LDADD+=		-lbluetooth
+
+.include <bsd.prog.mk>

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-al
$NetBSD: patch-al,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- src/bt_lib.c.orig	2010-01-05 12:27:30.000000000 +0000
+++ src/bt_lib.c
@@ -35,8 +35,8 @@
 #include <string.h>
 #include <sys/socket.h>
 
-#include "bluetooth.h"
-#include "hci.h"
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
 
 void baswap(bdaddr_t *dst, const bdaddr_t *src)
 {
@@ -48,6 +48,7 @@ void baswap(bdaddr_t *dst, const bdaddr_
 		d[i] = s[5-i];
 }
 
+#if 0
 char *batostr(const bdaddr_t *ba)
 {
 	char *str = bt_malloc(18);
@@ -79,6 +80,7 @@ bdaddr_t *strtoba(const char *str)
 
 	return (bdaddr_t *) ba;
 }
+#endif
 
 int ba2str(const bdaddr_t *ba, char *str)
 {
@@ -89,6 +91,7 @@ int ba2str(const bdaddr_t *ba, char *str
 		b[0], b[1], b[2], b[3], b[4], b[5]);
 }
 
+#if 0
 int str2ba(const char *str, bdaddr_t *ba)
 {
 	uint8_t b[6];
@@ -197,6 +200,7 @@ int basnprintf(char *str, size_t size, c
 
 	return len;
 }
+#endif
 
 void *bt_malloc(size_t size)
 {
@@ -208,6 +212,7 @@ void bt_free(void *ptr)
 	free(ptr);
 }
 
+#if 0
 /* Bluetooth error codes to Unix errno mapping */
 int bt_error(uint16_t code)
 {
@@ -282,6 +287,7 @@ int bt_error(uint16_t code)
 		return ENOSYS;
 	}
 }
+#endif
 
 char *bt_compidtostr(int compid)
 {

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-am
$NetBSD: patch-am,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- src/hci_lib.c.orig	2010-09-30 09:12:22.000000000 +0000
+++ src/hci_lib.c
@@ -41,9 +41,9 @@
 #include <sys/ioctl.h>
 #include <sys/socket.h>
 
-#include "bluetooth.h"
-#include "hci.h"
-#include "hci_lib.h"
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
+#include <bluetooth/hci_lib.h>
 
 #ifndef MIN
 #define MIN(x, y) ((x) < (y) ? (x) : (y))
@@ -71,6 +71,7 @@ static char *hci_bit2str(hci_map *m, uns
 	return str;
 }
 
+#if 0
 static int hci_str2bit(hci_map *map, char *str, unsigned int *val)
 {
 	char *t, *ptr;
@@ -94,6 +95,7 @@ static int hci_str2bit(hci_map *map, cha
 
 	return set;
 }
+#endif
 
 static char *hci_uint2str(hci_map *m, unsigned int val)
 {
@@ -114,6 +116,7 @@ static char *hci_uint2str(hci_map *m, un
 	return str;
 }
 
+#if 0
 static int hci_str2uint(hci_map *map, char *str, unsigned int *val)
 {
 	char *t, *ptr;
@@ -212,6 +215,7 @@ char *hci_dflagstostr(uint32_t flags)
 	}
 	return str;
 }
+#endif
 
 /* HCI packet type mapping */
 static hci_map pkt_type_map[] = {
@@ -233,6 +237,7 @@ static hci_map pkt_type_map[] = {
 	{ NULL }
 };
 
+#if 0
 static hci_map sco_ptype_map[] = {
 	{ "HV1",   0x0001   },
 	{ "HV2",   0x0002   },
@@ -246,12 +251,15 @@ static hci_map sco_ptype_map[] = {
 	{ "3-EV5", HCI_3EV5 },
 	{ NULL }
 };
+#endif
 
 char *hci_ptypetostr(unsigned int ptype)
 {
+	ptype ^= (HCI_2DH1|HCI_2DH3|HCI_2DH5|HCI_3DH1|HCI_3DH3|HCI_3DH5);
 	return hci_bit2str(pkt_type_map, ptype);
 }
 
+#if 0
 int hci_strtoptype(char *str, unsigned int *val)
 {
 	return hci_str2bit(pkt_type_map, str, val);
@@ -266,6 +274,7 @@ int hci_strtoscoptype(char *str, unsigne
 {
 	return hci_str2bit(sco_ptype_map, str, val);
 }
+#endif
 
 /* Link policy mapping */
 static hci_map link_policy_map[] = {
@@ -282,6 +291,7 @@ char *hci_lptostr(unsigned int lp)
 	return hci_bit2str(link_policy_map, lp);
 }
 
+#if 0
 int hci_strtolp(char *str, unsigned int *val)
 {
 	return hci_str2bit(link_policy_map, str, val);
@@ -638,6 +648,7 @@ char *hci_commandstostr(uint8_t *command
 
 	return str;
 }
+#endif
 
 /* Version mapping */
 static hci_map ver_map[] = {
@@ -656,16 +667,19 @@ char *hci_vertostr(unsigned int ver)
 	return hci_uint2str(ver_map, ver);
 }
 
+#if 0
 int hci_strtover(char *str, unsigned int *ver)
 {
 	return hci_str2uint(ver_map, str, ver);
 }
+#endif
 
 char *lmp_vertostr(unsigned int ver)
 {
 	return hci_uint2str(ver_map, ver);
 }
 
+#if 0
 int lmp_strtover(char *str, unsigned int *ver)
 {
 	return hci_str2uint(ver_map, str, ver);
@@ -2744,3 +2758,4 @@ int hci_le_create_conn(int dd, uint16_t 
 
 	return 0;
 }
+#endif

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-an
$NetBSD: patch-an,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- src/hcidump.8.orig	2007-07-26 08:34:58.000000000 +0100
+++ src/hcidump.8
@@ -28,7 +28,7 @@ which must be the name of an installed B
 and if
 .B
 -r
-option is not set, data is read from the first available Bluetooth device.
+option is not set, data is read from all available Bluetooth devices.
 .TP
 .BI -l " <len>" "\fR,\fP \-\^\-snap-len=" "<len>"
 Sets max length of processed packets to

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ao
$NetBSD: patch-ao,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

--- src/hcidump.c.orig	2007-07-28 15:41:34.000000000 +0100
+++ src/hcidump.c
@@ -50,6 +50,10 @@
 #include "parser/parser.h"
 #include "parser/sdp.h"
 
+#ifndef AI_ADDRCONFIG
+#define AI_ADDRCONFIG	0
+#endif
+
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 static inline uint64_t ntoh64(uint64_t n)
 {
@@ -165,7 +169,7 @@ static inline int write_n(int fd, char *
 	return t;
 }
 
-static int process_frames(int dev, int sock, int fd, unsigned long flags)
+static int process_frames(char *dev, int sock, int fd, unsigned long flags)
 {
 	struct cmsghdr *cmsg;
 	struct msghdr msg;
@@ -210,7 +214,7 @@ static int process_frames(int dev, int s
 	if (dev == HCI_DEV_NONE)
 		printf("system: ");
 	else
-		printf("device: hci%d ", dev);
+		printf("device: %s ", dev);
 
 	printf("snap_len: %d filter: 0x%lx\n", snap_len, parser.filter);
 
@@ -553,10 +557,13 @@ static int open_file(char *file, int mod
 	return fd;
 }
 
-static int open_socket(int dev, unsigned long flags)
+static int open_socket(char *dev, unsigned long flags)
 {
-	struct sockaddr_hci addr;
+	struct sockaddr_bt addr;
 	struct hci_filter flt;
+#if 1
+	int sk, opt;
+#else
 	struct hci_dev_info di;
 	int sk, dd, opt;
 
@@ -582,6 +589,7 @@ static int open_socket(int dev, unsigned
 
 		hci_close_dev(dd);
 	}
+#endif
 
 	/* Create HCI socket */
 	sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
@@ -597,12 +605,13 @@ static int open_socket(int dev, unsigned
 	}
 
 	opt = 1;
-	if (setsockopt(sk, SOL_HCI, HCI_TIME_STAMP, &opt, sizeof(opt)) < 0) {
+	if (setsockopt(sk, SOL_SOCKET, SO_TIMESTAMP, &opt, sizeof(opt)) < 0) {
 		perror("Can't enable time stamp");
 		return -1;
 	}
 
 	/* Setup filter */
+#if 0
 	hci_filter_clear(&flt);
 	hci_filter_all_ptypes(&flt);
 	hci_filter_all_events(&flt);
@@ -610,12 +619,34 @@ static int open_socket(int dev, unsigned
 		perror("Can't set filter");
 		return -1;
 	}
+#else
+	memset(&flt, 0xff, sizeof(flt));
+	if (setsockopt(sk, BTPROTO_HCI, SO_HCI_EVT_FILTER, &flt, sizeof(flt)) < 0) {
+		perror("Can't set event filter");
+		exit(1);
+	}
+
+	if (setsockopt(sk, BTPROTO_HCI, SO_HCI_PKT_FILTER, &flt, sizeof(flt)) < 0) {
+		perror("Can't set packet filter");
+		exit(1);
+	}
+#endif
 
 	/* Bind socket to the HCI device */
+#if 0
 	addr.hci_family = AF_BLUETOOTH;
 	addr.hci_dev = dev;
+#else
+	memset(&addr, 0, sizeof(addr));
+	addr.bt_len = sizeof(addr);
+	addr.bt_family = AF_BLUETOOTH;
+	if (dev != HCI_DEV_NONE && !bt_devaddr(dev, &addr.bt_bdaddr)) {
+		perror("device");
+		exit(1);
+	}
+#endif
 	if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
-		printf("Can't attach to device hci%d. %s(%d)\n", 
+		printf("Can't attach to device %s. %s(%d)\n", 
 					dev, strerror(errno), errno);
 		return -1;
 	}
@@ -660,11 +691,13 @@ static int open_connection(char *addr, c
 			((struct sockaddr_in *) &ss)->sin_addr.s_addr = htonl(INADDR_ANY);
 			((struct sockaddr_in *) &ss)->sin_port = 0;
 			break;
+#ifdef INET6
 		case AF_INET6:
 			memcpy(&((struct sockaddr_in6 *) &ss)->sin6_addr,
 						&in6addr_any, sizeof(in6addr_any));
 			((struct sockaddr_in6 *) &ss)->sin6_port = 0;
 			break;
+#endif
 		}
 
 		if (bind(sk, (struct sockaddr *) &ss, sizeof(ss)) < 0) {
@@ -854,7 +887,7 @@ static int wait_connection(char *addr, c
 	return -1;
 }
 
-static int run_server(int dev, char *addr, char *port, unsigned long flags)
+static int run_server(char *dev, char *addr, char *port, unsigned long flags)
 {
 	while (1) {
 		int dd, sk;
@@ -950,7 +983,9 @@ static void usage(void)
 	"  -Y, --novendor             No vendor commands or events\n"
 	"  -N, --noappend             No appending to existing files\n"
 	"  -4, --ipv4                 Use IPv4 as transport\n"
+#ifdef INET6
 	"  -6  --ipv6                 Use IPv6 as transport\n"
+#endif
 	"  -h, --help                 Give this help list\n"
 	"      --usage                Give a short usage message\n"
 	);
@@ -983,7 +1018,9 @@ static struct option main_options[] = {
 	{ "nopermcheck",	0, 0, 'Z' },
 	{ "noappend",		0, 0, 'N' },
 	{ "ipv4",		0, 0, '4' },
+#ifdef INET6
 	{ "ipv6",		0, 0, '6' },
+#endif
 	{ "help",		0, 0, 'h' },
 	{ 0 }
 };
@@ -992,7 +1029,7 @@ int main(int argc, char *argv[])
 {
 	unsigned long flags = 0;
 	unsigned long filter = 0;
-	int device = 0;
+	char *device = HCI_DEV_NONE;
 	int defpsm = 0;
 	int defcompid = DEFAULT_COMPID;
 	int opt, pppdump_fd = -1, audio_fd = -1;
@@ -1003,7 +1040,7 @@ int main(int argc, char *argv[])
 		switch(opt) {
 		case 'i':
 			if (strcasecmp(optarg, "none") && strcasecmp(optarg, "system"))
-				device = atoi(optarg + 3);
+				device = optarg;
 			else
 				device = HCI_DEV_NONE;
 			break;
@@ -1113,9 +1150,11 @@ int main(int argc, char *argv[])
 			af = AF_INET;
 			break;
 
+#ifdef INET6
 		case '6':
 			af = AF_INET6;
 			break;
+#endif
 
 		case 'h':
 		default:

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-ap
$NetBSD: patch-ap,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

this is a bugfix, has been reported upstreadm (18 Aug 2009)

plus some additional fixes for overflowing the buffer, also reported (Jan 2010)

--- parser/obex.c.orig	2007-02-18 03:39:02.000000000 +0000
+++ parser/obex.c
@@ -200,27 +200,55 @@ static void parse_headers(int level, str
 		printf("%s (0x%02x)", hi2str(hi), hi);
 		switch (hi & 0xc0) {
 		case 0x00:	/* Unicode */
+			if (frm->len < 2) {
+				printf("\n");
+				return;
+			}
+
 			len = get_u16(frm) - 3;
 			printf(" = Unicode length %d\n", len);
+
+			if (frm->len < len)
+				return;
+
 			raw_ndump(level, frm, len);
 			frm->ptr += len;
 			frm->len -= len;
 			break;
 
 		case 0x40:	/* Byte sequence */
+			if (frm->len < 2) {
+				printf("\n");
+				return;
+			}
+
 			len = get_u16(frm) - 3;
 			printf(" = Sequence length %d\n", len);
+
+			if (frm->len < len)
+				return;
+
 			raw_ndump(level, frm, len);
 			frm->ptr += len;
 			frm->len -= len;
 			break;
 
 		case 0x80:	/* One byte */
+			if (frm->len < 1) {
+				printf("\n");
+				return;
+			}
+
 			hv8 = get_u8(frm);
 			printf(" = %d\n", hv8);
 			break;
 
 		case 0xc0:	/* Four bytes */
+			if (frm->len < 4) {
+				printf("\n");
+				return;
+			}
+
 			hv32 = get_u32(frm);
 			printf(" = %u\n", hv32);
 			break;
@@ -236,7 +264,7 @@ void obex_dump(int level, struct frame *
 
 	frm = add_frame(frm);
 
-	while (frm->len > 0) {
+	while (frm->len > 2) {
 		opcode = get_u8(frm);
 		length = get_u16(frm);
 		status = opcode & 0x7f;
@@ -276,6 +304,11 @@ void obex_dump(int level, struct frame *
 
 		switch (opcode & 0x7f) {
 		case 0x00:	/* Connect */
+			if (frm->len < 4) {
+				printf("\n");
+				return;
+			}
+
 			version = get_u8(frm);
 			flags   = get_u8(frm);
 			pktlen  = get_u16(frm);
@@ -284,17 +317,19 @@ void obex_dump(int level, struct frame *
 			break;
 
 		case 0x05:	/* SetPath */
-			if (length > 3) {
-				flags     = get_u8(frm);
-				constants = get_u8(frm);
-				printf(" flags %d constants %d\n",
-							flags, constants);
-			} else
+			if (frm->len < 2) {
 				printf("\n");
+				return;
+			}
+
+			flags     = get_u8(frm);
+			constants = get_u8(frm);
+			printf(" flags %d constants %d\n", flags, constants);
 			break;
 
 		default:
 			printf("\n");
+			break;
 		}
 
 		if ((status & 0x70) && (parser.flags & DUMP_VERBOSE)) {

File Added: pkgsrc/sysutils/netbt-hcidump/patches/Attic/patch-aq
$NetBSD: patch-aq,v 1.1.1.1 2010/12/19 20:20:43 plunky Exp $

fix SDP universal attributes, has been reported upstream (30 Nov 2009)

--- parser/sdp.h.orig	2009-11-30 19:29:35.000000000 +0000
+++ parser/sdp.h
@@ -129,8 +129,8 @@
 #define SDP_ATTR_ID_BLUETOOTH_PROFILE_DESCRIPTOR_LIST  0x0009
 #define SDP_ATTR_ID_DOCUMENTATION_URL                  0x000A
 #define SDP_ATTR_ID_CLIENT_EXECUTABLE_URL              0x000B
-#define SDP_ATTR_ID_ICON_10                            0x000C
-#define SDP_ATTR_ID_ICON_URL                           0x000D
+#define SDP_ATTR_ID_ICON_URL                           0x000C
+#define SDP_ATTR_ID_ADDITIONAL_PROTOCOL_DESC_LISTS     0x000D
 #define SDP_ATTR_ID_SERVICE_NAME                       0x0100
 #define SDP_ATTR_ID_SERVICE_DESCRIPTION                0x0101
 #define SDP_ATTR_ID_PROVIDER_NAME                      0x0102