diff --git a/tools/parser/l2cap.c b/tools/parser/l2cap.c
index 944e1ba..e92a8f6 100644
--- a/tools/parser/l2cap.c
+++ b/tools/parser/l2cap.c
printf("\n");
}
-static void conf_list(int level, void *ptr, int len)
+static void conf_mode(void *ptr, int len, int in, uint16_t cid)
{
- uint8_t *list = ptr;
- int i;
+ uint8_t mode;
- 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");
+ mode = *((uint8_t *) ptr);
+ set_mode(in, cid, mode);
+
+ printf("RFC 0x%02x (%s)", mode, mode2str(mode));
}
static void conf_opt(int level, void *ptr, int len, int in, uint16_t cid)
p_indent(level, 0);
while (len > 0) {
l2cap_conf_opt *h = ptr;
- uint8_t mode;
ptr += L2CAP_CONF_OPT_SIZE + h->len;
len -= L2CAP_CONF_OPT_SIZE + h->len;
break;
case L2CAP_CONF_RFC:
- printf("Mode");
- if (h->len > 0) {
- mode = *h->val;
- set_mode(in, cid, mode);
- printf(" 0x%02x (%s)", mode, mode2str(mode));
- }
+ conf_mode(h->val, h->len, in, cid);
break;
default:
printf("\n");
}
+static void conf_list(int level, uint8_t *list, int len)
+{
+ 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;
+ default:
+ printf("%2.2x ", list[i] & 0x7f);
+ break;
+ }
+ }
+ printf("\n");
+}
+
static inline void conf_req(int level, l2cap_cmd_hdr *cmd, struct frame *frm)
{
l2cap_conf_req *h = frm->ptr;