From 94f7643c52193c905edaff767c2e9a31b9102a73 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Thu, 5 Jun 2008 11:50:35 +0000 Subject: Add support for fetching IO capability from an agent --- hcid/security.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'hcid/security.c') diff --git a/hcid/security.c b/hcid/security.c index c9e7dda7..6f8151f8 100644 --- a/hcid/security.c +++ b/hcid/security.c @@ -375,18 +375,29 @@ static void remote_oob_data_request(int dev, bdaddr_t *sba, void *ptr) static void io_capa_request(int dev, bdaddr_t *sba, bdaddr_t *dba) { - io_capability_neg_reply_cp cp; char sa[18], da[18]; + uint8_t cap, auth; ba2str(sba, sa); ba2str(dba, da); info("io_capa_request (sba=%s, dba=%s)", sa, da); - memset(&cp, 0, sizeof(cp)); - bacpy(&cp.bdaddr, dba); - cp.reason = HCI_PAIRING_NOT_ALLOWED; - - hci_send_cmd(dev, OGF_LINK_CTL, OCF_IO_CAPABILITY_NEG_REPLY, - IO_CAPABILITY_NEG_REPLY_CP_SIZE, &cp); + if (hcid_dbus_get_io_cap(sba, dba, &cap, &auth) < 0) { + io_capability_neg_reply_cp cp; + memset(&cp, 0, sizeof(cp)); + bacpy(&cp.bdaddr, dba); + cp.reason = HCI_PAIRING_NOT_ALLOWED; + hci_send_cmd(dev, OGF_LINK_CTL, OCF_IO_CAPABILITY_NEG_REPLY, + IO_CAPABILITY_NEG_REPLY_CP_SIZE, &cp); + } else { + io_capability_reply_cp cp; + memset(&cp, 0, sizeof(cp)); + bacpy(&cp.bdaddr, dba); + cp.capability = cap; + cp.oob_data = 0x00; + cp.authentication = auth; + hci_send_cmd(dev, OGF_LINK_CTL, OCF_IO_CAPABILITY_REPLY, + IO_CAPABILITY_REPLY_CP_SIZE, &cp); + } } /* PIN code handling */ -- cgit