aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/hci_event.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2011-04-28 14:28:56 -0400
committerGustavo F. Padovan <padovan@profusion.mobi>2011-04-28 15:13:57 -0400
commit55bc1a378cc35f21a26e07af2ff2b71820808cd4 (patch)
tree06da1dd02bc268f6d375c4b1992a9e00ca0c3091 /net/bluetooth/hci_event.c
parent79c6c70cbe35c270e7b59207ab76b44183a1030a (diff)
Bluetooth: Add confirm_hint parameter to user confirmation requests
When accepting a pairing request which fulfills the SSP auto-accept criteria we need to push the request all the way to the user for confirmation. This patch adds a new hint to the user_confirm_request management event so user space can know when to show a numeric comparison dialog and when to show a simple yes/no confirmation dialog. Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Diffstat (limited to 'net/bluetooth/hci_event.c')
-rw-r--r--net/bluetooth/hci_event.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index ce8e09955834..29310c78ebb3 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -2497,7 +2497,7 @@ static inline void hci_user_confirm_request_evt(struct hci_dev *hdev,
2497 struct sk_buff *skb) 2497 struct sk_buff *skb)
2498{ 2498{
2499 struct hci_ev_user_confirm_req *ev = (void *) skb->data; 2499 struct hci_ev_user_confirm_req *ev = (void *) skb->data;
2500 int loc_mitm, rem_mitm; 2500 int loc_mitm, rem_mitm, confirm_hint = 0;
2501 struct hci_conn *conn; 2501 struct hci_conn *conn;
2502 2502
2503 BT_DBG("%s", hdev->name); 2503 BT_DBG("%s", hdev->name);
@@ -2529,6 +2529,16 @@ static inline void hci_user_confirm_request_evt(struct hci_dev *hdev,
2529 /* If no side requires MITM protection; auto-accept */ 2529 /* If no side requires MITM protection; auto-accept */
2530 if ((!loc_mitm || conn->remote_cap == 0x03) && 2530 if ((!loc_mitm || conn->remote_cap == 0x03) &&
2531 (!rem_mitm || conn->io_capability == 0x03)) { 2531 (!rem_mitm || conn->io_capability == 0x03)) {
2532
2533 /* If we're not the initiators request authorization to
2534 * proceed from user space (mgmt_user_confirm with
2535 * confirm_hint set to 1). */
2536 if (!test_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
2537 BT_DBG("Confirming auto-accept as acceptor");
2538 confirm_hint = 1;
2539 goto confirm;
2540 }
2541
2532 BT_DBG("Auto-accept of user confirmation with %ums delay", 2542 BT_DBG("Auto-accept of user confirmation with %ums delay",
2533 hdev->auto_accept_delay); 2543 hdev->auto_accept_delay);
2534 2544
@@ -2543,7 +2553,9 @@ static inline void hci_user_confirm_request_evt(struct hci_dev *hdev,
2543 goto unlock; 2553 goto unlock;
2544 } 2554 }
2545 2555
2546 mgmt_user_confirm_request(hdev->id, &ev->bdaddr, ev->passkey); 2556confirm:
2557 mgmt_user_confirm_request(hdev->id, &ev->bdaddr, ev->passkey,
2558 confirm_hint);
2547 2559
2548unlock: 2560unlock:
2549 hci_dev_unlock(hdev); 2561 hci_dev_unlock(hdev);