diff --git a/tools/hcidump.c b/tools/hcidump.c
index d6c8292..c83ce47 100644
--- a/tools/hcidump.c
+++ b/tools/hcidump.c
PARSE,
READ,
WRITE,
- RECEIVE,
- SEND,
SERVER,
PPPDUMP,
AUDIO
switch (mode) {
case WRITE:
- case SEND:
case SERVER:
/* Save or send dump */
if (flags & DUMP_BTSNOOP) {
return sk;
}
-static int open_connection(char *addr, char *port)
-{
- struct sockaddr_storage ss;
- struct sockaddr_in *in = (struct sockaddr_in *) &ss;
- struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) &ss;
- struct addrinfo hints, *res0, *res;
- int sk = -1, opt = 1;
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = af;
- hints.ai_socktype = SOCK_STREAM;
- hints.ai_protocol = IPPROTO_TCP;
-
- if (getaddrinfo(addr, port, &hints, &res0))
- if(getaddrinfo(NULL, port, &hints, &res0)) {
- perror("getaddrinfo");
- exit(1);
- }
-
- for (res = res0; res; res = res->ai_next) {
- sk = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
- if (sk < 0) {
- if (res->ai_next)
- continue;
-
- perror("Can't create socket");
- freeaddrinfo(res0);
- exit(1);
- }
-
- setsockopt(sk, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
-
- memcpy(&ss, res->ai_addr, res->ai_addrlen);
-
- switch(ss.ss_family) {
- case AF_INET:
- in->sin_addr.s_addr = htonl(INADDR_ANY);
- in->sin_port = 0;
- break;
- case AF_INET6:
- memcpy(&in6->sin6_addr, &in6addr_any,
- sizeof(in6addr_any));
- in6->sin6_port = 0;
- break;
- }
-
- if (bind(sk, (struct sockaddr *) &ss, sizeof(ss)) < 0) {
- perror("Can't bind socket");
- close(sk);
- freeaddrinfo(res0);
- exit(1);
- }
-
- if (connect(sk, res->ai_addr, res->ai_addrlen) < 0) {
- perror("Can't connect socket");
- close(sk);
- freeaddrinfo(res0);
- exit(1);
- }
- }
-
- freeaddrinfo(res0);
-
- return sk;
-}
-
static int create_datagram(unsigned short port)
{
struct sockaddr_in addr;
" -m, --manufacturer=compid Default manufacturer\n"
" -w, --save-dump=file Save dump to a file\n"
" -r, --read-dump=file Read dump from a file\n"
- " -s, --send-dump=host Send dump to a host\n"
- " -n, --recv-dump=host Receive dump on a host\n"
" -d, --wait-dump=host Wait on a host and send\n"
" -t, --ts Display time stamps\n"
" -a, --ascii Dump data in ascii\n"
{ "manufacturer", 1, 0, 'm' },
{ "save-dump", 1, 0, 'w' },
{ "read-dump", 1, 0, 'r' },
- { "send-dump", 1, 0, 's' },
- { "recv-dump", 1, 0, 'n' },
{ "wait-dump", 1, 0, 'd' },
{ "timestamp", 0, 0, 't' },
{ "ascii", 0, 0, 'a' },
printf("HCI sniffer - Bluetooth packet analyzer ver %s\n", VERSION);
- while ((opt=getopt_long(argc, argv, "i:l:p:m:w:r:s:n:d:taxXRC:H:O:P:D:A:BVYZN46h", main_options, NULL)) != -1) {
+ while ((opt=getopt_long(argc, argv, "i:l:p:m:w:r:d:taxXRC:H:O:P:D:A:BVYZN46h", main_options, NULL)) != -1) {
switch(opt) {
case 'i':
if (strcasecmp(optarg, "none") && strcasecmp(optarg, "system"))
dump_file = strdup(optarg);
break;
- case 's':
- mode = SEND;
- dump_addr = optarg;
- break;
-
- case 'n':
- mode = RECEIVE;
- dump_addr = optarg;
- break;
-
case 'd':
mode = SERVER;
dump_addr = optarg;
open_file(dump_file, mode, flags), flags);
break;
- case RECEIVE:
- init_parser(flags, filter, defpsm, defcompid, pppdump_fd, audio_fd);
- read_dump(wait_connection(dump_addr, dump_port));
- break;
-
- case SEND:
- process_frames(device, open_socket(device, flags),
- open_connection(dump_addr, dump_port), flags);
- break;
-
case SERVER:
init_parser(flags, filter, defpsm, defcompid, pppdump_fd, audio_fd);
run_server(device, dump_addr, dump_port, flags);