monitor: Add support for out-of-band data management commands
diff --git a/monitor/packet.c b/monitor/packet.c
index 20e4d83..f1f42fb 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -9695,6 +9695,14 @@
 	print_hex_field("Key", data + 8, 16);
 }
 
+static void mgmt_print_oob_data(const void *data)
+{
+	print_hash_p192(data);
+	print_randomizer_p192(data + 16);
+	print_hash_p256(data + 32);
+	print_randomizer_p256(data + 48);
+}
+
 static void mgmt_null_cmd(const void *data, uint16_t size)
 {
 }
@@ -10021,6 +10029,40 @@
 	mgmt_print_address(data, address_type);
 }
 
+static void mgmt_read_local_oob_data_rsp(const void *data, uint16_t size)
+{
+	mgmt_print_oob_data(data);
+}
+
+static void mgmt_add_remote_oob_data_cmd(const void *data, uint16_t size)
+{
+	uint8_t address_type = get_u8(data + 6);
+
+	mgmt_print_address(data, address_type);
+	mgmt_print_oob_data(data + 7);
+}
+
+static void mgmt_add_remote_oob_data_rsp(const void *data, uint16_t size)
+{
+	uint8_t address_type = get_u8(data + 6);
+
+	mgmt_print_address(data, address_type);
+}
+
+static void mgmt_remove_remote_oob_data_cmd(const void *data, uint16_t size)
+{
+	uint8_t address_type = get_u8(data + 6);
+
+	mgmt_print_address(data, address_type);
+}
+
+static void mgmt_remove_remote_oob_data_rsp(const void *data, uint16_t size)
+{
+	uint8_t address_type = get_u8(data + 6);
+
+	mgmt_print_address(data, address_type);
+}
+
 static void mgmt_start_discovery_cmd(const void *data, uint16_t size)
 {
 	uint8_t type = get_u8(data);
@@ -10416,6 +10458,16 @@
 	mgmt_print_address_type(type);
 }
 
+static void mgmt_read_local_oob_ext_data_rsp(const void *data, uint16_t size)
+{
+	uint8_t type = get_u8(data);
+	uint16_t data_len = get_le16(data + 1);
+
+	mgmt_print_address_type(type);
+	print_field("Data length: %u", data_len);
+	print_eir(data + 3, size - 3, true);
+}
+
 static void mgmt_read_advertising_features_rsp(const void *data, uint16_t size)
 {
 	uint32_t flags = get_le32(data);
@@ -10613,9 +10665,14 @@
 	{ 0x001e, "User Passkey Reply" },
 	{ 0x001f, "User Passkey Negative Reply" },
 	{ 0x0020, "Read Local Out Of Band Data",
-				mgmt_null_cmd, 0, true },
-	{ 0x0021, "Add Remote Out Of Band Data" },
-	{ 0x0022, "Remove Remote Out Of Band Data" },
+				mgmt_null_cmd, 0, true,
+				mgmt_read_local_oob_data_rsp, 64, true },
+	{ 0x0021, "Add Remote Out Of Band Data",
+				mgmt_add_remote_oob_data_cmd, 71, true,
+				mgmt_add_remote_oob_data_rsp, 7, true },
+	{ 0x0022, "Remove Remote Out Of Band Data",
+				mgmt_remove_remote_oob_data_cmd, 7, true,
+				mgmt_remove_remote_oob_data_rsp, 7, true },
 	{ 0x0023, "Start Discovery",
 				mgmt_start_discovery_cmd, 1, true,
 				mgmt_start_discovery_rsp, 1, true },
@@ -10687,7 +10744,8 @@
 				mgmt_start_service_discovery_cmd, 3, false,
 				mgmt_start_service_discovery_rsp, 1, true },
 	{ 0x003b, "Read Local Out Of Band Extended Data",
-				mgmt_read_local_oob_ext_data_cmd, 1, true },
+				mgmt_read_local_oob_ext_data_cmd, 1, true,
+				mgmt_read_local_oob_ext_data_rsp, 3, false },
 	{ 0x003c, "Read Extended Controller Index List",
 				mgmt_null_cmd, 0, true,
 				mgmt_read_ext_index_list_rsp, 2, false },