main.conf: Fix Privacy modes
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 1 Nov 2021 22:01:04 +0000 (15:01 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:37 +0000 (19:08 +0530)
Device privacy 0x01 uses RPA regardless of the discoverable setting thus
it conforms to network mode not device mode.

Also this improves documentation to state what is the expectation of
each mode since it may not have been very clear by just using the terms
from the spec.

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

index 632ed71..d6bede6 100755 (executable)
@@ -670,8 +670,10 @@ static void parse_config(GKeyFile *config)
        } else {
                DBG("privacy=%s", str);
 
-               if (!strcmp(str, "device"))
+               if (!strcmp(str, "network") || !strcmp(str, "on"))
                        btd_opts.privacy = 0x01;
+               if (!strcmp(str, "device") || !strcmp(str, "limited"))
+                       btd_opts.privacy = 0x02;
                else if (!strcmp(str, "off"))
                        btd_opts.privacy = 0x00;
                else {
index 91eee89..d28fa4b 100755 (executable)
 
 # Default privacy setting.
 # Enables use of private address.
-# Possible values: "off", "device", "network"
-# "network" option not supported currently
+# 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
+# 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.
 # Defaults to "off"
 #Privacy = off