* [PATCH BlueZ 1/2] btdev: Check advertising/scanning states when changing White List
@ 2021-06-07 18:41 Luiz Augusto von Dentz
2021-06-07 18:41 ` [PATCH BlueZ 2/2] btdev: Check advertising/scanning states when changing Resolving List Luiz Augusto von Dentz
2021-06-09 4:05 ` [BlueZ,1/2] btdev: Check advertising/scanning states when changing White List bluez.test.bot
0 siblings, 2 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2021-06-07 18:41 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
White List cannot be changed when advertising/scanning:
• any advertising filter policy uses the White List and advertising is
enabled,
• the scanning filter policy uses the White List and scanning is
enabled, or
• the initiator filter policy uses the White List and an
HCI_LE_Create_Connection or HCI_LE_Extended_Create_Connection
command is outstanding.
---
emulator/btdev.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index ad5bb8d92..bfee0ed7b 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -150,11 +150,13 @@ struct btdev {
uint8_t le_adv_own_addr;
uint8_t le_adv_direct_addr_type;
uint8_t le_adv_direct_addr[6];
+ uint8_t le_adv_filter_policy;
uint8_t le_scan_data[31];
uint8_t le_scan_data_len;
uint8_t le_scan_enable;
uint8_t le_scan_type;
uint8_t le_scan_own_addr_type;
+ uint8_t le_scan_filter_policy;
uint8_t le_filter_dup;
uint8_t le_adv_enable;
uint8_t le_periodic_adv_enable;
@@ -3002,6 +3004,7 @@ static int cmd_set_adv_params(struct btdev *dev, const void *data, uint8_t len)
dev->le_adv_own_addr = cmd->own_addr_type;
dev->le_adv_direct_addr_type = cmd->direct_addr_type;
memcpy(dev->le_adv_direct_addr, cmd->direct_addr, 6);
+ dev->le_adv_filter_policy = cmd->filter_policy;
status = BT_HCI_ERR_SUCCESS;
@@ -3223,6 +3226,7 @@ static int cmd_set_scan_params(struct btdev *dev, const void *data, uint8_t len)
status = BT_HCI_ERR_SUCCESS;
dev->le_scan_type = cmd->type;
dev->le_scan_own_addr_type = cmd->own_addr_type;
+ dev->le_scan_filter_policy = cmd->filter_policy;
done:
cmd_complete(dev, BT_HCI_CMD_LE_SET_SCAN_PARAMETERS, &status,
@@ -3396,10 +3400,45 @@ static int cmd_read_wl_size(struct btdev *dev, const void *data, uint8_t len)
return 0;
}
+static bool wl_can_change(struct btdev *dev)
+{
+ /* filter policy uses the White List and advertising is enable. */
+ if (dev->le_adv_enable && dev->le_adv_filter_policy)
+ return false;
+
+ /* scanning filter policy uses the White List and scanning is enabled */
+ if (dev->le_scan_enable) {
+ switch (dev->le_scan_filter_policy) {
+ case 0x00:
+ return true;
+ case 0x01:
+ return false;
+ case 0x02:
+ return true;
+ case 0x03:
+ return false;
+ }
+ }
+
+ return true;
+}
+
static int cmd_wl_clear(struct btdev *dev, const void *data, uint8_t len)
{
uint8_t status;
+ /* This command shall not be used when:
+ * • any advertising filter policy uses the White List and advertising
+ * is enabled,
+ * • the scanning filter policy uses the White List and scanning is
+ * enabled, or
+ * • the initiator filter policy uses the White List and an
+ * HCI_LE_Create_Connection or HCI_LE_Extended_Create_Connection
+ * command is outstanding.
+ */
+ if (!wl_can_change(dev))
+ return -EPERM;
+
wl_clear(dev);
status = BT_HCI_ERR_SUCCESS;
@@ -3425,6 +3464,18 @@ static int cmd_add_wl(struct btdev *dev, const void *data, uint8_t len)
bool exists = false;
int i, pos = -1;
+ /* This command shall not be used when:
+ * • any advertising filter policy uses the White List and advertising
+ * is enabled,
+ * • the scanning filter policy uses the White List and scanning is
+ * enabled, or
+ * • the initiator filter policy uses the White List and an
+ * HCI_LE_Create_Connection or HCI_LE_Extended_Create_Connection
+ * command is outstanding.
+ */
+ if (!wl_can_change(dev))
+ return -EPERM;
+
/* Valid range for address type is 0x00 to 0x01 */
if (cmd->addr_type > 0x01)
return -EINVAL;
@@ -3464,6 +3515,18 @@ static int cmd_remove_wl(struct btdev *dev, const void *data, uint8_t len)
int i;
char addr[18];
+ /* This command shall not be used when:
+ * • any advertising filter policy uses the White List and advertising
+ * is enabled,
+ * • the scanning filter policy uses the White List and scanning is
+ * enabled, or
+ * • the initiator filter policy uses the White List and an
+ * HCI_LE_Create_Connection or HCI_LE_Extended_Create_Connection
+ * command is outstanding.
+ */
+ if (!wl_can_change(dev))
+ return -EPERM;
+
/* Valid range for address type is 0x00 to 0x01 */
if (cmd->addr_type > 0x01)
return -EINVAL;
@@ -4120,6 +4183,7 @@ static int cmd_set_ext_adv_params(struct btdev *dev, const void *data,
dev->le_adv_own_addr = cmd->own_addr_type;
dev->le_adv_direct_addr_type = cmd->peer_addr_type;
memcpy(dev->le_adv_direct_addr, cmd->peer_addr, 6);
+ dev->le_adv_filter_policy = cmd->filter_policy;
rsp.status = BT_HCI_ERR_SUCCESS;
rsp.tx_power = 0;
@@ -4380,6 +4444,7 @@ static int cmd_set_ext_scan_params(struct btdev *dev, const void *data,
*/
dev->le_scan_type = scan->type;
dev->le_scan_own_addr_type = cmd->own_addr_type;
+ dev->le_scan_filter_policy = cmd->filter_policy;
}
cmd_complete(dev, BT_HCI_CMD_LE_SET_EXT_SCAN_PARAMS, &status,
@@ -5761,6 +5826,9 @@ static const struct btdev_cmd *default_cmd(struct btdev *btdev, uint16_t opcode,
case -EINVAL:
status = BT_HCI_ERR_INVALID_PARAMETERS;
goto failed;
+ case -EPERM:
+ status = BT_HCI_ERR_COMMAND_DISALLOWED;
+ goto failed;
default:
status = BT_HCI_ERR_UNSPECIFIED_ERROR;
goto failed;
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH BlueZ 2/2] btdev: Check advertising/scanning states when changing Resolving List
2021-06-07 18:41 [PATCH BlueZ 1/2] btdev: Check advertising/scanning states when changing White List Luiz Augusto von Dentz
@ 2021-06-07 18:41 ` Luiz Augusto von Dentz
2021-06-09 4:05 ` [BlueZ,1/2] btdev: Check advertising/scanning states when changing White List bluez.test.bot
1 sibling, 0 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2021-06-07 18:41 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Resolving List cannot be changed when advertising/scanning:
• Advertising (other than periodic advertising) is enabled,
• Scanning is enabled, or
• an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection, or
HCI_LE_Periodic_Advertising_Create_Sync command is outstanding.
---
emulator/btdev.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/emulator/btdev.c b/emulator/btdev.c
index bfee0ed7b..eba9f57f9 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -3566,6 +3566,16 @@ static int cmd_add_rl(struct btdev *dev, const void *data, uint8_t len)
bool exists = false;
int i, pos = -1;
+ /* This command shall not be used when address resolution is enabled in
+ * the Controller and:
+ * • Advertising (other than periodic advertising) is enabled,
+ * • Scanning is enabled, or
+ * • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection,
+ * or HCI_LE_Periodic_Advertising_Create_Sync command is outstanding.
+ */
+ if (dev->le_adv_enable || dev->le_scan_enable)
+ return -EPERM;
+
/* Valid range for address type is 0x00 to 0x01 */
if (cmd->addr_type > 0x01)
return -EINVAL;
@@ -3607,6 +3617,16 @@ static int cmd_remove_rl(struct btdev *dev, const void *data, uint8_t len)
uint8_t status;
int i;
+ /* This command shall not be used when address resolution is enabled in
+ * the Controller and:
+ * • Advertising (other than periodic advertising) is enabled,
+ * • Scanning is enabled, or
+ * • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection,
+ * or HCI_LE_Periodic_Advertising_Create_Sync command is outstanding.
+ */
+ if (dev->le_adv_enable || dev->le_scan_enable)
+ return -EPERM;
+
/* Valid range for address type is 0x00 to 0x01 */
if (cmd->addr_type > 0x01)
return -EINVAL;
@@ -3634,6 +3654,16 @@ static int cmd_clear_rl(struct btdev *dev, const void *data, uint8_t len)
{
uint8_t status;
+ /* This command shall not be used when address resolution is enabled in
+ * the Controller and:
+ * • Advertising (other than periodic advertising) is enabled,
+ * • Scanning is enabled, or
+ * • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection,
+ * or HCI_LE_Periodic_Advertising_Create_Sync command is outstanding.
+ */
+ if (dev->le_adv_enable || dev->le_scan_enable)
+ return -EPERM;
+
rl_clear(dev);
status = BT_HCI_ERR_SUCCESS;
@@ -3699,6 +3729,16 @@ static int cmd_set_rl_enable(struct btdev *dev, const void *data, uint8_t len)
const struct bt_hci_cmd_le_set_resolv_enable *cmd = data;
uint8_t status;
+ /* This command shall not be used when address resolution is enabled in
+ * the Controller and:
+ * • Advertising (other than periodic advertising) is enabled,
+ * • Scanning is enabled, or
+ * • an HCI_LE_Create_Connection, HCI_LE_Extended_Create_Connection,
+ * or HCI_LE_Periodic_Advertising_Create_Sync command is outstanding.
+ */
+ if (dev->le_adv_enable || dev->le_scan_enable)
+ return -EPERM;
+
/* Valid range for address resolution enable is 0x00 to 0x01 */
if (cmd->enable > 0x01)
return -EINVAL;
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [BlueZ,1/2] btdev: Check advertising/scanning states when changing White List
2021-06-07 18:41 [PATCH BlueZ 1/2] btdev: Check advertising/scanning states when changing White List Luiz Augusto von Dentz
2021-06-07 18:41 ` [PATCH BlueZ 2/2] btdev: Check advertising/scanning states when changing Resolving List Luiz Augusto von Dentz
@ 2021-06-09 4:05 ` bluez.test.bot
2021-06-09 20:21 ` Luiz Augusto von Dentz
1 sibling, 1 reply; 4+ messages in thread
From: bluez.test.bot @ 2021-06-09 4:05 UTC (permalink / raw)
To: linux-bluetooth, luiz.dentz
[-- Attachment #1: Type: text/plain, Size: 1953 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=495601
---Test result---
Test Summary:
CheckPatch PASS 0.53 seconds
GitLint PASS 0.20 seconds
Prep - Setup ELL PASS 40.30 seconds
Build - Prep PASS 0.10 seconds
Build - Configure PASS 7.00 seconds
Build - Make PASS 173.43 seconds
Make Check PASS 8.70 seconds
Make Distcheck PASS 204.32 seconds
Build w/ext ELL - Configure PASS 7.18 seconds
Build w/ext ELL - Make PASS 163.31 seconds
Details
##############################
Test: CheckPatch - PASS
Desc: Run checkpatch.pl script with rule in .checkpatch.conf
##############################
Test: GitLint - PASS
Desc: Run gitlint with rule in .gitlint
##############################
Test: Prep - Setup ELL - PASS
Desc: Clone, build, and install ELL
##############################
Test: Build - Prep - PASS
Desc: Prepare environment for build
##############################
Test: Build - Configure - PASS
Desc: Configure the BlueZ source tree
##############################
Test: Build - Make - PASS
Desc: Build the BlueZ source tree
##############################
Test: Make Check - PASS
Desc: Run 'make check'
##############################
Test: Make Distcheck - PASS
Desc: Run distcheck to check the distribution
##############################
Test: Build w/ext ELL - Configure - PASS
Desc: Configure BlueZ source with '--enable-external-ell' configuration
##############################
Test: Build w/ext ELL - Make - PASS
Desc: Build BlueZ source with '--enable-external-ell' configuration
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [BlueZ,1/2] btdev: Check advertising/scanning states when changing White List
2021-06-09 4:05 ` [BlueZ,1/2] btdev: Check advertising/scanning states when changing White List bluez.test.bot
@ 2021-06-09 20:21 ` Luiz Augusto von Dentz
0 siblings, 0 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2021-06-09 20:21 UTC (permalink / raw)
To: linux-bluetooth
Hi,
On Tue, Jun 8, 2021 at 9:05 PM <bluez.test.bot@gmail.com> wrote:
>
> This is automated email and please do not reply to this email!
>
> Dear submitter,
>
> Thank you for submitting the patches to the linux bluetooth mailing list.
> This is a CI test results with your patch series:
> PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=495601
>
> ---Test result---
>
> Test Summary:
> CheckPatch PASS 0.53 seconds
> GitLint PASS 0.20 seconds
> Prep - Setup ELL PASS 40.30 seconds
> Build - Prep PASS 0.10 seconds
> Build - Configure PASS 7.00 seconds
> Build - Make PASS 173.43 seconds
> Make Check PASS 8.70 seconds
> Make Distcheck PASS 204.32 seconds
> Build w/ext ELL - Configure PASS 7.18 seconds
> Build w/ext ELL - Make PASS 163.31 seconds
>
> Details
> ##############################
> Test: CheckPatch - PASS
> Desc: Run checkpatch.pl script with rule in .checkpatch.conf
>
> ##############################
> Test: GitLint - PASS
> Desc: Run gitlint with rule in .gitlint
>
> ##############################
> Test: Prep - Setup ELL - PASS
> Desc: Clone, build, and install ELL
>
> ##############################
> Test: Build - Prep - PASS
> Desc: Prepare environment for build
>
> ##############################
> Test: Build - Configure - PASS
> Desc: Configure the BlueZ source tree
>
> ##############################
> Test: Build - Make - PASS
> Desc: Build the BlueZ source tree
>
> ##############################
> Test: Make Check - PASS
> Desc: Run 'make check'
>
> ##############################
> Test: Make Distcheck - PASS
> Desc: Run distcheck to check the distribution
>
> ##############################
> Test: Build w/ext ELL - Configure - PASS
> Desc: Configure BlueZ source with '--enable-external-ell' configuration
>
> ##############################
> Test: Build w/ext ELL - Make - PASS
> Desc: Build BlueZ source with '--enable-external-ell' configuration
>
>
>
> ---
> Regards,
> Linux Bluetooth
Pushed.
--
Luiz Augusto von Dentz
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-06-09 20:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-07 18:41 [PATCH BlueZ 1/2] btdev: Check advertising/scanning states when changing White List Luiz Augusto von Dentz
2021-06-07 18:41 ` [PATCH BlueZ 2/2] btdev: Check advertising/scanning states when changing Resolving List Luiz Augusto von Dentz
2021-06-09 4:05 ` [BlueZ,1/2] btdev: Check advertising/scanning states when changing White List bluez.test.bot
2021-06-09 20:21 ` Luiz Augusto von Dentz
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.