]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - include/net/bluetooth/mgmt.h
Merge branch 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux...
[mirror_ubuntu-bionic-kernel.git] / include / net / bluetooth / mgmt.h
CommitLineData
c02178d2
JH
1/*
2 BlueZ - Bluetooth protocol stack for Linux
3
4 Copyright (C) 2010 Nokia Corporation
ea585ab5 5 Copyright (C) 2011-2012 Intel Corporation
c02178d2
JH
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
4e51eae9
SJ
25#define MGMT_INDEX_NONE 0xFFFF
26
ca69b795
JH
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
28424707 43#define MGMT_STATUS_CANCELLED 0x10
5f159032 44#define MGMT_STATUS_INVALID_INDEX 0x11
96570ffc 45#define MGMT_STATUS_RFKILLED 0x12
ca69b795 46
c02178d2 47struct mgmt_hdr {
c4762507
GP
48 __le16 opcode;
49 __le16 index;
50 __le16 len;
c02178d2 51} __packed;
c02178d2 52
9ef866ad 53struct mgmt_addr_info {
c4762507
GP
54 bdaddr_t bdaddr;
55 __u8 type;
9ef866ad 56} __packed;
9d1acbfb 57#define MGMT_ADDR_INFO_SIZE 7
9ef866ad 58
02d98129 59#define MGMT_OP_READ_VERSION 0x0001
9d1acbfb 60#define MGMT_READ_VERSION_SIZE 0
02d98129 61struct mgmt_rp_read_version {
c4762507
GP
62 __u8 version;
63 __le16 revision;
02d98129
JH
64} __packed;
65
e70bb2e8 66#define MGMT_OP_READ_COMMANDS 0x0002
9d1acbfb 67#define MGMT_READ_COMMANDS_SIZE 0
e70bb2e8 68struct mgmt_rp_read_commands {
c4762507
GP
69 __le16 num_commands;
70 __le16 num_events;
71 __le16 opcodes[0];
e70bb2e8
JH
72} __packed;
73
faba42eb 74#define MGMT_OP_READ_INDEX_LIST 0x0003
9d1acbfb 75#define MGMT_READ_INDEX_LIST_SIZE 0
faba42eb 76struct mgmt_rp_read_index_list {
c4762507
GP
77 __le16 num_controllers;
78 __le16 index[0];
faba42eb
JH
79} __packed;
80
dc4fe30b
JH
81/* Reserve one extra byte for names in management messages so that they
82 * are always guaranteed to be nul-terminated */
83#define MGMT_MAX_NAME_LENGTH (HCI_MAX_NAME_LENGTH + 1)
490c5bab 84#define MGMT_MAX_SHORT_NAME_LENGTH (HCI_MAX_SHORT_NAME_LENGTH + 1)
69ab39ea
JH
85
86#define MGMT_SETTING_POWERED 0x00000001
87#define MGMT_SETTING_CONNECTABLE 0x00000002
88#define MGMT_SETTING_FAST_CONNECTABLE 0x00000004
89#define MGMT_SETTING_DISCOVERABLE 0x00000008
90#define MGMT_SETTING_PAIRABLE 0x00000010
91#define MGMT_SETTING_LINK_SECURITY 0x00000020
92#define MGMT_SETTING_SSP 0x00000040
93#define MGMT_SETTING_BREDR 0x00000080
94#define MGMT_SETTING_HS 0x00000100
95#define MGMT_SETTING_LE 0x00000200
eeca6f89 96#define MGMT_SETTING_ADVERTISING 0x00000400
dc4fe30b 97
f7b64e69 98#define MGMT_OP_READ_INFO 0x0004
9d1acbfb 99#define MGMT_READ_INFO_SIZE 0
f7b64e69 100struct mgmt_rp_read_info {
c4762507
GP
101 bdaddr_t bdaddr;
102 __u8 version;
103 __le16 manufacturer;
104 __le32 supported_settings;
105 __le32 current_settings;
106 __u8 dev_class[3];
107 __u8 name[MGMT_MAX_NAME_LENGTH];
108 __u8 short_name[MGMT_MAX_SHORT_NAME_LENGTH];
f7b64e69
JH
109} __packed;
110
72a734ec 111struct mgmt_mode {
72a734ec 112 __u8 val;
eec8d2bc
JH
113} __packed;
114
9d1acbfb
JH
115#define MGMT_SETTING_SIZE 1
116
72a734ec
JH
117#define MGMT_OP_SET_POWERED 0x0005
118
73f22f62 119#define MGMT_OP_SET_DISCOVERABLE 0x0006
16ab91ab 120struct mgmt_cp_set_discoverable {
c4762507 121 __u8 val;
c732a2af 122 __le16 timeout;
16ab91ab 123} __packed;
9d1acbfb 124#define MGMT_SET_DISCOVERABLE_SIZE 3
73f22f62 125
9fbcbb45 126#define MGMT_OP_SET_CONNECTABLE 0x0007
9fbcbb45 127
f71d5a25 128#define MGMT_OP_SET_FAST_CONNECTABLE 0x0008
f7c6869c 129
f71d5a25 130#define MGMT_OP_SET_PAIRABLE 0x0009
c542a06c 131
f71d5a25
JH
132#define MGMT_OP_SET_LINK_SECURITY 0x000A
133
134#define MGMT_OP_SET_SSP 0x000B
135
136#define MGMT_OP_SET_HS 0x000C
137
138#define MGMT_OP_SET_LE 0x000D
f71d5a25
JH
139#define MGMT_OP_SET_DEV_CLASS 0x000E
140struct mgmt_cp_set_dev_class {
c4762507
GP
141 __u8 major;
142 __u8 minor;
f71d5a25 143} __packed;
9d1acbfb 144#define MGMT_SET_DEV_CLASS_SIZE 2
f71d5a25
JH
145
146#define MGMT_OP_SET_LOCAL_NAME 0x000F
147struct mgmt_cp_set_local_name {
c4762507
GP
148 __u8 name[MGMT_MAX_NAME_LENGTH];
149 __u8 short_name[MGMT_MAX_SHORT_NAME_LENGTH];
f71d5a25 150} __packed;
9d1acbfb 151#define MGMT_SET_LOCAL_NAME_SIZE 260
f71d5a25
JH
152
153#define MGMT_OP_ADD_UUID 0x0010
2aeb9a1a 154struct mgmt_cp_add_uuid {
c4762507
GP
155 __u8 uuid[16];
156 __u8 svc_hint;
2aeb9a1a 157} __packed;
9d1acbfb 158#define MGMT_ADD_UUID_SIZE 17
2aeb9a1a 159
f71d5a25 160#define MGMT_OP_REMOVE_UUID 0x0011
2aeb9a1a 161struct mgmt_cp_remove_uuid {
c4762507 162 __u8 uuid[16];
2aeb9a1a 163} __packed;
9d1acbfb 164#define MGMT_REMOVE_UUID_SIZE 16
2aeb9a1a 165
86742e1e 166struct mgmt_link_key_info {
d753fdc4 167 struct mgmt_addr_info addr;
044e1247
GP
168 __u8 type;
169 __u8 val[16];
170 __u8 pin_len;
55ed8ca1
JH
171} __packed;
172
f71d5a25 173#define MGMT_OP_LOAD_LINK_KEYS 0x0012
86742e1e 174struct mgmt_cp_load_link_keys {
c4762507
GP
175 __u8 debug_keys;
176 __le16 key_count;
177 struct mgmt_link_key_info keys[0];
55ed8ca1 178} __packed;
9d1acbfb 179#define MGMT_LOAD_LINK_KEYS_SIZE 3
55ed8ca1 180
9ef866ad
JH
181struct mgmt_ltk_info {
182 struct mgmt_addr_info addr;
c4762507
GP
183 __u8 authenticated;
184 __u8 master;
185 __u8 enc_size;
186 __le16 ediv;
187 __u8 rand[8];
188 __u8 val[16];
9ef866ad
JH
189} __packed;
190
191#define MGMT_OP_LOAD_LONG_TERM_KEYS 0x0013
192struct mgmt_cp_load_long_term_keys {
c4762507
GP
193 __le16 key_count;
194 struct mgmt_ltk_info keys[0];
9ef866ad 195} __packed;
9d1acbfb 196#define MGMT_LOAD_LONG_TERM_KEYS_SIZE 2
9ef866ad 197
124f6e35 198#define MGMT_OP_DISCONNECT 0x0014
8962ee74 199struct mgmt_cp_disconnect {
88c3df13 200 struct mgmt_addr_info addr;
8962ee74 201} __packed;
9d1acbfb 202#define MGMT_DISCONNECT_SIZE MGMT_ADDR_INFO_SIZE
8962ee74 203struct mgmt_rp_disconnect {
88c3df13 204 struct mgmt_addr_info addr;
8962ee74 205} __packed;
55ed8ca1 206
124f6e35 207#define MGMT_OP_GET_CONNECTIONS 0x0015
9d1acbfb 208#define MGMT_GET_CONNECTIONS_SIZE 0
2784eb41 209struct mgmt_rp_get_connections {
2784eb41 210 __le16 conn_count;
4c659c39 211 struct mgmt_addr_info addr[0];
2784eb41
JH
212} __packed;
213
124f6e35 214#define MGMT_OP_PIN_CODE_REPLY 0x0016
980e1a53 215struct mgmt_cp_pin_code_reply {
d8457698 216 struct mgmt_addr_info addr;
c4762507
GP
217 __u8 pin_len;
218 __u8 pin_code[16];
980e1a53 219} __packed;
9d1acbfb 220#define MGMT_PIN_CODE_REPLY_SIZE (MGMT_ADDR_INFO_SIZE + 17)
ac56fb13 221struct mgmt_rp_pin_code_reply {
d8457698 222 struct mgmt_addr_info addr;
ac56fb13 223} __packed;
980e1a53 224
124f6e35 225#define MGMT_OP_PIN_CODE_NEG_REPLY 0x0017
980e1a53 226struct mgmt_cp_pin_code_neg_reply {
d8457698 227 struct mgmt_addr_info addr;
980e1a53 228} __packed;
9d1acbfb 229#define MGMT_PIN_CODE_NEG_REPLY_SIZE MGMT_ADDR_INFO_SIZE
980e1a53 230
124f6e35 231#define MGMT_OP_SET_IO_CAPABILITY 0x0018
17fa4b9d 232struct mgmt_cp_set_io_capability {
c4762507 233 __u8 io_capability;
17fa4b9d 234} __packed;
9d1acbfb 235#define MGMT_SET_IO_CAPABILITY_SIZE 1
17fa4b9d 236
124f6e35 237#define MGMT_OP_PAIR_DEVICE 0x0019
e9a416b5 238struct mgmt_cp_pair_device {
ba4e564f 239 struct mgmt_addr_info addr;
c4762507 240 __u8 io_cap;
e9a416b5 241} __packed;
9d1acbfb 242#define MGMT_PAIR_DEVICE_SIZE (MGMT_ADDR_INFO_SIZE + 1)
e9a416b5 243struct mgmt_rp_pair_device {
ba4e564f 244 struct mgmt_addr_info addr;
e9a416b5
JH
245} __packed;
246
124f6e35 247#define MGMT_OP_CANCEL_PAIR_DEVICE 0x001A
9d1acbfb 248#define MGMT_CANCEL_PAIR_DEVICE_SIZE MGMT_ADDR_INFO_SIZE
124f6e35
JH
249
250#define MGMT_OP_UNPAIR_DEVICE 0x001B
251struct mgmt_cp_unpair_device {
252 struct mgmt_addr_info addr;
253 __u8 disconnect;
254} __packed;
9d1acbfb 255#define MGMT_UNPAIR_DEVICE_SIZE (MGMT_ADDR_INFO_SIZE + 1)
124f6e35
JH
256struct mgmt_rp_unpair_device {
257 struct mgmt_addr_info addr;
124f6e35 258};
9ef866ad
JH
259
260#define MGMT_OP_USER_CONFIRM_REPLY 0x001C
a5c29683 261struct mgmt_cp_user_confirm_reply {
272d90df 262 struct mgmt_addr_info addr;
a5c29683 263} __packed;
9d1acbfb 264#define MGMT_USER_CONFIRM_REPLY_SIZE MGMT_ADDR_INFO_SIZE
a5c29683 265struct mgmt_rp_user_confirm_reply {
272d90df 266 struct mgmt_addr_info addr;
a5c29683
JH
267} __packed;
268
9ef866ad 269#define MGMT_OP_USER_CONFIRM_NEG_REPLY 0x001D
f71d5a25 270struct mgmt_cp_user_confirm_neg_reply {
272d90df 271 struct mgmt_addr_info addr;
f71d5a25 272} __packed;
9d1acbfb 273#define MGMT_USER_CONFIRM_NEG_REPLY_SIZE MGMT_ADDR_INFO_SIZE
a5c29683 274
9ef866ad 275#define MGMT_OP_USER_PASSKEY_REPLY 0x001E
f71d5a25 276struct mgmt_cp_user_passkey_reply {
272d90df 277 struct mgmt_addr_info addr;
c4762507 278 __le32 passkey;
f71d5a25 279} __packed;
9d1acbfb 280#define MGMT_USER_PASSKEY_REPLY_SIZE (MGMT_ADDR_INFO_SIZE + 4)
f71d5a25 281struct mgmt_rp_user_passkey_reply {
272d90df 282 struct mgmt_addr_info addr;
f71d5a25
JH
283} __packed;
284
9ef866ad 285#define MGMT_OP_USER_PASSKEY_NEG_REPLY 0x001F
f71d5a25 286struct mgmt_cp_user_passkey_neg_reply {
272d90df 287 struct mgmt_addr_info addr;
b312b161 288} __packed;
9d1acbfb 289#define MGMT_USER_PASSKEY_NEG_REPLY_SIZE MGMT_ADDR_INFO_SIZE
b312b161 290
9ef866ad 291#define MGMT_OP_READ_LOCAL_OOB_DATA 0x0020
9d1acbfb 292#define MGMT_READ_LOCAL_OOB_DATA_SIZE 0
c35938b2 293struct mgmt_rp_read_local_oob_data {
c4762507
GP
294 __u8 hash[16];
295 __u8 randomizer[16];
c35938b2
SJ
296} __packed;
297
9ef866ad 298#define MGMT_OP_ADD_REMOTE_OOB_DATA 0x0021
2763eda6 299struct mgmt_cp_add_remote_oob_data {
664ce4cc 300 struct mgmt_addr_info addr;
c4762507
GP
301 __u8 hash[16];
302 __u8 randomizer[16];
2763eda6 303} __packed;
9d1acbfb 304#define MGMT_ADD_REMOTE_OOB_DATA_SIZE (MGMT_ADDR_INFO_SIZE + 32)
2763eda6 305
9ef866ad 306#define MGMT_OP_REMOVE_REMOTE_OOB_DATA 0x0022
2763eda6 307struct mgmt_cp_remove_remote_oob_data {
664ce4cc 308 struct mgmt_addr_info addr;
2763eda6 309} __packed;
9d1acbfb 310#define MGMT_REMOVE_REMOTE_OOB_DATA_SIZE MGMT_ADDR_INFO_SIZE
2763eda6 311
9ef866ad 312#define MGMT_OP_START_DISCOVERY 0x0023
450dfdaf
JH
313struct mgmt_cp_start_discovery {
314 __u8 type;
315} __packed;
9d1acbfb 316#define MGMT_START_DISCOVERY_SIZE 1
14a53664 317
9ef866ad 318#define MGMT_OP_STOP_DISCOVERY 0x0024
d930650b
JH
319struct mgmt_cp_stop_discovery {
320 __u8 type;
321} __packed;
9d1acbfb 322#define MGMT_STOP_DISCOVERY_SIZE 1
14a53664 323
9ef866ad 324#define MGMT_OP_CONFIRM_NAME 0x0025
4dad9992 325struct mgmt_cp_confirm_name {
a198e7b1 326 struct mgmt_addr_info addr;
c4762507 327 __u8 name_known;
4dad9992 328} __packed;
9d1acbfb 329#define MGMT_CONFIRM_NAME_SIZE (MGMT_ADDR_INFO_SIZE + 1)
4dad9992 330struct mgmt_rp_confirm_name {
a198e7b1 331 struct mgmt_addr_info addr;
4dad9992
JH
332} __packed;
333
9ef866ad 334#define MGMT_OP_BLOCK_DEVICE 0x0026
7fbec224 335struct mgmt_cp_block_device {
88c1fe4b 336 struct mgmt_addr_info addr;
7fbec224 337} __packed;
9d1acbfb 338#define MGMT_BLOCK_DEVICE_SIZE MGMT_ADDR_INFO_SIZE
7fbec224 339
9ef866ad 340#define MGMT_OP_UNBLOCK_DEVICE 0x0027
7fbec224 341struct mgmt_cp_unblock_device {
88c1fe4b 342 struct mgmt_addr_info addr;
7fbec224 343} __packed;
9d1acbfb 344#define MGMT_UNBLOCK_DEVICE_SIZE MGMT_ADDR_INFO_SIZE
7fbec224 345
cdbaccca
MH
346#define MGMT_OP_SET_DEVICE_ID 0x0028
347struct mgmt_cp_set_device_id {
348 __le16 source;
349 __le16 vendor;
350 __le16 product;
351 __le16 version;
352} __packed;
353#define MGMT_SET_DEVICE_ID_SIZE 8
354
4375f103
JH
355#define MGMT_OP_SET_ADVERTISING 0x0029
356
0663ca2a
JH
357#define MGMT_OP_SET_BREDR 0x002A
358
d13eafce
MH
359#define MGMT_OP_SET_STATIC_ADDRESS 0x002B
360struct mgmt_cp_set_static_address {
361 bdaddr_t bdaddr;
362} __packed;
363#define MGMT_SET_STATIC_ADDRESS_SIZE 6
364
14b49b9a
MH
365#define MGMT_OP_SET_SCAN_PARAMS 0x002C
366struct mgmt_cp_set_scan_params {
367 __le16 interval;
368 __le16 window;
369} __packed;
370#define MGMT_SET_SCAN_PARAMS_SIZE 4
371
c02178d2
JH
372#define MGMT_EV_CMD_COMPLETE 0x0001
373struct mgmt_ev_cmd_complete {
c4762507
GP
374 __le16 opcode;
375 __u8 status;
376 __u8 data[0];
c02178d2
JH
377} __packed;
378
379#define MGMT_EV_CMD_STATUS 0x0002
380struct mgmt_ev_cmd_status {
c4762507
GP
381 __le16 opcode;
382 __u8 status;
c02178d2
JH
383} __packed;
384
385#define MGMT_EV_CONTROLLER_ERROR 0x0003
386struct mgmt_ev_controller_error {
c4762507 387 __u8 error_code;
c02178d2 388} __packed;
c71e97bf
JH
389
390#define MGMT_EV_INDEX_ADDED 0x0004
c71e97bf
JH
391
392#define MGMT_EV_INDEX_REMOVED 0x0005
5add6af8 393
69ab39ea 394#define MGMT_EV_NEW_SETTINGS 0x0006
73f22f62 395
f71d5a25
JH
396#define MGMT_EV_CLASS_OF_DEV_CHANGED 0x0007
397struct mgmt_ev_class_of_dev_changed {
c4762507 398 __u8 dev_class[3];
f71d5a25 399};
c542a06c 400
f71d5a25
JH
401#define MGMT_EV_LOCAL_NAME_CHANGED 0x0008
402struct mgmt_ev_local_name_changed {
c4762507
GP
403 __u8 name[MGMT_MAX_NAME_LENGTH];
404 __u8 short_name[MGMT_MAX_SHORT_NAME_LENGTH];
f71d5a25 405} __packed;
55ed8ca1 406
f71d5a25 407#define MGMT_EV_NEW_LINK_KEY 0x0009
86742e1e 408struct mgmt_ev_new_link_key {
c4762507 409 __u8 store_hint;
86742e1e 410 struct mgmt_link_key_info key;
55ed8ca1 411} __packed;
f7520543 412
9ef866ad
JH
413#define MGMT_EV_NEW_LONG_TERM_KEY 0x000A
414struct mgmt_ev_new_long_term_key {
c4762507 415 __u8 store_hint;
9ef866ad
JH
416 struct mgmt_ltk_info key;
417} __packed;
418
419#define MGMT_EV_DEVICE_CONNECTED 0x000B
b644ba33
JH
420struct mgmt_ev_device_connected {
421 struct mgmt_addr_info addr;
c4762507
GP
422 __le32 flags;
423 __le16 eir_len;
424 __u8 eir[0];
b644ba33 425} __packed;
f7520543 426
f0d6a0ea
MA
427#define MGMT_DEV_DISCONN_UNKNOWN 0x00
428#define MGMT_DEV_DISCONN_TIMEOUT 0x01
429#define MGMT_DEV_DISCONN_LOCAL_HOST 0x02
430#define MGMT_DEV_DISCONN_REMOTE 0x03
431
9ef866ad 432#define MGMT_EV_DEVICE_DISCONNECTED 0x000C
f0d6a0ea
MA
433struct mgmt_ev_device_disconnected {
434 struct mgmt_addr_info addr;
435 __u8 reason;
436} __packed;
17d5c04c 437
9ef866ad 438#define MGMT_EV_CONNECT_FAILED 0x000D
17d5c04c 439struct mgmt_ev_connect_failed {
4c659c39 440 struct mgmt_addr_info addr;
c4762507 441 __u8 status;
17d5c04c 442} __packed;
980e1a53 443
9ef866ad 444#define MGMT_EV_PIN_CODE_REQUEST 0x000E
980e1a53 445struct mgmt_ev_pin_code_request {
d8457698 446 struct mgmt_addr_info addr;
c4762507 447 __u8 secure;
980e1a53 448} __packed;
a5c29683 449
9ef866ad 450#define MGMT_EV_USER_CONFIRM_REQUEST 0x000F
a5c29683 451struct mgmt_ev_user_confirm_request {
272d90df 452 struct mgmt_addr_info addr;
c4762507
GP
453 __u8 confirm_hint;
454 __le32 value;
a5c29683 455} __packed;
2a611692 456
9ef866ad 457#define MGMT_EV_USER_PASSKEY_REQUEST 0x0010
f71d5a25 458struct mgmt_ev_user_passkey_request {
272d90df 459 struct mgmt_addr_info addr;
f71d5a25
JH
460} __packed;
461
9ef866ad 462#define MGMT_EV_AUTH_FAILED 0x0011
2a611692 463struct mgmt_ev_auth_failed {
bab73cb6 464 struct mgmt_addr_info addr;
c4762507 465 __u8 status;
2a611692 466} __packed;
b312b161 467
9a395a80
JH
468#define MGMT_DEV_FOUND_CONFIRM_NAME 0x01
469#define MGMT_DEV_FOUND_LEGACY_PAIRING 0x02
470
9ef866ad 471#define MGMT_EV_DEVICE_FOUND 0x0012
e17acd40 472struct mgmt_ev_device_found {
4c659c39 473 struct mgmt_addr_info addr;
c4762507 474 __s8 rssi;
af7985bf 475 __le32 flags;
c4762507
GP
476 __le16 eir_len;
477 __u8 eir[0];
e17acd40 478} __packed;
a88a9652 479
9ef866ad 480#define MGMT_EV_DISCOVERING 0x0013
f963e8e9 481struct mgmt_ev_discovering {
c4762507
GP
482 __u8 type;
483 __u8 discovering;
f963e8e9 484} __packed;
5e762444 485
9ef866ad 486#define MGMT_EV_DEVICE_BLOCKED 0x0014
5e762444 487struct mgmt_ev_device_blocked {
88c1fe4b 488 struct mgmt_addr_info addr;
5e762444
AJ
489} __packed;
490
9ef866ad 491#define MGMT_EV_DEVICE_UNBLOCKED 0x0015
5e762444 492struct mgmt_ev_device_unblocked {
88c1fe4b 493 struct mgmt_addr_info addr;
5e762444 494} __packed;
b1078ad0
JH
495
496#define MGMT_EV_DEVICE_UNPAIRED 0x0016
497struct mgmt_ev_device_unpaired {
498 struct mgmt_addr_info addr;
499} __packed;
92a25256
JH
500
501#define MGMT_EV_PASSKEY_NOTIFY 0x0017
502struct mgmt_ev_passkey_notify {
503 struct mgmt_addr_info addr;
504 __le32 passkey;
505 __u8 entered;
506} __packed;