main.conf: Rework privacy options
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 4 Nov 2021 00:25:33 +0000 (17:25 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:37 +0000 (19:08 +0530)
This reworks privacy options so the limited discoverable is only
available when controller mode is set to dual.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
src/btd.h
src/main.c
src/main.conf

index 781f705..cc827c1 100755 (executable)
--- 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;
 
index d6bede6..27efb18 100755 (executable)
@@ -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;
                }
index d28fa4b..d5c4f54 100755 (executable)
 
 # 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