diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-07-14 14:13:50 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-07-14 14:13:50 -0400 |
commit | 40be492fe4fab829951681860c2bb26fa1d5fe4a (patch) | |
tree | 41b576692c2206c9a51e689f54170076ec95bc3a /include/net/bluetooth | |
parent | f8558555f31e177e2644f3c8116801c3e5c29974 (diff) |
[Bluetooth] Export details about authentication requirements
With the Simple Pairing support, the authentication requirements are
an explicit setting during the bonding process. Track and enforce the
requirements and allow higher layers like L2CAP and RFCOMM to increase
them if needed.
This patch introduces a new IOCTL that allows to query the current
authentication requirements. It is also possible to detect Simple
Pairing support in the kernel this way.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'include/net/bluetooth')
-rw-r--r-- | include/net/bluetooth/hci.h | 18 | ||||
-rw-r--r-- | include/net/bluetooth/hci_core.h | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 55576e848827..3cc294919312 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
@@ -72,8 +72,6 @@ enum { | |||
72 | HCI_INQUIRY, | 72 | HCI_INQUIRY, |
73 | 73 | ||
74 | HCI_RAW, | 74 | HCI_RAW, |
75 | |||
76 | HCI_SECMGR | ||
77 | }; | 75 | }; |
78 | 76 | ||
79 | /* HCI ioctl defines */ | 77 | /* HCI ioctl defines */ |
@@ -86,6 +84,7 @@ enum { | |||
86 | #define HCIGETDEVINFO _IOR('H', 211, int) | 84 | #define HCIGETDEVINFO _IOR('H', 211, int) |
87 | #define HCIGETCONNLIST _IOR('H', 212, int) | 85 | #define HCIGETCONNLIST _IOR('H', 212, int) |
88 | #define HCIGETCONNINFO _IOR('H', 213, int) | 86 | #define HCIGETCONNINFO _IOR('H', 213, int) |
87 | #define HCIGETAUTHINFO _IOR('H', 215, int) | ||
89 | 88 | ||
90 | #define HCISETRAW _IOW('H', 220, int) | 89 | #define HCISETRAW _IOW('H', 220, int) |
91 | #define HCISETSCAN _IOW('H', 221, int) | 90 | #define HCISETSCAN _IOW('H', 221, int) |
@@ -97,8 +96,6 @@ enum { | |||
97 | #define HCISETACLMTU _IOW('H', 227, int) | 96 | #define HCISETACLMTU _IOW('H', 227, int) |
98 | #define HCISETSCOMTU _IOW('H', 228, int) | 97 | #define HCISETSCOMTU _IOW('H', 228, int) |
99 | 98 | ||
100 | #define HCISETSECMGR _IOW('H', 230, int) | ||
101 | |||
102 | #define HCIINQUIRY _IOR('H', 240, int) | 99 | #define HCIINQUIRY _IOR('H', 240, int) |
103 | 100 | ||
104 | /* HCI timeouts */ | 101 | /* HCI timeouts */ |
@@ -203,6 +200,14 @@ enum { | |||
203 | #define HCI_LM_RELIABLE 0x0010 | 200 | #define HCI_LM_RELIABLE 0x0010 |
204 | #define HCI_LM_SECURE 0x0020 | 201 | #define HCI_LM_SECURE 0x0020 |
205 | 202 | ||
203 | /* Authentication types */ | ||
204 | #define HCI_AT_NO_BONDING 0x00 | ||
205 | #define HCI_AT_NO_BONDING_MITM 0x01 | ||
206 | #define HCI_AT_DEDICATED_BONDING 0x02 | ||
207 | #define HCI_AT_DEDICATED_BONDING_MITM 0x03 | ||
208 | #define HCI_AT_GENERAL_BONDING 0x04 | ||
209 | #define HCI_AT_GENERAL_BONDING_MITM 0x05 | ||
210 | |||
206 | /* ----- HCI Commands ---- */ | 211 | /* ----- HCI Commands ---- */ |
207 | #define HCI_OP_INQUIRY 0x0401 | 212 | #define HCI_OP_INQUIRY 0x0401 |
208 | struct hci_cp_inquiry { | 213 | struct hci_cp_inquiry { |
@@ -1001,6 +1006,11 @@ struct hci_conn_info_req { | |||
1001 | struct hci_conn_info conn_info[0]; | 1006 | struct hci_conn_info conn_info[0]; |
1002 | }; | 1007 | }; |
1003 | 1008 | ||
1009 | struct hci_auth_info_req { | ||
1010 | bdaddr_t bdaddr; | ||
1011 | __u8 type; | ||
1012 | }; | ||
1013 | |||
1004 | struct hci_inquiry_req { | 1014 | struct hci_inquiry_req { |
1005 | __u16 dev_id; | 1015 | __u16 dev_id; |
1006 | __u16 flags; | 1016 | __u16 flags; |
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 28fbd0caa534..cbf751094688 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -168,6 +168,7 @@ struct hci_conn { | |||
168 | __u16 pkt_type; | 168 | __u16 pkt_type; |
169 | __u16 link_policy; | 169 | __u16 link_policy; |
170 | __u32 link_mode; | 170 | __u32 link_mode; |
171 | __u8 auth_type; | ||
171 | __u8 power_save; | 172 | __u8 power_save; |
172 | unsigned long pend; | 173 | unsigned long pend; |
173 | 174 | ||
@@ -422,6 +423,7 @@ int hci_get_dev_list(void __user *arg); | |||
422 | int hci_get_dev_info(void __user *arg); | 423 | int hci_get_dev_info(void __user *arg); |
423 | int hci_get_conn_list(void __user *arg); | 424 | int hci_get_conn_list(void __user *arg); |
424 | int hci_get_conn_info(struct hci_dev *hdev, void __user *arg); | 425 | int hci_get_conn_info(struct hci_dev *hdev, void __user *arg); |
426 | int hci_get_auth_info(struct hci_dev *hdev, void __user *arg); | ||
425 | int hci_inquiry(void __user *arg); | 427 | int hci_inquiry(void __user *arg); |
426 | 428 | ||
427 | void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb); | 429 | void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb); |