From 3dd9487d77fd7756c4cf19986e1c62d4b0cf7ca1 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 3 Nov 2021 17:25:33 -0700 Subject: [PATCH] main.conf: Rework privacy options This reworks privacy options so the limited discoverable is only available when controller mode is set to dual. Signed-off-by: Anuj Jain Signed-off-by: Ayush Garg --- src/btd.h | 1 + src/main.c | 22 ++++++++++++++++++---- src/main.conf | 25 ++++++++++++++++++++----- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/btd.h b/src/btd.h index 781f705..cc827c1 100755 --- a/src/btd.h +++ b/src/btd.h @@ -103,6 +103,7 @@ struct btd_opts { uint32_t discovto; uint32_t tmpto; uint8_t privacy; + bool device_privacy; struct btd_defaults defaults; diff --git a/src/main.c b/src/main.c index d6bede6..27efb18 100755 --- a/src/main.c +++ b/src/main.c @@ -670,13 +670,27 @@ static void parse_config(GKeyFile *config) } else { DBG("privacy=%s", str); - if (!strcmp(str, "network") || !strcmp(str, "on")) + if (!strcmp(str, "network") || !strcmp(str, "on")) { btd_opts.privacy = 0x01; - if (!strcmp(str, "device") || !strcmp(str, "limited")) + } else if (!strcmp(str, "device")) { + btd_opts.privacy = 0x01; + btd_opts.device_privacy = true; + } else if (!strcmp(str, "limited-network")) { + if (btd_opts.mode != BT_MODE_DUAL) { + DBG("Invalid privacy option: %s", str); + btd_opts.privacy = 0x00; + } + btd_opts.privacy = 0x01; + } else if (!strcmp(str, "limited-device")) { + if (btd_opts.mode != BT_MODE_DUAL) { + DBG("Invalid privacy option: %s", str); + btd_opts.privacy = 0x00; + } btd_opts.privacy = 0x02; - else if (!strcmp(str, "off")) + btd_opts.device_privacy = true; + } else if (!strcmp(str, "off")) { btd_opts.privacy = 0x00; - else { + } else { DBG("Invalid privacy option: %s", str); btd_opts.privacy = 0x00; } diff --git a/src/main.conf b/src/main.conf index d28fa4b..d5c4f54 100755 --- a/src/main.conf +++ b/src/main.conf @@ -73,14 +73,29 @@ # Default privacy setting. # Enables use of private address. -# Possible values: "off", "network/on", "device/limited" -# "network/on": a device will only accept advertising packets from peer devices -# that contain private addresses. It may not be compatible with some legacy -# devices since it requires the use of RPA(s) all the time. -# "device/limited": A device in device privacy mode is only concerned about the +# Possible values for LE mode: "off", "network/on", "device" +# Possible values for Dual mode: "off", "network/on", "device", +# "limited-network", "limited-device" +# +# - off: Local privacy disabled. +# +# - network/on: A device will only accept advertising packets from peer +# devices that contain private addresses. It may not be compatible with some +# legacy devices since it requires the use of RPA(s) all the time. +# +# - device: A device in device privacy mode is only concerned about the # privacy of the device and will accept advertising packets from peer devices # that contain their Identity Address as well as ones that contain a private # address, even if the peer device has distributed its IRK in the past. + +# - limited-network: Apply Limited Discoverable Mode to advertising, which +# follows the same policy as to BR/EDR that publishes the identity address when +# discoverable, and Network Privacy Mode for scanning. +# +# - limited-device: Apply Limited Discoverable Mode to advertising, which +# follows the same policy as to BR/EDR that publishes the identity address when +# discoverable, and Device Privacy Mode for scanning. +# # Defaults to "off" #Privacy = off -- 2.7.4