From d16dbe8800d62b7991713c12b9786895562d5c5d Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Sun, 6 Jan 2013 19:23:37 +0200 Subject: [PATCH] core: Move mgmt remote OOB data handling to adapter code --- src/adapter.c | 37 ++++++++++++++++++++++++++++++++--- src/mgmt.c | 53 --------------------------------------------------- src/mgmt.h | 4 ---- 3 files changed, 34 insertions(+), 60 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 11ee19af5..55ccabc51 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -4139,14 +4139,45 @@ int btd_adapter_add_remote_oob_data(struct btd_adapter *adapter, const bdaddr_t *bdaddr, uint8_t *hash, uint8_t *randomizer) { - return mgmt_add_remote_oob_data(adapter->dev_id, bdaddr, hash, - randomizer); + struct mgmt_cp_add_remote_oob_data cp; + char addr[18]; + + ba2str(bdaddr, addr); + DBG("hci%d bdaddr %s", adapter->dev_id, addr); + + memset(&cp, 0, sizeof(cp)); + bacpy(&cp.addr.bdaddr, bdaddr); + memcpy(cp.hash, hash, 16); + + if (randomizer) + memcpy(cp.randomizer, randomizer, 16); + + if (mgmt_send(adapter->mgmt, MGMT_OP_ADD_REMOTE_OOB_DATA, + adapter->dev_id, sizeof(cp), &cp, + NULL, NULL, NULL) > 0) + return 0; + + return -EIO; } int btd_adapter_remove_remote_oob_data(struct btd_adapter *adapter, const bdaddr_t *bdaddr) { - return mgmt_remove_remote_oob_data(adapter->dev_id, bdaddr); + struct mgmt_cp_remove_remote_oob_data cp; + char addr[18]; + + ba2str(bdaddr, addr); + DBG("hci%d bdaddr %s", adapter->dev_id, addr); + + memset(&cp, 0, sizeof(cp)); + bacpy(&cp.addr.bdaddr, bdaddr); + + if (mgmt_send(adapter->mgmt, MGMT_OP_REMOVE_REMOTE_OOB_DATA, + adapter->dev_id, sizeof(cp), &cp, + NULL, NULL, NULL) > 0) + return 0; + + return -EIO; } bool btd_adapter_ssp_enabled(struct btd_adapter *adapter) diff --git a/src/mgmt.c b/src/mgmt.c index a0919f388..7523cc740 100644 --- a/src/mgmt.c +++ b/src/mgmt.c @@ -1076,59 +1076,6 @@ int mgmt_cancel_bonding(int index, const bdaddr_t *bdaddr, uint8_t addr_type) return 0; } -int mgmt_add_remote_oob_data(int index, const bdaddr_t *bdaddr, - uint8_t *hash, uint8_t *randomizer) -{ - char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_add_remote_oob_data)]; - struct mgmt_hdr *hdr = (void *) buf; - struct mgmt_cp_add_remote_oob_data *cp = (void *) &buf[sizeof(*hdr)]; - char addr[18]; - - ba2str(bdaddr, addr); - DBG("hci%d bdaddr %s", index, addr); - - memset(buf, 0, sizeof(buf)); - - hdr->opcode = htobs(MGMT_OP_ADD_REMOTE_OOB_DATA); - hdr->index = htobs(index); - hdr->len = htobs(sizeof(*cp)); - - bacpy(&cp->addr.bdaddr, bdaddr); - memcpy(cp->hash, hash, 16); - - if (randomizer) - memcpy(cp->randomizer, randomizer, 16); - - if (write(mgmt_sock, &buf, sizeof(buf)) < 0) - return -errno; - - return 0; -} - -int mgmt_remove_remote_oob_data(int index, const bdaddr_t *bdaddr) -{ - char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_remove_remote_oob_data)]; - struct mgmt_hdr *hdr = (void *) buf; - struct mgmt_cp_remove_remote_oob_data *cp = (void *) &buf[sizeof(*hdr)]; - char addr[18]; - - ba2str(bdaddr, addr); - DBG("hci%d bdaddr %s", index, addr); - - memset(buf, 0, sizeof(buf)); - - hdr->opcode = htobs(MGMT_OP_REMOVE_REMOTE_OOB_DATA); - hdr->index = htobs(index); - hdr->len = htobs(sizeof(*cp)); - - bacpy(&cp->addr.bdaddr, bdaddr); - - if (write(mgmt_sock, &buf, sizeof(buf)) < 0) - return -errno; - - return 0; -} - int mgmt_load_ltks(int index, GSList *keys) { char *buf; diff --git a/src/mgmt.h b/src/mgmt.h index d63bc100a..174c6a7cf 100644 --- a/src/mgmt.h +++ b/src/mgmt.h @@ -38,7 +38,3 @@ int mgmt_confirm_reply(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type, gboolean success); int mgmt_passkey_reply(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type, uint32_t passkey); - -int mgmt_add_remote_oob_data(int index, const bdaddr_t *bdaddr, - uint8_t *hash, uint8_t *randomizer); -int mgmt_remove_remote_oob_data(int index, const bdaddr_t *bdaddr); -- 2.47.3