Diff between 07597ac33194760ae4ed178cdf354cafb844a471 and 5bb418bbb7ff45fe1db87f59acee30aa7c95ef6e

Changed Files

File Additions Deletions Status
lib/mgmt.h +4 -1 modified
mgmt/main.c +5 -4 modified
plugins/mgmtops.c +8 -3 modified

Full Patch

diff --git a/lib/mgmt.h b/lib/mgmt.h
index 7072ccc..59c5c06 100644
--- a/lib/mgmt.h
+++ b/lib/mgmt.h
@@ -381,11 +381,14 @@ struct mgmt_ev_auth_failed {
 	uint8_t status;
 } __packed;
 
+#define MGMT_DEV_FOUND_CONFIRM_NAME	0x01
+#define MGMT_DEV_FOUND_LEGACY_PAIRING	0x02
+
 #define MGMT_EV_DEVICE_FOUND		0x0012
 struct mgmt_ev_device_found {
 	struct mgmt_addr_info addr;
 	int8_t rssi;
-	uint8_t confirm_name;
+	uint8_t flags[4];
 	uint16_t eir_len;
 	uint8_t eir[0];
 } __packed;
diff --git a/mgmt/main.c b/mgmt/main.c
index 25ae181..b45b075 100644
--- a/mgmt/main.c
+++ b/mgmt/main.c
@@ -578,12 +578,13 @@ static int mgmt_device_found(int mgmt_sk, uint16_t index,
 		char addr[18];
 		ba2str(&ev->addr.bdaddr, addr);
 		printf("hci%u dev_found: %s type %s rssi %d "
-			"confirm_name %u eir_len %u\n", index, addr,
-			typestr(ev->addr.type),
-			ev->rssi, ev->confirm_name, eir_len);
+			"flags 0x%02x%02x%02x%02x eir_len %u\n", index, addr,
+			typestr(ev->addr.type), ev->rssi,
+			ev->flags[3], ev->flags[2], ev->flags[1], ev->flags[0],
+			eir_len);
 	}
 
-	if (discovery && ev->confirm_name) {
+	if (discovery && (ev->flags[0] & MGMT_DEV_FOUND_CONFIRM_NAME)) {
 		struct mgmt_cp_confirm_name cp;
 
 		memset(&cp, 0, sizeof(cp));
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index fd42a64..87d3291 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
@@ -1346,6 +1346,7 @@ static void mgmt_device_found(int sk, uint16_t index, void *buf, size_t len)
 	char addr[18];
 	uint16_t eir_len;
 	uint8_t *eir;
+	gboolean confirm_name;
 
 	if (len < sizeof(*ev)) {
 		error("mgmt_device_found too short (%zu bytes)", len);
@@ -1372,12 +1373,16 @@ static void mgmt_device_found(int sk, uint16_t index, void *buf, size_t len)
 		eir = ev->eir;
 
 	ba2str(&ev->addr.bdaddr, addr);
-	DBG("hci%u addr %s, rssi %d cfm_name %u eir_len %u", index, addr, ev->rssi,
-					ev->confirm_name, eir_len);
+	DBG("hci%u addr %s, rssi %d flags 0x%02x%02x%02x%02x eir_len %u",
+			index, addr, ev->rssi,
+			ev->flags[3], ev->flags[2], ev->flags[1], ev->flags[0],
+			eir_len);
+
+	confirm_name = (ev->flags[0] & MGMT_DEV_FOUND_CONFIRM_NAME);
 
 	btd_event_device_found(&info->bdaddr, &ev->addr.bdaddr,
 						addr_type(ev->addr.type),
-						ev->rssi, ev->confirm_name,
+						ev->rssi, confirm_name,
 						eir, eir_len);
 }