diff --git a/src/mgmt.c b/src/mgmt.c
index d44d45b..a787605 100644
--- a/src/mgmt.c
+++ b/src/mgmt.c
static uint8_t mgmt_version = 0;
static uint16_t mgmt_revision = 0;
-static bool get_adapter_and_device(const bdaddr_t *src,
+static bool get_adapter_and_device(uint16_t index,
struct mgmt_addr_info *addr,
struct btd_adapter **adapter,
struct btd_device **device,
{
char peer_addr[18];
- *adapter = adapter_find(src);
+ *adapter = adapter_find_by_id(index);
if (!*adapter) {
error("Unable to find matching adapter");
return false;
static void mgmt_new_link_key(uint16_t index, void *buf, size_t len)
{
struct mgmt_ev_new_link_key *ev = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->key.addr,
+ if (!get_adapter_and_device(index, &ev->key.addr,
&adapter, &device, true))
return;
{
struct mgmt_ev_device_connected *ev = buf;
struct eir_data eir_data;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
uint16_t eir_len;
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr, &adapter,
- &device, true))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, true))
return;
memset(&eir_data, 0, sizeof(eir_data));
adapter_add_connection(adapter, device);
if (eir_data.name != NULL) {
- adapter_store_cached_name(&info->bdaddr, &ev->addr.bdaddr,
+ const bdaddr_t *bdaddr = adapter_get_address(adapter);
+ adapter_store_cached_name(bdaddr, &ev->addr.bdaddr,
eir_data.name);
device_set_name(device, eir_data.name);
}
static void mgmt_device_disconnected(uint16_t index, void *buf, size_t len)
{
struct mgmt_ev_device_disconnected *ev = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
char addr[18];
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, false))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, false))
return;
if (device)
static void mgmt_connect_failed(uint16_t index, void *buf, size_t len)
{
struct mgmt_ev_connect_failed *ev = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
char addr[18];
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, false))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, false))
return;
if (device) {
static void mgmt_pin_code_request(uint16_t index, void *buf, size_t len)
{
struct mgmt_ev_pin_code_request *ev = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
gboolean display = FALSE;
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, true))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, true))
return;
memset(pin, 0, sizeof(pin));
static void mgmt_passkey_request(uint16_t index, void *buf, size_t len)
{
struct mgmt_ev_user_passkey_request *ev = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
char addr[18];
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, true))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, true))
return;
err = device_request_passkey(device);
static void mgmt_passkey_notify(uint16_t index, void *buf, size_t len)
{
struct mgmt_ev_passkey_notify *ev = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
uint32_t passkey;
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, true))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, true))
return;
passkey = bt_get_le32(&ev->passkey);
size_t len)
{
struct mgmt_ev_user_confirm_request *ev = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
char addr[18];
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, true))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, true))
return;
err = device_confirm_passkey(device, btohl(ev->value),
void *buf, size_t len)
{
struct mgmt_rp_disconnect *rp = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
char addr[18];
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &rp->addr,
- &adapter, &device, false))
+ if (!get_adapter_and_device(index, &rp->addr, &adapter, &device, false))
return;
if (device)
static void mgmt_device_blocked(uint16_t index, void *buf, size_t len)
{
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
struct mgmt_ev_device_blocked *ev = buf;
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, false))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, false))
return;
if (device)
static void mgmt_device_unblocked(uint16_t index, void *buf, size_t len)
{
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
struct mgmt_ev_device_unblocked *ev = buf;
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, false))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, false))
return;
if (device)
static void mgmt_device_unpaired(uint16_t index, void *buf, size_t len)
{
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
struct mgmt_ev_device_unpaired *ev = buf;
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->addr,
- &adapter, &device, false))
+ if (!get_adapter_and_device(index, &ev->addr, &adapter, &device, false))
return;
if (!device)
adapter_remove_device(adapter, device, TRUE);
}
-static void store_longtermkey(bdaddr_t *local, bdaddr_t *peer,
+static void store_longtermkey(const bdaddr_t *local, bdaddr_t *peer,
uint8_t bdaddr_type, unsigned char *key,
uint8_t master, uint8_t authenticated,
uint8_t enc_size, uint16_t ediv,
static void mgmt_new_ltk(uint16_t index, void *buf, size_t len)
{
struct mgmt_ev_new_long_term_key *ev = buf;
- struct controller_info *info;
struct btd_adapter *adapter;
struct btd_device *device;
return;
}
- info = &controllers[index];
-
- if (!get_adapter_and_device(&info->bdaddr, &ev->key.addr,
+ if (!get_adapter_and_device(index, &ev->key.addr,
&adapter, &device, true))
return;
if (ev->store_hint) {
struct mgmt_ltk_info *key = &ev->key;
+ const bdaddr_t *bdaddr = adapter_get_address(adapter);
- store_longtermkey(&info->bdaddr, &key->addr.bdaddr,
+ store_longtermkey(bdaddr, &key->addr.bdaddr,
key->addr.type, key->val, key->master,
key->authenticated, key->enc_size,
key->ediv, key->rand);