Diff between 2d536dded7a8a68419fc84aa8050d984a6ae3dfe and 262e9eef41475b721bd71365b87d521924daeb5e

Changed Files

File Additions Deletions Status
src/adapter.c +34 -10 modified
src/mgmt.c +0 -58 modified
src/mgmt.h +0 -3 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index 73a503c..0231a08 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2027,24 +2027,48 @@ free:
 int btd_adapter_block_address(struct btd_adapter *adapter,
 				const bdaddr_t *bdaddr, uint8_t bdaddr_type)
 {
-	return mgmt_block_device(adapter->dev_id, bdaddr, bdaddr_type);
+	struct mgmt_cp_block_device cp;
+	char addr[18];
+
+	ba2str(bdaddr, addr);
+	DBG("hci%u %s", adapter->dev_id, addr);
+
+	memset(&cp, 0, sizeof(cp));
+	bacpy(&cp.addr.bdaddr, bdaddr);
+	cp.addr.type = bdaddr_type;
+
+	if (mgmt_send(adapter->mgmt, MGMT_OP_BLOCK_DEVICE,
+				adapter->dev_id, sizeof(cp), &cp,
+				NULL, NULL, NULL) > 0)
+		return 0;
+
+	return -EIO;
 }
 
 int btd_adapter_unblock_address(struct btd_adapter *adapter,
 				const bdaddr_t *bdaddr, uint8_t bdaddr_type)
 {
-	return mgmt_unblock_device(adapter->dev_id, bdaddr,
-								bdaddr_type);
+	struct mgmt_cp_unblock_device cp;
+	char addr[18];
+
+	ba2str(bdaddr, addr);
+	DBG("hci%u %s", adapter->dev_id, addr);
+
+	memset(&cp, 0, sizeof(cp));
+	bacpy(&cp.addr.bdaddr, bdaddr);
+	cp.addr.type = bdaddr_type;
+
+	if (mgmt_send(adapter->mgmt, MGMT_OP_UNBLOCK_DEVICE,
+				adapter->dev_id, sizeof(cp), &cp,
+				NULL, NULL, NULL) > 0)
+		return 0;
+
+	return -EIO;
 }
 
-static void clear_blocked(struct btd_adapter *adapter)
+static int clear_blocked(struct btd_adapter *adapter)
 {
-	int err;
-
-	err = mgmt_unblock_device(adapter->dev_id, BDADDR_ANY, 0);
-	if (err < 0)
-		error("Clearing blocked list failed: %s (%d)",
-						strerror(-err), -err);
+	return btd_adapter_unblock_address(adapter, BDADDR_ANY, 0);
 }
 
 static void probe_driver(struct btd_adapter *adapter, gpointer user_data)
diff --git a/src/mgmt.c b/src/mgmt.c
index d330848..685d376 100644
--- a/src/mgmt.c
+++ b/src/mgmt.c
@@ -1006,64 +1006,6 @@ void mgmt_cleanup(void)
 	}
 }
 
-int mgmt_block_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type)
-{
-	char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_block_device)];
-	struct mgmt_hdr *hdr = (void *) buf;
-	struct mgmt_cp_block_device *cp;
-	size_t buf_len;
-	char addr[18];
-
-	ba2str(bdaddr, addr);
-	DBG("index %d addr %s", index, addr);
-
-	memset(buf, 0, sizeof(buf));
-
-	hdr->opcode = htobs(MGMT_OP_BLOCK_DEVICE);
-	hdr->len = htobs(sizeof(*cp));
-	hdr->index = htobs(index);
-
-	cp = (void *) &buf[sizeof(*hdr)];
-	bacpy(&cp->addr.bdaddr, bdaddr);
-	cp->addr.type = bdaddr_type;
-
-	buf_len = sizeof(*hdr) + sizeof(*cp);
-
-	if (write(mgmt_sock, buf, buf_len) < 0)
-		return -errno;
-
-	return 0;
-}
-
-int mgmt_unblock_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type)
-{
-	char buf[MGMT_HDR_SIZE + sizeof(struct mgmt_cp_unblock_device)];
-	struct mgmt_hdr *hdr = (void *) buf;
-	struct mgmt_cp_unblock_device *cp;
-	size_t buf_len;
-	char addr[18];
-
-	ba2str(bdaddr, addr);
-	DBG("index %d addr %s", index, addr);
-
-	memset(buf, 0, sizeof(buf));
-
-	hdr->opcode = htobs(MGMT_OP_UNBLOCK_DEVICE);
-	hdr->len = htobs(sizeof(*cp));
-	hdr->index = htobs(index);
-
-	cp = (void *) &buf[sizeof(*hdr)];
-	bacpy(&cp->addr.bdaddr, bdaddr);
-	cp->addr.type = bdaddr_type;
-
-	buf_len = sizeof(*hdr) + sizeof(*cp);
-
-	if (write(mgmt_sock, buf, buf_len) < 0)
-		return -errno;
-
-	return 0;
-}
-
 int mgmt_set_did(int index, uint16_t vendor, uint16_t product,
 					uint16_t version, uint16_t source)
 {
diff --git a/src/mgmt.h b/src/mgmt.h
index 1e6f980..24f7e1d 100644
--- a/src/mgmt.h
+++ b/src/mgmt.h
@@ -25,9 +25,6 @@
 int mgmt_setup(void);
 void mgmt_cleanup(void);
 
-int mgmt_block_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type);
-int mgmt_unblock_device(int index, const bdaddr_t *bdaddr, uint8_t bdaddr_type);
-
 int mgmt_set_did(int index, uint16_t vendor, uint16_t product,
 					uint16_t version, uint16_t source);