From 03021c9031ad0fac7e6375967b084d2d1f199231 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 9 Sep 2007 23:53:34 +0000 Subject: [PATCH] hcidump: Fix handling of unsupported config options --- tools/parser/l2cap.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/parser/l2cap.c b/tools/parser/l2cap.c index 073b132c2..944e1ba13 100644 --- a/tools/parser/l2cap.c +++ b/tools/parser/l2cap.c @@ -420,6 +420,31 @@ static inline void conn_rsp(int level, struct frame *frm) printf("\n"); } +static void conf_list(int level, void *ptr, int len) +{ + uint8_t *list = ptr; + int i; + + p_indent(level, 0); + for (i = 0; i < len; i++) { + switch (list[i] & 0x7f) { + case L2CAP_CONF_MTU: + printf("MTU "); + break; + case L2CAP_CONF_FLUSH_TO: + printf("FlushTo "); + break; + case L2CAP_CONF_QOS: + printf("QoS "); + break; + case L2CAP_CONF_RFC: + printf("RFC "); + break; + } + } + printf("\n"); +} + static void conf_opt(int level, void *ptr, int len, int in, uint16_t cid) { p_indent(level, 0); @@ -504,11 +529,14 @@ static inline void conf_rsp(int level, l2cap_cmd_hdr *cmd, struct frame *frm) scid, btohs(h->flags), result, clen); if (clen > 0) { - if (!result) { + if (result) { p_indent(level + 1, frm); printf("%s\n", confresult2str(result)); } - conf_opt(level + 1, h->data, clen, frm->in, scid); + if (result == 0x0003) + conf_list(level + 1, h->data, clen); + else + conf_opt(level + 1, h->data, clen, frm->in, scid); } else { p_indent(level + 1, frm); printf("%s\n", confresult2str(result)); -- 2.47.3