mgmt: Add support for remote_name event
diff --git a/lib/mgmt.h b/lib/mgmt.h
index 667944b..fdec6c2 100644
--- a/lib/mgmt.h
+++ b/lib/mgmt.h
@@ -281,3 +281,9 @@
 	int8_t rssi;
 	uint8_t eir[HCI_MAX_EIR_LENGTH];
 } __packed;
+
+#define MGMT_EV_REMOTE_NAME		0x0013
+struct mgmt_ev_remote_name {
+	bdaddr_t bdaddr;
+	uint8_t name[MGMT_MAX_NAME_LENGTH];
+} __packed;
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index e3410e9..b41be77 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
@@ -1292,6 +1292,30 @@
 	btd_event_device_found(&info->bdaddr, &ev->bdaddr, cls, ev->rssi, eir);
 }
 
+static void mgmt_remote_name(int sk, uint16_t index, void *buf, size_t len)
+{
+	struct mgmt_ev_remote_name *ev = buf;
+	struct controller_info *info;
+	char addr[18];
+
+	if (len < sizeof(*ev)) {
+		error("Too small mgmt_remote_name packet");
+		return;
+	}
+
+	if (index > max_index) {
+		error("Unexpected index %u in remote_name event", index);
+		return;
+	}
+
+	info = &controllers[index];
+
+	ba2str(&ev->bdaddr, addr);
+	DBG("hci%u addr %s, name %s", index, addr, ev->name);
+
+	btd_event_remote_name(&info->bdaddr, &ev->bdaddr, 0, (char *) ev->name);
+}
+
 static gboolean mgmt_event(GIOChannel *io, GIOCondition cond, gpointer user_data)
 {
 	char buf[MGMT_BUF_SIZE];
@@ -1390,6 +1414,9 @@
 	case MGMT_EV_DEVICE_FOUND:
 		mgmt_device_found(sk, index, buf + MGMT_HDR_SIZE, len);
 		break;
+	case MGMT_EV_REMOTE_NAME:
+		mgmt_remote_name(sk, index, buf + MGMT_HDR_SIZE, len);
+		break;
 	default:
 		error("Unknown Management opcode %u (index %u)", opcode, index);
 		break;