summaryrefslogtreecommitdiff
path: root/monitor/ll.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2015-10-07 22:39:51 +0200
committerMarcel Holtmann <marcel@holtmann.org>2015-10-07 22:40:03 +0200
commit6e168cc34dca38ea813f7f6bac9dafc18c6b4194 (patch)
tree98ae2a30a5939230099a54014409c43f6fa4a2cd /monitor/ll.c
parent8cfdd8d0093582ebd9f657fdcb2d5f03f2b04e0a (diff)
downloadbluez-6e168cc34dca38ea813f7f6bac9dafc18c6b4194.tar.gz
monitor: Allow padded LL messages from diagnostic channel
Diffstat (limited to 'monitor/ll.c')
-rw-r--r--monitor/ll.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/monitor/ll.c b/monitor/ll.c
index e9d0cf6d6..8addbc6ea 100644
--- a/monitor/ll.c
+++ b/monitor/ll.c
@@ -245,7 +245,7 @@ static void advertising_packet(const void *data, uint8_t size)
}
}
-static void data_packet(const void *data, uint8_t size)
+static void data_packet(const void *data, uint8_t size, bool padded)
{
const uint8_t *ptr = data;
uint8_t llid, length;
@@ -290,7 +290,7 @@ static void data_packet(const void *data, uint8_t size)
switch (llid) {
case 0x03:
- llcp_packet(data + 2, size - 2);
+ llcp_packet(data + 2, size - 2, padded);
break;
default:
@@ -299,7 +299,7 @@ static void data_packet(const void *data, uint8_t size)
}
}
-void ll_packet(uint16_t frequency, const void *data, uint8_t size)
+void ll_packet(uint16_t frequency, const void *data, uint8_t size, bool padded)
{
const struct bt_ll_hdr *hdr = data;
uint8_t channel = (frequency - 2402) / 2;
@@ -368,7 +368,7 @@ void ll_packet(uint16_t frequency, const void *data, uint8_t size)
if (access_addr == 0x8e89bed6)
advertising_packet(pdu_data, pdu_len);
else
- data_packet(pdu_data, pdu_len);
+ data_packet(pdu_data, pdu_len, padded);
}
static void null_pdu(const void *data, uint8_t size)
@@ -500,7 +500,7 @@ static const char *opcode_to_string(uint8_t opcode)
return "Unknown";
}
-void llcp_packet(const void *data, uint8_t size)
+void llcp_packet(const void *data, uint8_t size, bool padded)
{
uint8_t opcode = ((const uint8_t *) data)[0];
const struct llcp_data *llcp_data = NULL;
@@ -533,7 +533,7 @@ void llcp_packet(const void *data, uint8_t size)
return;
}
- if (llcp_data->fixed) {
+ if (llcp_data->fixed && !padded) {
if (size - 1 != llcp_data->size) {
print_text(COLOR_ERROR, "invalid packet size");
packet_hexdump(data + 1, size - 1);