1 $NetBSD: patch-ao,v 1.6 2012/03/19 12:09:00 plunky Exp $
3 --- src/hcidump.c.orig 2012-04-20 19:28:19.000000000 +0000
7 #include "lib/hci_lib.h"
10 +#define AI_ADDRCONFIG 0
13 #define SNAP_LEN HCI_MAX_FRAME_SIZE
14 #define DEFAULT_PORT "10839"
16 @@ -144,7 +148,7 @@ static inline int write_n(int fd, char *
20 -static int process_frames(int dev, int sock, int fd, unsigned long flags)
21 +static int process_frames(char *dev, int sock, int fd, unsigned long flags)
25 @@ -186,7 +190,7 @@ static int process_frames(int dev, int s
26 if (dev == HCI_DEV_NONE)
29 - printf("device: hci%d ", dev);
30 + printf("device: %s ", dev);
32 printf("snap_len: %d filter: 0x%lx\n", snap_len, parser.filter);
34 @@ -528,10 +532,13 @@ static int open_file(char *file, int mod
38 -static int open_socket(int dev, unsigned long flags)
39 +static int open_socket(char *dev, unsigned long flags)
41 - struct sockaddr_hci addr;
42 + struct sockaddr_bt addr;
43 struct hci_filter flt;
47 struct hci_dev_info di;
50 @@ -557,6 +564,7 @@ static int open_socket(int dev, unsigned
56 /* Create HCI socket */
57 sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
58 @@ -572,12 +580,13 @@ static int open_socket(int dev, unsigned
62 - if (setsockopt(sk, SOL_HCI, HCI_TIME_STAMP, &opt, sizeof(opt)) < 0) {
63 + if (setsockopt(sk, SOL_SOCKET, SO_TIMESTAMP, &opt, sizeof(opt)) < 0) {
64 perror("Can't enable time stamp");
70 hci_filter_clear(&flt);
71 hci_filter_all_ptypes(&flt);
72 hci_filter_all_events(&flt);
73 @@ -585,13 +594,34 @@ static int open_socket(int dev, unsigned
74 perror("Can't set filter");
78 + memset(&flt, 0xff, sizeof(flt));
79 + if (setsockopt(sk, BTPROTO_HCI, SO_HCI_EVT_FILTER, &flt, sizeof(flt)) < 0) {
80 + perror("Can't set event filter");
84 + if (setsockopt(sk, BTPROTO_HCI, SO_HCI_PKT_FILTER, &flt, sizeof(flt)) < 0) {
85 + perror("Can't set packet filter");
90 /* Bind socket to the HCI device */
91 memset(&addr, 0, sizeof(addr));
93 addr.hci_family = AF_BLUETOOTH;
96 + addr.bt_len = sizeof(addr);
97 + addr.bt_family = AF_BLUETOOTH;
98 + if (dev != HCI_DEV_NONE && !bt_devaddr(dev, &addr.bt_bdaddr)) {
103 if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
104 - printf("Can't attach to device hci%d. %s(%d)\n",
105 + printf("Can't attach to device %s. %s(%d)\n",
106 dev, strerror(errno), errno);
109 @@ -768,7 +798,7 @@ static int wait_connection(char *addr, c
113 -static int run_server(int dev, char *addr, char *port, unsigned long flags)
114 +static int run_server(char *dev, char *addr, char *port, unsigned long flags)
118 @@ -904,7 +934,7 @@ int main(int argc, char *argv[])
120 unsigned long flags = 0;
121 unsigned long filter = 0;
123 + char *device = HCI_DEV_NONE;
125 int defcompid = DEFAULT_COMPID;
126 int opt, pppdump_fd = -1, audio_fd = -1;
127 @@ -916,7 +946,7 @@ int main(int argc, char *argv[])
130 if (strcasecmp(optarg, "none") && strcasecmp(optarg, "system"))
131 - device = atoi(optarg + 3);
134 device = HCI_DEV_NONE;