| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | /* | 
|  | 2 | BlueZ - Bluetooth protocol stack for Linux | 
|  | 3 |  | 
|  | 4 | Copyright (C) 2010  Nokia Corporation | 
|  | 5 | Copyright (C) 2011-2012  Intel Corporation | 
|  | 6 |  | 
|  | 7 | This program is free software; you can redistribute it and/or modify | 
|  | 8 | it under the terms of the GNU General Public License version 2 as | 
|  | 9 | published by the Free Software Foundation; | 
|  | 10 |  | 
|  | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | 
|  | 12 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
|  | 13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | 
|  | 14 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | 
|  | 15 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | 
|  | 16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 
|  | 17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 
|  | 18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 
|  | 19 |  | 
|  | 20 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | 
|  | 21 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | 
|  | 22 | SOFTWARE IS DISCLAIMED. | 
|  | 23 | */ | 
|  | 24 |  | 
|  | 25 | #define MGMT_INDEX_NONE			0xFFFF | 
|  | 26 |  | 
|  | 27 | #define MGMT_STATUS_SUCCESS		0x00 | 
|  | 28 | #define MGMT_STATUS_UNKNOWN_COMMAND	0x01 | 
|  | 29 | #define MGMT_STATUS_NOT_CONNECTED	0x02 | 
|  | 30 | #define MGMT_STATUS_FAILED		0x03 | 
|  | 31 | #define MGMT_STATUS_CONNECT_FAILED	0x04 | 
|  | 32 | #define MGMT_STATUS_AUTH_FAILED		0x05 | 
|  | 33 | #define MGMT_STATUS_NOT_PAIRED		0x06 | 
|  | 34 | #define MGMT_STATUS_NO_RESOURCES	0x07 | 
|  | 35 | #define MGMT_STATUS_TIMEOUT		0x08 | 
|  | 36 | #define MGMT_STATUS_ALREADY_CONNECTED	0x09 | 
|  | 37 | #define MGMT_STATUS_BUSY		0x0a | 
|  | 38 | #define MGMT_STATUS_REJECTED		0x0b | 
|  | 39 | #define MGMT_STATUS_NOT_SUPPORTED	0x0c | 
|  | 40 | #define MGMT_STATUS_INVALID_PARAMS	0x0d | 
|  | 41 | #define MGMT_STATUS_DISCONNECTED	0x0e | 
|  | 42 | #define MGMT_STATUS_NOT_POWERED		0x0f | 
|  | 43 | #define MGMT_STATUS_CANCELLED		0x10 | 
|  | 44 | #define MGMT_STATUS_INVALID_INDEX	0x11 | 
|  | 45 | #define MGMT_STATUS_RFKILLED		0x12 | 
|  | 46 | #define MGMT_STATUS_ALREADY_PAIRED	0x13 | 
|  | 47 | #define MGMT_STATUS_PERMISSION_DENIED	0x14 | 
|  | 48 |  | 
|  | 49 | struct mgmt_hdr { | 
|  | 50 | __le16	opcode; | 
|  | 51 | __le16	index; | 
|  | 52 | __le16	len; | 
|  | 53 | } __packed; | 
|  | 54 |  | 
|  | 55 | struct mgmt_addr_info { | 
|  | 56 | bdaddr_t	bdaddr; | 
|  | 57 | __u8		type; | 
|  | 58 | } __packed; | 
|  | 59 | #define MGMT_ADDR_INFO_SIZE		7 | 
|  | 60 |  | 
|  | 61 | #define MGMT_OP_READ_VERSION		0x0001 | 
|  | 62 | #define MGMT_READ_VERSION_SIZE		0 | 
|  | 63 | struct mgmt_rp_read_version { | 
|  | 64 | __u8	version; | 
|  | 65 | __le16	revision; | 
|  | 66 | } __packed; | 
|  | 67 |  | 
|  | 68 | #define MGMT_OP_READ_COMMANDS		0x0002 | 
|  | 69 | #define MGMT_READ_COMMANDS_SIZE		0 | 
|  | 70 | struct mgmt_rp_read_commands { | 
|  | 71 | __le16	num_commands; | 
|  | 72 | __le16	num_events; | 
|  | 73 | __le16	opcodes[0]; | 
|  | 74 | } __packed; | 
|  | 75 |  | 
|  | 76 | #define MGMT_OP_READ_INDEX_LIST		0x0003 | 
|  | 77 | #define MGMT_READ_INDEX_LIST_SIZE	0 | 
|  | 78 | struct mgmt_rp_read_index_list { | 
|  | 79 | __le16	num_controllers; | 
|  | 80 | __le16	index[0]; | 
|  | 81 | } __packed; | 
|  | 82 |  | 
|  | 83 | /* Reserve one extra byte for names in management messages so that they | 
|  | 84 | * are always guaranteed to be nul-terminated */ | 
|  | 85 | #define MGMT_MAX_NAME_LENGTH		(HCI_MAX_NAME_LENGTH + 1) | 
|  | 86 | #define MGMT_MAX_SHORT_NAME_LENGTH	(HCI_MAX_SHORT_NAME_LENGTH + 1) | 
|  | 87 |  | 
|  | 88 | #define MGMT_SETTING_POWERED		0x00000001 | 
|  | 89 | #define MGMT_SETTING_CONNECTABLE	0x00000002 | 
|  | 90 | #define MGMT_SETTING_FAST_CONNECTABLE	0x00000004 | 
|  | 91 | #define MGMT_SETTING_DISCOVERABLE	0x00000008 | 
|  | 92 | #define MGMT_SETTING_BONDABLE		0x00000010 | 
|  | 93 | #define MGMT_SETTING_LINK_SECURITY	0x00000020 | 
|  | 94 | #define MGMT_SETTING_SSP		0x00000040 | 
|  | 95 | #define MGMT_SETTING_BREDR		0x00000080 | 
|  | 96 | #define MGMT_SETTING_HS			0x00000100 | 
|  | 97 | #define MGMT_SETTING_LE			0x00000200 | 
|  | 98 | #define MGMT_SETTING_ADVERTISING	0x00000400 | 
|  | 99 | #define MGMT_SETTING_SECURE_CONN	0x00000800 | 
|  | 100 | #define MGMT_SETTING_DEBUG_KEYS		0x00001000 | 
|  | 101 | #define MGMT_SETTING_PRIVACY		0x00002000 | 
|  | 102 | #define MGMT_SETTING_CONFIGURATION	0x00004000 | 
|  | 103 | #define MGMT_SETTING_STATIC_ADDRESS	0x00008000 | 
|  | 104 | #define MGMT_SETTING_PHY_CONFIGURATION  0x00010000 | 
|  | 105 |  | 
|  | 106 | #define MGMT_OP_READ_INFO		0x0004 | 
|  | 107 | #define MGMT_READ_INFO_SIZE		0 | 
|  | 108 | struct mgmt_rp_read_info { | 
|  | 109 | bdaddr_t	bdaddr; | 
|  | 110 | __u8		version; | 
|  | 111 | __le16		manufacturer; | 
|  | 112 | __le32		supported_settings; | 
|  | 113 | __le32		current_settings; | 
|  | 114 | __u8		dev_class[3]; | 
|  | 115 | __u8		name[MGMT_MAX_NAME_LENGTH]; | 
|  | 116 | __u8		short_name[MGMT_MAX_SHORT_NAME_LENGTH]; | 
|  | 117 | } __packed; | 
|  | 118 |  | 
|  | 119 | struct mgmt_mode { | 
|  | 120 | __u8 val; | 
|  | 121 | } __packed; | 
|  | 122 |  | 
|  | 123 | #define MGMT_SETTING_SIZE		1 | 
|  | 124 |  | 
|  | 125 | #define MGMT_OP_SET_POWERED		0x0005 | 
|  | 126 |  | 
|  | 127 | #define MGMT_OP_SET_DISCOVERABLE	0x0006 | 
|  | 128 | struct mgmt_cp_set_discoverable { | 
|  | 129 | __u8	val; | 
|  | 130 | __le16	timeout; | 
|  | 131 | } __packed; | 
|  | 132 | #define MGMT_SET_DISCOVERABLE_SIZE	3 | 
|  | 133 |  | 
|  | 134 | #define MGMT_OP_SET_CONNECTABLE		0x0007 | 
|  | 135 |  | 
|  | 136 | #define MGMT_OP_SET_FAST_CONNECTABLE	0x0008 | 
|  | 137 |  | 
|  | 138 | #define MGMT_OP_SET_BONDABLE		0x0009 | 
|  | 139 |  | 
|  | 140 | #define MGMT_OP_SET_LINK_SECURITY	0x000A | 
|  | 141 |  | 
|  | 142 | #define MGMT_OP_SET_SSP			0x000B | 
|  | 143 |  | 
|  | 144 | #define MGMT_OP_SET_HS			0x000C | 
|  | 145 |  | 
|  | 146 | #define MGMT_OP_SET_LE			0x000D | 
|  | 147 | #define MGMT_OP_SET_DEV_CLASS		0x000E | 
|  | 148 | struct mgmt_cp_set_dev_class { | 
|  | 149 | __u8	major; | 
|  | 150 | __u8	minor; | 
|  | 151 | } __packed; | 
|  | 152 | #define MGMT_SET_DEV_CLASS_SIZE		2 | 
|  | 153 |  | 
|  | 154 | #define MGMT_OP_SET_LOCAL_NAME		0x000F | 
|  | 155 | struct mgmt_cp_set_local_name { | 
|  | 156 | __u8	name[MGMT_MAX_NAME_LENGTH]; | 
|  | 157 | __u8	short_name[MGMT_MAX_SHORT_NAME_LENGTH]; | 
|  | 158 | } __packed; | 
|  | 159 | #define MGMT_SET_LOCAL_NAME_SIZE	260 | 
|  | 160 |  | 
|  | 161 | #define MGMT_OP_ADD_UUID		0x0010 | 
|  | 162 | struct mgmt_cp_add_uuid { | 
|  | 163 | __u8	uuid[16]; | 
|  | 164 | __u8	svc_hint; | 
|  | 165 | } __packed; | 
|  | 166 | #define MGMT_ADD_UUID_SIZE		17 | 
|  | 167 |  | 
|  | 168 | #define MGMT_OP_REMOVE_UUID		0x0011 | 
|  | 169 | struct mgmt_cp_remove_uuid { | 
|  | 170 | __u8	uuid[16]; | 
|  | 171 | } __packed; | 
|  | 172 | #define MGMT_REMOVE_UUID_SIZE		16 | 
|  | 173 |  | 
|  | 174 | struct mgmt_link_key_info { | 
|  | 175 | struct mgmt_addr_info addr; | 
|  | 176 | __u8	type; | 
|  | 177 | __u8	val[16]; | 
|  | 178 | __u8	pin_len; | 
|  | 179 | } __packed; | 
|  | 180 |  | 
|  | 181 | #define MGMT_OP_LOAD_LINK_KEYS		0x0012 | 
|  | 182 | struct mgmt_cp_load_link_keys { | 
|  | 183 | __u8	debug_keys; | 
|  | 184 | __le16	key_count; | 
|  | 185 | struct	mgmt_link_key_info keys[0]; | 
|  | 186 | } __packed; | 
|  | 187 | #define MGMT_LOAD_LINK_KEYS_SIZE	3 | 
|  | 188 |  | 
|  | 189 | #define MGMT_LTK_UNAUTHENTICATED	0x00 | 
|  | 190 | #define MGMT_LTK_AUTHENTICATED		0x01 | 
|  | 191 | #define MGMT_LTK_P256_UNAUTH		0x02 | 
|  | 192 | #define MGMT_LTK_P256_AUTH		0x03 | 
|  | 193 | #define MGMT_LTK_P256_DEBUG		0x04 | 
|  | 194 |  | 
|  | 195 | struct mgmt_ltk_info { | 
|  | 196 | struct mgmt_addr_info addr; | 
|  | 197 | __u8	type; | 
|  | 198 | __u8	master; | 
|  | 199 | __u8	enc_size; | 
|  | 200 | __le16	ediv; | 
|  | 201 | __le64	rand; | 
|  | 202 | __u8	val[16]; | 
|  | 203 | } __packed; | 
|  | 204 |  | 
|  | 205 | #define MGMT_OP_LOAD_LONG_TERM_KEYS	0x0013 | 
|  | 206 | struct mgmt_cp_load_long_term_keys { | 
|  | 207 | __le16	key_count; | 
|  | 208 | struct	mgmt_ltk_info keys[0]; | 
|  | 209 | } __packed; | 
|  | 210 | #define MGMT_LOAD_LONG_TERM_KEYS_SIZE	2 | 
|  | 211 |  | 
|  | 212 | #define MGMT_OP_DISCONNECT		0x0014 | 
|  | 213 | struct mgmt_cp_disconnect { | 
|  | 214 | struct mgmt_addr_info addr; | 
|  | 215 | } __packed; | 
|  | 216 | #define MGMT_DISCONNECT_SIZE		MGMT_ADDR_INFO_SIZE | 
|  | 217 | struct mgmt_rp_disconnect { | 
|  | 218 | struct mgmt_addr_info addr; | 
|  | 219 | } __packed; | 
|  | 220 |  | 
|  | 221 | #define MGMT_OP_GET_CONNECTIONS		0x0015 | 
|  | 222 | #define MGMT_GET_CONNECTIONS_SIZE	0 | 
|  | 223 | struct mgmt_rp_get_connections { | 
|  | 224 | __le16 conn_count; | 
|  | 225 | struct mgmt_addr_info addr[0]; | 
|  | 226 | } __packed; | 
|  | 227 |  | 
|  | 228 | #define MGMT_OP_PIN_CODE_REPLY		0x0016 | 
|  | 229 | struct mgmt_cp_pin_code_reply { | 
|  | 230 | struct mgmt_addr_info addr; | 
|  | 231 | __u8	pin_len; | 
|  | 232 | __u8	pin_code[16]; | 
|  | 233 | } __packed; | 
|  | 234 | #define MGMT_PIN_CODE_REPLY_SIZE	(MGMT_ADDR_INFO_SIZE + 17) | 
|  | 235 | struct mgmt_rp_pin_code_reply { | 
|  | 236 | struct mgmt_addr_info addr; | 
|  | 237 | } __packed; | 
|  | 238 |  | 
|  | 239 | #define MGMT_OP_PIN_CODE_NEG_REPLY	0x0017 | 
|  | 240 | struct mgmt_cp_pin_code_neg_reply { | 
|  | 241 | struct mgmt_addr_info addr; | 
|  | 242 | } __packed; | 
|  | 243 | #define MGMT_PIN_CODE_NEG_REPLY_SIZE	MGMT_ADDR_INFO_SIZE | 
|  | 244 |  | 
|  | 245 | #define MGMT_OP_SET_IO_CAPABILITY	0x0018 | 
|  | 246 | struct mgmt_cp_set_io_capability { | 
|  | 247 | __u8	io_capability; | 
|  | 248 | } __packed; | 
|  | 249 | #define MGMT_SET_IO_CAPABILITY_SIZE	1 | 
|  | 250 |  | 
|  | 251 | #define MGMT_OP_PAIR_DEVICE		0x0019 | 
|  | 252 | struct mgmt_cp_pair_device { | 
|  | 253 | struct mgmt_addr_info addr; | 
|  | 254 | __u8	io_cap; | 
|  | 255 | } __packed; | 
|  | 256 | #define MGMT_PAIR_DEVICE_SIZE		(MGMT_ADDR_INFO_SIZE + 1) | 
|  | 257 | struct mgmt_rp_pair_device { | 
|  | 258 | struct mgmt_addr_info addr; | 
|  | 259 | } __packed; | 
|  | 260 |  | 
|  | 261 | #define MGMT_OP_CANCEL_PAIR_DEVICE	0x001A | 
|  | 262 | #define MGMT_CANCEL_PAIR_DEVICE_SIZE	MGMT_ADDR_INFO_SIZE | 
|  | 263 |  | 
|  | 264 | #define MGMT_OP_UNPAIR_DEVICE		0x001B | 
|  | 265 | struct mgmt_cp_unpair_device { | 
|  | 266 | struct mgmt_addr_info addr; | 
|  | 267 | __u8 disconnect; | 
|  | 268 | } __packed; | 
|  | 269 | #define MGMT_UNPAIR_DEVICE_SIZE		(MGMT_ADDR_INFO_SIZE + 1) | 
|  | 270 | struct mgmt_rp_unpair_device { | 
|  | 271 | struct mgmt_addr_info addr; | 
|  | 272 | }; | 
|  | 273 |  | 
|  | 274 | #define MGMT_OP_USER_CONFIRM_REPLY	0x001C | 
|  | 275 | struct mgmt_cp_user_confirm_reply { | 
|  | 276 | struct mgmt_addr_info addr; | 
|  | 277 | } __packed; | 
|  | 278 | #define MGMT_USER_CONFIRM_REPLY_SIZE	MGMT_ADDR_INFO_SIZE | 
|  | 279 | struct mgmt_rp_user_confirm_reply { | 
|  | 280 | struct mgmt_addr_info addr; | 
|  | 281 | } __packed; | 
|  | 282 |  | 
|  | 283 | #define MGMT_OP_USER_CONFIRM_NEG_REPLY	0x001D | 
|  | 284 | struct mgmt_cp_user_confirm_neg_reply { | 
|  | 285 | struct mgmt_addr_info addr; | 
|  | 286 | } __packed; | 
|  | 287 | #define MGMT_USER_CONFIRM_NEG_REPLY_SIZE MGMT_ADDR_INFO_SIZE | 
|  | 288 |  | 
|  | 289 | #define MGMT_OP_USER_PASSKEY_REPLY	0x001E | 
|  | 290 | struct mgmt_cp_user_passkey_reply { | 
|  | 291 | struct mgmt_addr_info addr; | 
|  | 292 | __le32	passkey; | 
|  | 293 | } __packed; | 
|  | 294 | #define MGMT_USER_PASSKEY_REPLY_SIZE	(MGMT_ADDR_INFO_SIZE + 4) | 
|  | 295 | struct mgmt_rp_user_passkey_reply { | 
|  | 296 | struct mgmt_addr_info addr; | 
|  | 297 | } __packed; | 
|  | 298 |  | 
|  | 299 | #define MGMT_OP_USER_PASSKEY_NEG_REPLY	0x001F | 
|  | 300 | struct mgmt_cp_user_passkey_neg_reply { | 
|  | 301 | struct mgmt_addr_info addr; | 
|  | 302 | } __packed; | 
|  | 303 | #define MGMT_USER_PASSKEY_NEG_REPLY_SIZE MGMT_ADDR_INFO_SIZE | 
|  | 304 |  | 
|  | 305 | #define MGMT_OP_READ_LOCAL_OOB_DATA	0x0020 | 
|  | 306 | #define MGMT_READ_LOCAL_OOB_DATA_SIZE	0 | 
|  | 307 | struct mgmt_rp_read_local_oob_data { | 
|  | 308 | __u8	hash192[16]; | 
|  | 309 | __u8	rand192[16]; | 
|  | 310 | __u8	hash256[16]; | 
|  | 311 | __u8	rand256[16]; | 
|  | 312 | } __packed; | 
|  | 313 |  | 
|  | 314 | #define MGMT_OP_ADD_REMOTE_OOB_DATA	0x0021 | 
|  | 315 | struct mgmt_cp_add_remote_oob_data { | 
|  | 316 | struct mgmt_addr_info addr; | 
|  | 317 | __u8	hash[16]; | 
|  | 318 | __u8	rand[16]; | 
|  | 319 | } __packed; | 
|  | 320 | #define MGMT_ADD_REMOTE_OOB_DATA_SIZE	(MGMT_ADDR_INFO_SIZE + 32) | 
|  | 321 | struct mgmt_cp_add_remote_oob_ext_data { | 
|  | 322 | struct mgmt_addr_info addr; | 
|  | 323 | __u8	hash192[16]; | 
|  | 324 | __u8	rand192[16]; | 
|  | 325 | __u8	hash256[16]; | 
|  | 326 | __u8	rand256[16]; | 
|  | 327 | } __packed; | 
|  | 328 | #define MGMT_ADD_REMOTE_OOB_EXT_DATA_SIZE (MGMT_ADDR_INFO_SIZE + 64) | 
|  | 329 |  | 
|  | 330 | #define MGMT_OP_REMOVE_REMOTE_OOB_DATA	0x0022 | 
|  | 331 | struct mgmt_cp_remove_remote_oob_data { | 
|  | 332 | struct mgmt_addr_info addr; | 
|  | 333 | } __packed; | 
|  | 334 | #define MGMT_REMOVE_REMOTE_OOB_DATA_SIZE MGMT_ADDR_INFO_SIZE | 
|  | 335 |  | 
|  | 336 | #define MGMT_OP_START_DISCOVERY		0x0023 | 
|  | 337 | struct mgmt_cp_start_discovery { | 
|  | 338 | __u8 type; | 
|  | 339 | } __packed; | 
|  | 340 | #define MGMT_START_DISCOVERY_SIZE	1 | 
|  | 341 |  | 
|  | 342 | #define MGMT_OP_STOP_DISCOVERY		0x0024 | 
|  | 343 | struct mgmt_cp_stop_discovery { | 
|  | 344 | __u8 type; | 
|  | 345 | } __packed; | 
|  | 346 | #define MGMT_STOP_DISCOVERY_SIZE	1 | 
|  | 347 |  | 
|  | 348 | #define MGMT_OP_CONFIRM_NAME		0x0025 | 
|  | 349 | struct mgmt_cp_confirm_name { | 
|  | 350 | struct mgmt_addr_info addr; | 
|  | 351 | __u8	name_known; | 
|  | 352 | } __packed; | 
|  | 353 | #define MGMT_CONFIRM_NAME_SIZE		(MGMT_ADDR_INFO_SIZE + 1) | 
|  | 354 | struct mgmt_rp_confirm_name { | 
|  | 355 | struct mgmt_addr_info addr; | 
|  | 356 | } __packed; | 
|  | 357 |  | 
|  | 358 | #define MGMT_OP_BLOCK_DEVICE		0x0026 | 
|  | 359 | struct mgmt_cp_block_device { | 
|  | 360 | struct mgmt_addr_info addr; | 
|  | 361 | } __packed; | 
|  | 362 | #define MGMT_BLOCK_DEVICE_SIZE		MGMT_ADDR_INFO_SIZE | 
|  | 363 |  | 
|  | 364 | #define MGMT_OP_UNBLOCK_DEVICE		0x0027 | 
|  | 365 | struct mgmt_cp_unblock_device { | 
|  | 366 | struct mgmt_addr_info addr; | 
|  | 367 | } __packed; | 
|  | 368 | #define MGMT_UNBLOCK_DEVICE_SIZE	MGMT_ADDR_INFO_SIZE | 
|  | 369 |  | 
|  | 370 | #define MGMT_OP_SET_DEVICE_ID		0x0028 | 
|  | 371 | struct mgmt_cp_set_device_id { | 
|  | 372 | __le16	source; | 
|  | 373 | __le16	vendor; | 
|  | 374 | __le16	product; | 
|  | 375 | __le16	version; | 
|  | 376 | } __packed; | 
|  | 377 | #define MGMT_SET_DEVICE_ID_SIZE		8 | 
|  | 378 |  | 
|  | 379 | #define MGMT_OP_SET_ADVERTISING		0x0029 | 
|  | 380 |  | 
|  | 381 | #define MGMT_OP_SET_BREDR		0x002A | 
|  | 382 |  | 
|  | 383 | #define MGMT_OP_SET_STATIC_ADDRESS	0x002B | 
|  | 384 | struct mgmt_cp_set_static_address { | 
|  | 385 | bdaddr_t bdaddr; | 
|  | 386 | } __packed; | 
|  | 387 | #define MGMT_SET_STATIC_ADDRESS_SIZE	6 | 
|  | 388 |  | 
|  | 389 | #define MGMT_OP_SET_SCAN_PARAMS		0x002C | 
|  | 390 | struct mgmt_cp_set_scan_params { | 
|  | 391 | __le16	interval; | 
|  | 392 | __le16	window; | 
|  | 393 | } __packed; | 
|  | 394 | #define MGMT_SET_SCAN_PARAMS_SIZE	4 | 
|  | 395 |  | 
|  | 396 | #define MGMT_OP_SET_SECURE_CONN		0x002D | 
|  | 397 |  | 
|  | 398 | #define MGMT_OP_SET_DEBUG_KEYS		0x002E | 
|  | 399 |  | 
|  | 400 | #define MGMT_OP_SET_PRIVACY		0x002F | 
|  | 401 | struct mgmt_cp_set_privacy { | 
|  | 402 | __u8 privacy; | 
|  | 403 | __u8 irk[16]; | 
|  | 404 | } __packed; | 
|  | 405 | #define MGMT_SET_PRIVACY_SIZE		17 | 
|  | 406 |  | 
|  | 407 | struct mgmt_irk_info { | 
|  | 408 | struct mgmt_addr_info addr; | 
|  | 409 | __u8 val[16]; | 
|  | 410 | } __packed; | 
|  | 411 |  | 
|  | 412 | #define MGMT_OP_LOAD_IRKS		0x0030 | 
|  | 413 | struct mgmt_cp_load_irks { | 
|  | 414 | __le16 irk_count; | 
|  | 415 | struct mgmt_irk_info irks[0]; | 
|  | 416 | } __packed; | 
|  | 417 | #define MGMT_LOAD_IRKS_SIZE		2 | 
|  | 418 |  | 
|  | 419 | #define MGMT_OP_GET_CONN_INFO		0x0031 | 
|  | 420 | struct mgmt_cp_get_conn_info { | 
|  | 421 | struct mgmt_addr_info addr; | 
|  | 422 | } __packed; | 
|  | 423 | #define MGMT_GET_CONN_INFO_SIZE		MGMT_ADDR_INFO_SIZE | 
|  | 424 | struct mgmt_rp_get_conn_info { | 
|  | 425 | struct mgmt_addr_info addr; | 
|  | 426 | __s8	rssi; | 
|  | 427 | __s8	tx_power; | 
|  | 428 | __s8	max_tx_power; | 
|  | 429 | } __packed; | 
|  | 430 |  | 
|  | 431 | #define MGMT_OP_GET_CLOCK_INFO		0x0032 | 
|  | 432 | struct mgmt_cp_get_clock_info { | 
|  | 433 | struct mgmt_addr_info addr; | 
|  | 434 | } __packed; | 
|  | 435 | #define MGMT_GET_CLOCK_INFO_SIZE	MGMT_ADDR_INFO_SIZE | 
|  | 436 | struct mgmt_rp_get_clock_info { | 
|  | 437 | struct mgmt_addr_info addr; | 
|  | 438 | __le32  local_clock; | 
|  | 439 | __le32  piconet_clock; | 
|  | 440 | __le16  accuracy; | 
|  | 441 | } __packed; | 
|  | 442 |  | 
|  | 443 | #define MGMT_OP_ADD_DEVICE		0x0033 | 
|  | 444 | struct mgmt_cp_add_device { | 
|  | 445 | struct mgmt_addr_info addr; | 
|  | 446 | __u8	action; | 
|  | 447 | } __packed; | 
|  | 448 | #define MGMT_ADD_DEVICE_SIZE		(MGMT_ADDR_INFO_SIZE + 1) | 
|  | 449 |  | 
|  | 450 | #define MGMT_OP_REMOVE_DEVICE		0x0034 | 
|  | 451 | struct mgmt_cp_remove_device { | 
|  | 452 | struct mgmt_addr_info addr; | 
|  | 453 | } __packed; | 
|  | 454 | #define MGMT_REMOVE_DEVICE_SIZE		MGMT_ADDR_INFO_SIZE | 
|  | 455 |  | 
|  | 456 | struct mgmt_conn_param { | 
|  | 457 | struct mgmt_addr_info addr; | 
|  | 458 | __le16 min_interval; | 
|  | 459 | __le16 max_interval; | 
|  | 460 | __le16 latency; | 
|  | 461 | __le16 timeout; | 
|  | 462 | } __packed; | 
|  | 463 |  | 
|  | 464 | #define MGMT_OP_LOAD_CONN_PARAM		0x0035 | 
|  | 465 | struct mgmt_cp_load_conn_param { | 
|  | 466 | __le16 param_count; | 
|  | 467 | struct mgmt_conn_param params[0]; | 
|  | 468 | } __packed; | 
|  | 469 | #define MGMT_LOAD_CONN_PARAM_SIZE	2 | 
|  | 470 |  | 
|  | 471 | #define MGMT_OP_READ_UNCONF_INDEX_LIST	0x0036 | 
|  | 472 | #define MGMT_READ_UNCONF_INDEX_LIST_SIZE 0 | 
|  | 473 | struct mgmt_rp_read_unconf_index_list { | 
|  | 474 | __le16	num_controllers; | 
|  | 475 | __le16	index[0]; | 
|  | 476 | } __packed; | 
|  | 477 |  | 
|  | 478 | #define MGMT_OPTION_EXTERNAL_CONFIG	0x00000001 | 
|  | 479 | #define MGMT_OPTION_PUBLIC_ADDRESS	0x00000002 | 
|  | 480 |  | 
|  | 481 | #define MGMT_OP_READ_CONFIG_INFO	0x0037 | 
|  | 482 | #define MGMT_READ_CONFIG_INFO_SIZE	0 | 
|  | 483 | struct mgmt_rp_read_config_info { | 
|  | 484 | __le16	manufacturer; | 
|  | 485 | __le32	supported_options; | 
|  | 486 | __le32	missing_options; | 
|  | 487 | } __packed; | 
|  | 488 |  | 
|  | 489 | #define MGMT_OP_SET_EXTERNAL_CONFIG	0x0038 | 
|  | 490 | struct mgmt_cp_set_external_config { | 
|  | 491 | __u8 config; | 
|  | 492 | } __packed; | 
|  | 493 | #define MGMT_SET_EXTERNAL_CONFIG_SIZE	1 | 
|  | 494 |  | 
|  | 495 | #define MGMT_OP_SET_PUBLIC_ADDRESS	0x0039 | 
|  | 496 | struct mgmt_cp_set_public_address { | 
|  | 497 | bdaddr_t bdaddr; | 
|  | 498 | } __packed; | 
|  | 499 | #define MGMT_SET_PUBLIC_ADDRESS_SIZE	6 | 
|  | 500 |  | 
|  | 501 | #define MGMT_OP_START_SERVICE_DISCOVERY	0x003A | 
|  | 502 | struct mgmt_cp_start_service_discovery { | 
|  | 503 | __u8 type; | 
|  | 504 | __s8 rssi; | 
|  | 505 | __le16 uuid_count; | 
|  | 506 | __u8 uuids[0][16]; | 
|  | 507 | } __packed; | 
|  | 508 | #define MGMT_START_SERVICE_DISCOVERY_SIZE 4 | 
|  | 509 |  | 
|  | 510 | #define MGMT_OP_READ_LOCAL_OOB_EXT_DATA	0x003B | 
|  | 511 | struct mgmt_cp_read_local_oob_ext_data { | 
|  | 512 | __u8 type; | 
|  | 513 | } __packed; | 
|  | 514 | #define MGMT_READ_LOCAL_OOB_EXT_DATA_SIZE 1 | 
|  | 515 | struct mgmt_rp_read_local_oob_ext_data { | 
|  | 516 | __u8    type; | 
|  | 517 | __le16	eir_len; | 
|  | 518 | __u8	eir[0]; | 
|  | 519 | } __packed; | 
|  | 520 |  | 
|  | 521 | #define MGMT_OP_READ_EXT_INDEX_LIST	0x003C | 
|  | 522 | #define MGMT_READ_EXT_INDEX_LIST_SIZE	0 | 
|  | 523 | struct mgmt_rp_read_ext_index_list { | 
|  | 524 | __le16	num_controllers; | 
|  | 525 | struct { | 
|  | 526 | __le16 index; | 
|  | 527 | __u8   type; | 
|  | 528 | __u8   bus; | 
|  | 529 | } entry[0]; | 
|  | 530 | } __packed; | 
|  | 531 |  | 
|  | 532 | #define MGMT_OP_READ_ADV_FEATURES	0x0003D | 
|  | 533 | #define MGMT_READ_ADV_FEATURES_SIZE	0 | 
|  | 534 | struct mgmt_rp_read_adv_features { | 
|  | 535 | __le32 supported_flags; | 
|  | 536 | __u8   max_adv_data_len; | 
|  | 537 | __u8   max_scan_rsp_len; | 
|  | 538 | __u8   max_instances; | 
|  | 539 | __u8   num_instances; | 
|  | 540 | __u8   instance[0]; | 
|  | 541 | } __packed; | 
|  | 542 |  | 
|  | 543 | #define MGMT_OP_ADD_ADVERTISING		0x003E | 
|  | 544 | struct mgmt_cp_add_advertising { | 
|  | 545 | __u8	instance; | 
|  | 546 | __le32	flags; | 
|  | 547 | __le16	duration; | 
|  | 548 | __le16	timeout; | 
|  | 549 | __u8	adv_data_len; | 
|  | 550 | __u8	scan_rsp_len; | 
|  | 551 | __u8	data[0]; | 
|  | 552 | } __packed; | 
|  | 553 | #define MGMT_ADD_ADVERTISING_SIZE	11 | 
|  | 554 | struct mgmt_rp_add_advertising { | 
|  | 555 | __u8	instance; | 
|  | 556 | } __packed; | 
|  | 557 |  | 
|  | 558 | #define MGMT_ADV_FLAG_CONNECTABLE	BIT(0) | 
|  | 559 | #define MGMT_ADV_FLAG_DISCOV		BIT(1) | 
|  | 560 | #define MGMT_ADV_FLAG_LIMITED_DISCOV	BIT(2) | 
|  | 561 | #define MGMT_ADV_FLAG_MANAGED_FLAGS	BIT(3) | 
|  | 562 | #define MGMT_ADV_FLAG_TX_POWER		BIT(4) | 
|  | 563 | #define MGMT_ADV_FLAG_APPEARANCE	BIT(5) | 
|  | 564 | #define MGMT_ADV_FLAG_LOCAL_NAME	BIT(6) | 
|  | 565 | #define MGMT_ADV_FLAG_SEC_1M 		BIT(7) | 
|  | 566 | #define MGMT_ADV_FLAG_SEC_2M 		BIT(8) | 
|  | 567 | #define MGMT_ADV_FLAG_SEC_CODED 	BIT(9) | 
|  | 568 |  | 
|  | 569 | #define MGMT_ADV_FLAG_SEC_MASK	(MGMT_ADV_FLAG_SEC_1M | MGMT_ADV_FLAG_SEC_2M | \ | 
|  | 570 | MGMT_ADV_FLAG_SEC_CODED) | 
|  | 571 |  | 
|  | 572 | #define MGMT_OP_REMOVE_ADVERTISING	0x003F | 
|  | 573 | struct mgmt_cp_remove_advertising { | 
|  | 574 | __u8	instance; | 
|  | 575 | } __packed; | 
|  | 576 | #define MGMT_REMOVE_ADVERTISING_SIZE	1 | 
|  | 577 | struct mgmt_rp_remove_advertising { | 
|  | 578 | __u8	instance; | 
|  | 579 | } __packed; | 
|  | 580 |  | 
|  | 581 | #define MGMT_OP_GET_ADV_SIZE_INFO	0x0040 | 
|  | 582 | struct mgmt_cp_get_adv_size_info { | 
|  | 583 | __u8	instance; | 
|  | 584 | __le32	flags; | 
|  | 585 | } __packed; | 
|  | 586 | #define MGMT_GET_ADV_SIZE_INFO_SIZE	5 | 
|  | 587 | struct mgmt_rp_get_adv_size_info { | 
|  | 588 | __u8	instance; | 
|  | 589 | __le32	flags; | 
|  | 590 | __u8	max_adv_data_len; | 
|  | 591 | __u8	max_scan_rsp_len; | 
|  | 592 | } __packed; | 
|  | 593 |  | 
|  | 594 | #define MGMT_OP_START_LIMITED_DISCOVERY	0x0041 | 
|  | 595 |  | 
|  | 596 | #define MGMT_OP_READ_EXT_INFO		0x0042 | 
|  | 597 | #define MGMT_READ_EXT_INFO_SIZE		0 | 
|  | 598 | struct mgmt_rp_read_ext_info { | 
|  | 599 | bdaddr_t bdaddr; | 
|  | 600 | __u8     version; | 
|  | 601 | __le16   manufacturer; | 
|  | 602 | __le32   supported_settings; | 
|  | 603 | __le32   current_settings; | 
|  | 604 | __le16   eir_len; | 
|  | 605 | __u8     eir[0]; | 
|  | 606 | } __packed; | 
|  | 607 |  | 
|  | 608 | #define MGMT_OP_SET_APPEARANCE		0x0043 | 
|  | 609 | struct mgmt_cp_set_appearance { | 
|  | 610 | __le16	appearance; | 
|  | 611 | } __packed; | 
|  | 612 | #define MGMT_SET_APPEARANCE_SIZE	2 | 
|  | 613 |  | 
|  | 614 | #define MGMT_OP_GET_PHY_CONFIGURATION	0x0044 | 
|  | 615 | struct mgmt_rp_get_phy_confguration { | 
|  | 616 | __le32	supported_phys; | 
|  | 617 | __le32	configurable_phys; | 
|  | 618 | __le32	selected_phys; | 
|  | 619 | } __packed; | 
|  | 620 | #define MGMT_GET_PHY_CONFIGURATION_SIZE	0 | 
|  | 621 |  | 
|  | 622 | #define MGMT_PHY_BR_1M_1SLOT	0x00000001 | 
|  | 623 | #define MGMT_PHY_BR_1M_3SLOT	0x00000002 | 
|  | 624 | #define MGMT_PHY_BR_1M_5SLOT	0x00000004 | 
|  | 625 | #define MGMT_PHY_EDR_2M_1SLOT	0x00000008 | 
|  | 626 | #define MGMT_PHY_EDR_2M_3SLOT	0x00000010 | 
|  | 627 | #define MGMT_PHY_EDR_2M_5SLOT	0x00000020 | 
|  | 628 | #define MGMT_PHY_EDR_3M_1SLOT	0x00000040 | 
|  | 629 | #define MGMT_PHY_EDR_3M_3SLOT	0x00000080 | 
|  | 630 | #define MGMT_PHY_EDR_3M_5SLOT	0x00000100 | 
|  | 631 | #define MGMT_PHY_LE_1M_TX		0x00000200 | 
|  | 632 | #define MGMT_PHY_LE_1M_RX		0x00000400 | 
|  | 633 | #define MGMT_PHY_LE_2M_TX		0x00000800 | 
|  | 634 | #define MGMT_PHY_LE_2M_RX		0x00001000 | 
|  | 635 | #define MGMT_PHY_LE_CODED_TX	0x00002000 | 
|  | 636 | #define MGMT_PHY_LE_CODED_RX	0x00004000 | 
|  | 637 |  | 
|  | 638 | #define MGMT_PHY_BREDR_MASK (MGMT_PHY_BR_1M_1SLOT | MGMT_PHY_BR_1M_3SLOT | \ | 
|  | 639 | MGMT_PHY_BR_1M_5SLOT | MGMT_PHY_EDR_2M_1SLOT | \ | 
|  | 640 | MGMT_PHY_EDR_2M_3SLOT | MGMT_PHY_EDR_2M_5SLOT | \ | 
|  | 641 | MGMT_PHY_EDR_3M_1SLOT | MGMT_PHY_EDR_3M_3SLOT | \ | 
|  | 642 | MGMT_PHY_EDR_3M_5SLOT) | 
|  | 643 | #define MGMT_PHY_LE_MASK (MGMT_PHY_LE_1M_TX | MGMT_PHY_LE_1M_RX | \ | 
|  | 644 | MGMT_PHY_LE_2M_TX | MGMT_PHY_LE_2M_RX | \ | 
|  | 645 | MGMT_PHY_LE_CODED_TX | MGMT_PHY_LE_CODED_RX) | 
|  | 646 | #define MGMT_PHY_LE_TX_MASK (MGMT_PHY_LE_1M_TX | MGMT_PHY_LE_2M_TX | \ | 
|  | 647 | MGMT_PHY_LE_CODED_TX) | 
|  | 648 | #define MGMT_PHY_LE_RX_MASK (MGMT_PHY_LE_1M_RX | MGMT_PHY_LE_2M_RX | \ | 
|  | 649 | MGMT_PHY_LE_CODED_RX) | 
|  | 650 |  | 
|  | 651 | #define MGMT_OP_SET_PHY_CONFIGURATION	0x0045 | 
|  | 652 | struct mgmt_cp_set_phy_confguration { | 
|  | 653 | __le32	selected_phys; | 
|  | 654 | } __packed; | 
|  | 655 | #define MGMT_SET_PHY_CONFIGURATION_SIZE	4 | 
|  | 656 |  | 
|  | 657 | #define MGMT_EV_CMD_COMPLETE		0x0001 | 
|  | 658 | struct mgmt_ev_cmd_complete { | 
|  | 659 | __le16	opcode; | 
|  | 660 | __u8	status; | 
|  | 661 | __u8	data[0]; | 
|  | 662 | } __packed; | 
|  | 663 |  | 
|  | 664 | #define MGMT_EV_CMD_STATUS		0x0002 | 
|  | 665 | struct mgmt_ev_cmd_status { | 
|  | 666 | __le16	opcode; | 
|  | 667 | __u8	status; | 
|  | 668 | } __packed; | 
|  | 669 |  | 
|  | 670 | #define MGMT_EV_CONTROLLER_ERROR	0x0003 | 
|  | 671 | struct mgmt_ev_controller_error { | 
|  | 672 | __u8	error_code; | 
|  | 673 | } __packed; | 
|  | 674 |  | 
|  | 675 | #define MGMT_EV_INDEX_ADDED		0x0004 | 
|  | 676 |  | 
|  | 677 | #define MGMT_EV_INDEX_REMOVED		0x0005 | 
|  | 678 |  | 
|  | 679 | #define MGMT_EV_NEW_SETTINGS		0x0006 | 
|  | 680 |  | 
|  | 681 | #define MGMT_EV_CLASS_OF_DEV_CHANGED	0x0007 | 
|  | 682 | struct mgmt_ev_class_of_dev_changed { | 
|  | 683 | __u8	dev_class[3]; | 
|  | 684 | }; | 
|  | 685 |  | 
|  | 686 | #define MGMT_EV_LOCAL_NAME_CHANGED	0x0008 | 
|  | 687 | struct mgmt_ev_local_name_changed { | 
|  | 688 | __u8	name[MGMT_MAX_NAME_LENGTH]; | 
|  | 689 | __u8	short_name[MGMT_MAX_SHORT_NAME_LENGTH]; | 
|  | 690 | } __packed; | 
|  | 691 |  | 
|  | 692 | #define MGMT_EV_NEW_LINK_KEY		0x0009 | 
|  | 693 | struct mgmt_ev_new_link_key { | 
|  | 694 | __u8	store_hint; | 
|  | 695 | struct mgmt_link_key_info key; | 
|  | 696 | } __packed; | 
|  | 697 |  | 
|  | 698 | #define MGMT_EV_NEW_LONG_TERM_KEY	0x000A | 
|  | 699 | struct mgmt_ev_new_long_term_key { | 
|  | 700 | __u8	store_hint; | 
|  | 701 | struct mgmt_ltk_info key; | 
|  | 702 | } __packed; | 
|  | 703 |  | 
|  | 704 | #define MGMT_EV_DEVICE_CONNECTED	0x000B | 
|  | 705 | struct mgmt_ev_device_connected { | 
|  | 706 | struct mgmt_addr_info addr; | 
|  | 707 | __le32	flags; | 
|  | 708 | __le16	eir_len; | 
|  | 709 | __u8	eir[0]; | 
|  | 710 | } __packed; | 
|  | 711 |  | 
|  | 712 | #define MGMT_DEV_DISCONN_UNKNOWN	0x00 | 
|  | 713 | #define MGMT_DEV_DISCONN_TIMEOUT	0x01 | 
|  | 714 | #define MGMT_DEV_DISCONN_LOCAL_HOST	0x02 | 
|  | 715 | #define MGMT_DEV_DISCONN_REMOTE		0x03 | 
|  | 716 | #define MGMT_DEV_DISCONN_AUTH_FAILURE	0x04 | 
|  | 717 |  | 
|  | 718 | #define MGMT_EV_DEVICE_DISCONNECTED	0x000C | 
|  | 719 | struct mgmt_ev_device_disconnected { | 
|  | 720 | struct mgmt_addr_info addr; | 
|  | 721 | __u8	reason; | 
|  | 722 | } __packed; | 
|  | 723 |  | 
|  | 724 | #define MGMT_EV_CONNECT_FAILED		0x000D | 
|  | 725 | struct mgmt_ev_connect_failed { | 
|  | 726 | struct mgmt_addr_info addr; | 
|  | 727 | __u8	status; | 
|  | 728 | } __packed; | 
|  | 729 |  | 
|  | 730 | #define MGMT_EV_PIN_CODE_REQUEST	0x000E | 
|  | 731 | struct mgmt_ev_pin_code_request { | 
|  | 732 | struct mgmt_addr_info addr; | 
|  | 733 | __u8	secure; | 
|  | 734 | } __packed; | 
|  | 735 |  | 
|  | 736 | #define MGMT_EV_USER_CONFIRM_REQUEST	0x000F | 
|  | 737 | struct mgmt_ev_user_confirm_request { | 
|  | 738 | struct mgmt_addr_info addr; | 
|  | 739 | __u8	confirm_hint; | 
|  | 740 | __le32	value; | 
|  | 741 | } __packed; | 
|  | 742 |  | 
|  | 743 | #define MGMT_EV_USER_PASSKEY_REQUEST	0x0010 | 
|  | 744 | struct mgmt_ev_user_passkey_request { | 
|  | 745 | struct mgmt_addr_info addr; | 
|  | 746 | } __packed; | 
|  | 747 |  | 
|  | 748 | #define MGMT_EV_AUTH_FAILED		0x0011 | 
|  | 749 | struct mgmt_ev_auth_failed { | 
|  | 750 | struct mgmt_addr_info addr; | 
|  | 751 | __u8	status; | 
|  | 752 | } __packed; | 
|  | 753 |  | 
|  | 754 | #define MGMT_DEV_FOUND_CONFIRM_NAME    0x01 | 
|  | 755 | #define MGMT_DEV_FOUND_LEGACY_PAIRING  0x02 | 
|  | 756 | #define MGMT_DEV_FOUND_NOT_CONNECTABLE 0x04 | 
|  | 757 |  | 
|  | 758 | #define MGMT_EV_DEVICE_FOUND		0x0012 | 
|  | 759 | struct mgmt_ev_device_found { | 
|  | 760 | struct mgmt_addr_info addr; | 
|  | 761 | __s8	rssi; | 
|  | 762 | __le32	flags; | 
|  | 763 | __le16	eir_len; | 
|  | 764 | __u8	eir[0]; | 
|  | 765 | } __packed; | 
|  | 766 |  | 
|  | 767 | #define MGMT_EV_DISCOVERING		0x0013 | 
|  | 768 | struct mgmt_ev_discovering { | 
|  | 769 | __u8	type; | 
|  | 770 | __u8	discovering; | 
|  | 771 | } __packed; | 
|  | 772 |  | 
|  | 773 | #define MGMT_EV_DEVICE_BLOCKED		0x0014 | 
|  | 774 | struct mgmt_ev_device_blocked { | 
|  | 775 | struct mgmt_addr_info addr; | 
|  | 776 | } __packed; | 
|  | 777 |  | 
|  | 778 | #define MGMT_EV_DEVICE_UNBLOCKED	0x0015 | 
|  | 779 | struct mgmt_ev_device_unblocked { | 
|  | 780 | struct mgmt_addr_info addr; | 
|  | 781 | } __packed; | 
|  | 782 |  | 
|  | 783 | #define MGMT_EV_DEVICE_UNPAIRED		0x0016 | 
|  | 784 | struct mgmt_ev_device_unpaired { | 
|  | 785 | struct mgmt_addr_info addr; | 
|  | 786 | } __packed; | 
|  | 787 |  | 
|  | 788 | #define MGMT_EV_PASSKEY_NOTIFY		0x0017 | 
|  | 789 | struct mgmt_ev_passkey_notify { | 
|  | 790 | struct mgmt_addr_info addr; | 
|  | 791 | __le32	passkey; | 
|  | 792 | __u8	entered; | 
|  | 793 | } __packed; | 
|  | 794 |  | 
|  | 795 | #define MGMT_EV_NEW_IRK			0x0018 | 
|  | 796 | struct mgmt_ev_new_irk { | 
|  | 797 | __u8     store_hint; | 
|  | 798 | bdaddr_t rpa; | 
|  | 799 | struct mgmt_irk_info irk; | 
|  | 800 | } __packed; | 
|  | 801 |  | 
|  | 802 | #define MGMT_CSRK_LOCAL_UNAUTHENTICATED		0x00 | 
|  | 803 | #define MGMT_CSRK_REMOTE_UNAUTHENTICATED	0x01 | 
|  | 804 | #define MGMT_CSRK_LOCAL_AUTHENTICATED		0x02 | 
|  | 805 | #define MGMT_CSRK_REMOTE_AUTHENTICATED		0x03 | 
|  | 806 |  | 
|  | 807 | struct mgmt_csrk_info { | 
|  | 808 | struct mgmt_addr_info addr; | 
|  | 809 | __u8 type; | 
|  | 810 | __u8 val[16]; | 
|  | 811 | } __packed; | 
|  | 812 |  | 
|  | 813 | #define MGMT_EV_NEW_CSRK		0x0019 | 
|  | 814 | struct mgmt_ev_new_csrk { | 
|  | 815 | __u8 store_hint; | 
|  | 816 | struct mgmt_csrk_info key; | 
|  | 817 | } __packed; | 
|  | 818 |  | 
|  | 819 | #define MGMT_EV_DEVICE_ADDED		0x001a | 
|  | 820 | struct mgmt_ev_device_added { | 
|  | 821 | struct mgmt_addr_info addr; | 
|  | 822 | __u8 action; | 
|  | 823 | } __packed; | 
|  | 824 |  | 
|  | 825 | #define MGMT_EV_DEVICE_REMOVED		0x001b | 
|  | 826 | struct mgmt_ev_device_removed { | 
|  | 827 | struct mgmt_addr_info addr; | 
|  | 828 | } __packed; | 
|  | 829 |  | 
|  | 830 | #define MGMT_EV_NEW_CONN_PARAM		0x001c | 
|  | 831 | struct mgmt_ev_new_conn_param { | 
|  | 832 | struct mgmt_addr_info addr; | 
|  | 833 | __u8 store_hint; | 
|  | 834 | __le16 min_interval; | 
|  | 835 | __le16 max_interval; | 
|  | 836 | __le16 latency; | 
|  | 837 | __le16 timeout; | 
|  | 838 | } __packed; | 
|  | 839 |  | 
|  | 840 | #define MGMT_EV_UNCONF_INDEX_ADDED	0x001d | 
|  | 841 |  | 
|  | 842 | #define MGMT_EV_UNCONF_INDEX_REMOVED	0x001e | 
|  | 843 |  | 
|  | 844 | #define MGMT_EV_NEW_CONFIG_OPTIONS	0x001f | 
|  | 845 |  | 
|  | 846 | struct mgmt_ev_ext_index { | 
|  | 847 | __u8 type; | 
|  | 848 | __u8 bus; | 
|  | 849 | } __packed; | 
|  | 850 |  | 
|  | 851 | #define MGMT_EV_EXT_INDEX_ADDED		0x0020 | 
|  | 852 |  | 
|  | 853 | #define MGMT_EV_EXT_INDEX_REMOVED	0x0021 | 
|  | 854 |  | 
|  | 855 | #define MGMT_EV_LOCAL_OOB_DATA_UPDATED	0x0022 | 
|  | 856 | struct mgmt_ev_local_oob_data_updated { | 
|  | 857 | __u8    type; | 
|  | 858 | __le16	eir_len; | 
|  | 859 | __u8	eir[0]; | 
|  | 860 | } __packed; | 
|  | 861 |  | 
|  | 862 | #define MGMT_EV_ADVERTISING_ADDED	0x0023 | 
|  | 863 | struct mgmt_ev_advertising_added { | 
|  | 864 | __u8    instance; | 
|  | 865 | } __packed; | 
|  | 866 |  | 
|  | 867 | #define MGMT_EV_ADVERTISING_REMOVED	0x0024 | 
|  | 868 | struct mgmt_ev_advertising_removed { | 
|  | 869 | __u8    instance; | 
|  | 870 | } __packed; | 
|  | 871 |  | 
|  | 872 | #define MGMT_EV_EXT_INFO_CHANGED	0x0025 | 
|  | 873 | struct mgmt_ev_ext_info_changed { | 
|  | 874 | __le16	eir_len; | 
|  | 875 | __u8	eir[0]; | 
|  | 876 | } __packed; | 
|  | 877 |  | 
|  | 878 | #define MGMT_EV_PHY_CONFIGURATION_CHANGED	0x0026 | 
|  | 879 | struct mgmt_ev_phy_configuration_changed { | 
|  | 880 | __le32	selected_phys; | 
|  | 881 | } __packed; |