summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/hci.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/hci.c b/src/hci.c
index 9a5c7dfe..e6cf48c4 100644
--- a/src/hci.c
+++ b/src/hci.c
@@ -1082,6 +1082,7 @@ int hci_write_current_iac_lap(int dd, uint8_t num_iac, uint8_t *lap, int to)
int hci_authenticate_link(int dd, uint16_t handle, int to)
{
auth_requested_cp cp;
+ evt_auth_complete rp;
struct hci_request rq;
cp.handle = handle;
@@ -1089,12 +1090,22 @@ int hci_authenticate_link(int dd, uint16_t handle, int to)
rq.ocf = OCF_AUTH_REQUESTED;
rq.cparam = &cp;
rq.clen = AUTH_REQUESTED_CP_SIZE;
- return hci_send_req(dd, &rq, to);
+ rq.rparam = &rp;
+ rq.event = EVT_AUTH_COMPLETE;
+ rq.rlen = EVT_AUTH_COMPLETE_SIZE;
+ if (hci_send_req(dd, &rq, to) < 0)
+ return -1;
+ if (rp.status) {
+ errno = EIO;
+ return -1;
+ }
+ return 0;
}
int hci_encrypt_link(int dd, uint16_t handle, int on, int to)
{
set_conn_encrypt_cp cp;
+ evt_encrypt_change rp;
struct hci_request rq;
cp.handle = handle;
@@ -1103,5 +1114,14 @@ int hci_encrypt_link(int dd, uint16_t handle, int on, int to)
rq.ocf = OCF_SET_CONN_ENCRYPT;
rq.cparam = &cp;
rq.clen = SET_CONN_ENCRYPT_CP_SIZE;
- return hci_send_req(dd, &rq, to);
+ rq.event = EVT_ENCRYPT_CHANGE;
+ rq.rlen = EVT_ENCRYPT_CHANGE_SIZE;
+ rq.rparam = &rp;
+ if (hci_send_req(dd, &rq, to) < 0)
+ return -1;
+ if (rp.status) {
+ errno = EIO;
+ return -1;
+ }
+ return 0;
}