Diff between 03021c9031ad0fac7e6375967b084d2d1f199231 and 888e0d0ee8d85e1dc432d6f2f89101c5c1ec3b7f

Changed Files

File Additions Deletions Status
tools/parser/l2cap.c +34 -28 modified

Full Patch

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
@@ -420,29 +420,14 @@ static inline void conn_rsp(int level, struct frame *frm)
 		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)
@@ -450,7 +435,6 @@ 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;
@@ -478,12 +462,7 @@ static void conf_opt(int level, void *ptr, int len, int in, uint16_t cid)
 			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:
@@ -499,6 +478,33 @@ static void conf_opt(int level, void *ptr, int len, int in, uint16_t cid)
 	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;