From 5599bf01f4af52c13c60795931b7405b9e61ba18 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 1 Sep 2016 18:14:33 +0200 Subject: [PATCH] monitor: Disable decoding of control channel and not close it --- monitor/control.c | 17 ++++++++--------- monitor/control.h | 2 +- monitor/packet.c | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/monitor/control.c b/monitor/control.c index f6b2291de..9bbdc37dc 100644 --- a/monitor/control.c +++ b/monitor/control.c @@ -57,7 +57,7 @@ static struct btsnoop *btsnoop_file = NULL; static bool hcidump_fallback = false; -static int mgmt_control_fd = -1; +static bool decode_control = true; struct control_data { uint16_t channel; @@ -798,6 +798,9 @@ static void mgmt_advertising_removed(uint16_t len, const void *buf) void control_message(uint16_t opcode, const void *data, uint16_t size) { + if (!decode_control) + return; + switch (opcode) { case MGMT_EV_INDEX_ADDED: mgmt_index_added(size, data); @@ -1044,7 +1047,7 @@ static int open_channel(uint16_t channel) mainloop_add_fd(data->fd, EPOLLIN, data_callback, data, free_data); - return data->fd; + return 0; } static void client_callback(int fd, uint32_t events, void *user_data) @@ -1447,16 +1450,12 @@ int control_tracing(void) return 0; } - mgmt_control_fd = open_channel(HCI_CHANNEL_CONTROL); + open_channel(HCI_CHANNEL_CONTROL); return 0; } -void control_disable_legacy(void) +void control_disable_decoding(void) { - if (mgmt_control_fd < 0) - return; - - close(mgmt_control_fd); - mgmt_control_fd = -1; + decode_control = false; } diff --git a/monitor/control.h b/monitor/control.h index 05db635d8..630a852e4 100644 --- a/monitor/control.h +++ b/monitor/control.h @@ -29,6 +29,6 @@ void control_reader(const char *path); void control_server(const char *path); int control_tty(const char *path, unsigned int speed); int control_tracing(void); -void control_disable_legacy(void); +void control_disable_decoding(void); void control_message(uint16_t opcode, const void *data, uint16_t size); diff --git a/monitor/packet.c b/monitor/packet.c index 7ef0157d3..9dc709ef5 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -3898,7 +3898,7 @@ void packet_monitor(struct timeval *tv, struct ucred *cred, data + sizeof(*ul) + ul->ident_len); break; case BTSNOOP_OPCODE_CTRL_OPEN: - control_disable_legacy(); + control_disable_decoding(); packet_ctrl_open(tv, cred, index, data, size); break; case BTSNOOP_OPCODE_CTRL_CLOSE: -- 2.47.3