diff --git a/plugins/hciops.c b/plugins/hciops.c
index f583e8c..ee73c45 100644
--- a/plugins/hciops.c
+++ b/plugins/hciops.c
return 0;
}
-static int hciops_block_device(int index, bdaddr_t *bdaddr)
+static int hciops_block_device(int index, bdaddr_t *bdaddr, addr_type_t type)
{
struct dev_info *dev = &devs[index];
char addr[18];
return 0;
}
-static int hciops_unblock_device(int index, bdaddr_t *bdaddr)
+static int hciops_unblock_device(int index, bdaddr_t *bdaddr, addr_type_t type)
{
struct dev_info *dev = &devs[index];
char addr[18];
diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index bcb23d5..6b99e08 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
return 0;
}
-static int mgmt_block_device(int index, bdaddr_t *bdaddr)
+static int mgmt_block_device(int index, bdaddr_t *bdaddr, addr_type_t type)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_block_device)];
struct mgmt_hdr *hdr = (void *) buf;
cp = (void *) &buf[sizeof(*hdr)];
bacpy(&cp->addr.bdaddr, bdaddr);
+ cp->addr.type = mgmt_addr_type(type);
buf_len = sizeof(*hdr) + sizeof(*cp);
return 0;
}
-static int mgmt_unblock_device(int index, bdaddr_t *bdaddr)
+static int mgmt_unblock_device(int index, bdaddr_t *bdaddr, addr_type_t type)
{
char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_unblock_device)];
struct mgmt_hdr *hdr = (void *) buf;
cp = (void *) &buf[sizeof(*hdr)];
bacpy(&cp->addr.bdaddr, bdaddr);
+ cp->addr.type = mgmt_addr_type(type);
buf_len = sizeof(*hdr) + sizeof(*cp);
diff --git a/src/adapter.c b/src/adapter.c
index eb16c58..60477bb 100644
--- a/src/adapter.c
+++ b/src/adapter.c
textfile_foreach(filename, create_stored_device_from_blocked, adapter);
}
-int btd_adapter_block_address(struct btd_adapter *adapter, bdaddr_t *bdaddr)
+int btd_adapter_block_address(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+ addr_type_t type)
{
- return adapter_ops->block_device(adapter->dev_id, bdaddr);
+ return adapter_ops->block_device(adapter->dev_id, bdaddr, type);
}
-int btd_adapter_unblock_address(struct btd_adapter *adapter, bdaddr_t *bdaddr)
+int btd_adapter_unblock_address(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+ addr_type_t type)
{
- return adapter_ops->unblock_device(adapter->dev_id, bdaddr);
+ return adapter_ops->unblock_device(adapter->dev_id, bdaddr, type);
}
static void clear_blocked(struct btd_adapter *adapter)
{
int err;
- err = adapter_ops->unblock_device(adapter->dev_id, BDADDR_ANY);
+ err = adapter_ops->unblock_device(adapter->dev_id, BDADDR_ANY, 0);
if (err < 0)
error("Clearing blocked list failed: %s (%d)",
strerror(-err), -err);
diff --git a/src/adapter.h b/src/adapter.h
index 946bac6..6c015ef 100644
--- a/src/adapter.h
+++ b/src/adapter.h
int (*read_clock) (int index, bdaddr_t *bdaddr, int which, int timeout,
uint32_t *clock, uint16_t *accuracy);
int (*read_bdaddr) (int index, bdaddr_t *bdaddr);
- int (*block_device) (int index, bdaddr_t *bdaddr);
- int (*unblock_device) (int index, bdaddr_t *bdaddr);
+ int (*block_device) (int index, bdaddr_t *bdaddr, addr_type_t type);
+ int (*unblock_device) (int index, bdaddr_t *bdaddr, addr_type_t type);
int (*get_conn_list) (int index, GSList **conns);
int (*disconnect) (int index, bdaddr_t *bdaddr, addr_type_t type);
int (*remove_bonding) (int index, bdaddr_t *bdaddr, addr_type_t type);
int which, int timeout, uint32_t *clock,
uint16_t *accuracy);
-int btd_adapter_block_address(struct btd_adapter *adapter, bdaddr_t *bdaddr);
-int btd_adapter_unblock_address(struct btd_adapter *adapter, bdaddr_t *bdaddr);
+int btd_adapter_block_address(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+ addr_type_t type);
+int btd_adapter_unblock_address(struct btd_adapter *adapter, bdaddr_t *bdaddr,
+ addr_type_t type);
int btd_adapter_disconnect_device(struct btd_adapter *adapter,
bdaddr_t *bdaddr, addr_type_t type);
diff --git a/src/device.c b/src/device.c
index 3803813..927c4dc 100644
--- a/src/device.c
+++ b/src/device.c
g_slist_foreach(device->drivers, (GFunc) driver_remove, device);
if (!update_only)
- err = btd_adapter_block_address(device->adapter, &device->bdaddr);
+ err = btd_adapter_block_address(device->adapter,
+ &device->bdaddr, device->type);
if (err < 0)
return err;
return 0;
if (!update_only)
- err = btd_adapter_unblock_address(device->adapter, &device->bdaddr);
+ err = btd_adapter_unblock_address(device->adapter,
+ &device->bdaddr, device->type);
if (err < 0)
return err;