monitor/att: Fix not loading gatt_db for devices using RPA
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 24 Mar 2023 23:38:55 +0000 (16:38 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 5 Jan 2024 10:41:34 +0000 (16:11 +0530)
Device using RPA have its storage using its identity address so this
uses keys_resolve_identity to attempt to resolve the destination
address instead of always using the connection address.

monitor/att.c

index fb990ee..578be7a 100644 (file)
@@ -41,6 +41,7 @@
 #include "display.h"
 #include "l2cap.h"
 #include "att.h"
+#include "keys.h"
 
 struct att_read {
        struct gatt_db_attribute *attr;
@@ -2806,9 +2807,14 @@ static void load_gatt_db(struct packet_conn_data *conn)
        char filename[PATH_MAX];
        char local[18];
        char peer[18];
+       uint8_t id[6], id_type;
 
        ba2str((bdaddr_t *)conn->src, local);
-       ba2str((bdaddr_t *)conn->dst, peer);
+
+       if (keys_resolve_identity(conn->dst, id, &id_type))
+               ba2str((bdaddr_t *)id, peer);
+       else
+               ba2str((bdaddr_t *)conn->dst, peer);
 
        create_filename(filename, PATH_MAX, "/%s/attributes", local);
        gatt_load_db(data->ldb, filename, &data->ldb_mtim);