diff mbox series

[Bluez] btmgmt: Add support to enable LL privacy

Message ID 20210405145802.27317-1-sathish.narasimman@intel.com
State New
Headers show
Series [Bluez] btmgmt: Add support to enable LL privacy | expand

Commit Message

Sathish Narasimman April 5, 2021, 2:58 p.m. UTC
If the Bluetooth controller supports LL privacy this command will be
used to test the same.
"sudo btmgmt power off"
"sudo btmgmt llprivacy on"
"sudo btmgmt power on"

Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>
---
 tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

Comments

Luiz Augusto von Dentz April 6, 2021, 3:08 a.m. UTC | #1
Hi Sathish,

On Mon, Apr 5, 2021 at 3:40 PM Sathish Narasimman
<sathish.narasimman@intel.com> wrote:
>

> If the Bluetooth controller supports LL privacy this command will be

> used to test the same.

> "sudo btmgmt power off"

> "sudo btmgmt llprivacy on"

> "sudo btmgmt power on"

>

> Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>

> ---

>  tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++

>  1 file changed, 38 insertions(+)

>

> diff --git a/tools/btmgmt.c b/tools/btmgmt.c

> index 93d244ff8ec8..4a53c3768fe9 100644

> --- a/tools/btmgmt.c

> +++ b/tools/btmgmt.c

> @@ -2261,6 +2261,42 @@ static void cmd_bredr(int argc, char **argv)

>         cmd_setting(MGMT_OP_SET_BREDR, argc, argv);

>  }

>

> +static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void *param,

> +                             void *user_data)

> +{

> +       if (status != 0)

> +               error("Could not set LL RPA resolution with status 0x%02x (%s)",

> +                     status, mgmt_errstr(status));

> +       else

> +               print("LL RPA Resolution successfully set");

> +

> +       bt_shell_noninteractive_quit(EXIT_SUCCESS);

> +}

> +

> +static void cmd_set_ll_rpa_resoln(int argc, char **argv)

> +{

> +       /* 15c0a148-c273-11ea-b3de-0242ac130004 */

> +       static const uint8_t rpa_resolution_uuid[16] = {

> +                               0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,

> +                               0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,

> +       };

> +       struct mgmt_cp_set_exp_feature cp;

> +       uint16_t index;

> +

> +       memset(&cp, 0, sizeof(cp));

> +       memcpy(cp.uuid, rpa_resolution_uuid, 16);

> +

> +       index = mgmt_index;

> +       if (index == MGMT_INDEX_NONE)

> +               index = 0;

> +

> +       if (parse_setting(argc, argv, &cp.action) == false)

> +               return bt_shell_noninteractive_quit(EXIT_FAILURE);

> +

> +       mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,

> +                 sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL);

> +}

> +

>  static void cmd_privacy(int argc, char **argv)

>  {

>         struct mgmt_cp_set_privacy cp;

> @@ -5243,6 +5279,8 @@ static const struct bt_shell_menu main_menu = {

>                 cmd_bredr,              "Toggle BR/EDR support",        },

>         { "privacy",            "<on/off>",

>                 cmd_privacy,            "Toggle privacy support"        },

> +       { "llprivacy",          "<on/off>",

> +               cmd_set_ll_rpa_resoln,  "Toggle LL privacy support"     },


Let's have it as a parameter of privacy command <on/off/ll> so when a
user enters ll it enables link-layer privacy.

>         { "class",              "<major> <minor>",

>                 cmd_class,              "Set device major/minor class"  },

>         { "disconnect",         "[-t type] <remote address>",

> --

> 2.17.1

>



-- 
Luiz Augusto von Dentz
Marcel Holtmann April 6, 2021, 8 a.m. UTC | #2
Hi Luiz,

>> If the Bluetooth controller supports LL privacy this command will be

>> used to test the same.

>> "sudo btmgmt power off"

>> "sudo btmgmt llprivacy on"

>> "sudo btmgmt power on"

>> 

>> Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>

>> ---

>> tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++

>> 1 file changed, 38 insertions(+)

>> 

>> diff --git a/tools/btmgmt.c b/tools/btmgmt.c

>> index 93d244ff8ec8..4a53c3768fe9 100644

>> --- a/tools/btmgmt.c

>> +++ b/tools/btmgmt.c

>> @@ -2261,6 +2261,42 @@ static void cmd_bredr(int argc, char **argv)

>>        cmd_setting(MGMT_OP_SET_BREDR, argc, argv);

>> }

>> 

>> +static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void *param,

>> +                             void *user_data)

>> +{

>> +       if (status != 0)

>> +               error("Could not set LL RPA resolution with status 0x%02x (%s)",

>> +                     status, mgmt_errstr(status));

>> +       else

>> +               print("LL RPA Resolution successfully set");

>> +

>> +       bt_shell_noninteractive_quit(EXIT_SUCCESS);

>> +}

>> +

>> +static void cmd_set_ll_rpa_resoln(int argc, char **argv)

>> +{

>> +       /* 15c0a148-c273-11ea-b3de-0242ac130004 */

>> +       static const uint8_t rpa_resolution_uuid[16] = {

>> +                               0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,

>> +                               0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,

>> +       };

>> +       struct mgmt_cp_set_exp_feature cp;

>> +       uint16_t index;

>> +

>> +       memset(&cp, 0, sizeof(cp));

>> +       memcpy(cp.uuid, rpa_resolution_uuid, 16);

>> +

>> +       index = mgmt_index;

>> +       if (index == MGMT_INDEX_NONE)

>> +               index = 0;

>> +

>> +       if (parse_setting(argc, argv, &cp.action) == false)

>> +               return bt_shell_noninteractive_quit(EXIT_FAILURE);

>> +

>> +       mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,

>> +                 sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL);

>> +}

>> +

>> static void cmd_privacy(int argc, char **argv)

>> {

>>        struct mgmt_cp_set_privacy cp;

>> @@ -5243,6 +5279,8 @@ static const struct bt_shell_menu main_menu = {

>>                cmd_bredr,              "Toggle BR/EDR support",        },

>>        { "privacy",            "<on/off>",

>>                cmd_privacy,            "Toggle privacy support"        },

>> +       { "llprivacy",          "<on/off>",

>> +               cmd_set_ll_rpa_resoln,  "Toggle LL privacy support"     },

> 

> Let's have it as a parameter of privacy command <on/off/ll> so when a

> user enters ll it enables link-layer privacy.


please don’t. The privacy setting means that we start using RPAs.

Also what is wrong with exp-privacy command that I already added.

Regards

Marcel
Sathish Narasimman April 14, 2021, 5:13 a.m. UTC | #3
Hi 

> -----Original Message-----

> From: Marcel Holtmann <marcel@holtmann.org>

> Sent: Tuesday, April 6, 2021 1:31 PM

> To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>

> Cc: Narasimman, Sathish <sathish.narasimman@intel.com>; linux-

> bluetooth@vger.kernel.org; Tumkur Narayan, Chethan

> <chethan.tumkur.narayan@intel.com>; Srivatsa, Ravishankar

> <ravishankar.srivatsa@intel.com>

> Subject: Re: [Bluez PATCH] btmgmt: Add support to enable LL privacy

> 

> Hi Luiz,

> 

> >> If the Bluetooth controller supports LL privacy this command will be

> >> used to test the same.

> >> "sudo btmgmt power off"

> >> "sudo btmgmt llprivacy on"

> >> "sudo btmgmt power on"

> >>

> >> Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>

> >> ---

> >> tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++

> >> 1 file changed, 38 insertions(+)

> >>

> >> diff --git a/tools/btmgmt.c b/tools/btmgmt.c index

> >> 93d244ff8ec8..4a53c3768fe9 100644

> >> --- a/tools/btmgmt.c

> >> +++ b/tools/btmgmt.c

> >> @@ -2261,6 +2261,42 @@ static void cmd_bredr(int argc, char **argv)

> >>        cmd_setting(MGMT_OP_SET_BREDR, argc, argv); }

> >>

> >> +static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void *param,

> >> +                             void *user_data) {

> >> +       if (status != 0)

> >> +               error("Could not set LL RPA resolution with status 0x%02x (%s)",

> >> +                     status, mgmt_errstr(status));

> >> +       else

> >> +               print("LL RPA Resolution successfully set");

> >> +

> >> +       bt_shell_noninteractive_quit(EXIT_SUCCESS);

> >> +}

> >> +

> >> +static void cmd_set_ll_rpa_resoln(int argc, char **argv) {

> >> +       /* 15c0a148-c273-11ea-b3de-0242ac130004 */

> >> +       static const uint8_t rpa_resolution_uuid[16] = {

> >> +                               0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,

> >> +                               0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,

> >> +       };

> >> +       struct mgmt_cp_set_exp_feature cp;

> >> +       uint16_t index;

> >> +

> >> +       memset(&cp, 0, sizeof(cp));

> >> +       memcpy(cp.uuid, rpa_resolution_uuid, 16);

> >> +

> >> +       index = mgmt_index;

> >> +       if (index == MGMT_INDEX_NONE)

> >> +               index = 0;

> >> +

> >> +       if (parse_setting(argc, argv, &cp.action) == false)

> >> +               return bt_shell_noninteractive_quit(EXIT_FAILURE);

> >> +

> >> +       mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,

> >> +                 sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL); }

> >> +

> >> static void cmd_privacy(int argc, char **argv) {

> >>        struct mgmt_cp_set_privacy cp; @@ -5243,6 +5279,8 @@ static

> >> const struct bt_shell_menu main_menu = {

> >>                cmd_bredr,              "Toggle BR/EDR support",        },

> >>        { "privacy",            "<on/off>",

> >>                cmd_privacy,            "Toggle privacy support"        },

> >> +       { "llprivacy",          "<on/off>",

> >> +               cmd_set_ll_rpa_resoln,  "Toggle LL privacy support"     },

> >

> > Let's have it as a parameter of privacy command <on/off/ll> so when a

> > user enters ll it enables link-layer privacy.

> 

> please don’t. The privacy setting means that we start using RPAs.

> 

> Also what is wrong with exp-privacy command that I already added.


Gentle Reminder.
> 

> Regards

> 

> Marcel



Regards
Sathish N
Marcel Holtmann April 14, 2021, 10:06 a.m. UTC | #4
Hi Sathish,

>>>> If the Bluetooth controller supports LL privacy this command will be

>>>> used to test the same.

>>>> "sudo btmgmt power off"

>>>> "sudo btmgmt llprivacy on"

>>>> "sudo btmgmt power on"

>>>> 

>>>> Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>

>>>> ---

>>>> tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++

>>>> 1 file changed, 38 insertions(+)

>>>> 

>>>> diff --git a/tools/btmgmt.c b/tools/btmgmt.c index

>>>> 93d244ff8ec8..4a53c3768fe9 100644

>>>> --- a/tools/btmgmt.c

>>>> +++ b/tools/btmgmt.c

>>>> @@ -2261,6 +2261,42 @@ static void cmd_bredr(int argc, char **argv)

>>>>       cmd_setting(MGMT_OP_SET_BREDR, argc, argv); }

>>>> 

>>>> +static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void *param,

>>>> +                             void *user_data) {

>>>> +       if (status != 0)

>>>> +               error("Could not set LL RPA resolution with status 0x%02x (%s)",

>>>> +                     status, mgmt_errstr(status));

>>>> +       else

>>>> +               print("LL RPA Resolution successfully set");

>>>> +

>>>> +       bt_shell_noninteractive_quit(EXIT_SUCCESS);

>>>> +}

>>>> +

>>>> +static void cmd_set_ll_rpa_resoln(int argc, char **argv) {

>>>> +       /* 15c0a148-c273-11ea-b3de-0242ac130004 */

>>>> +       static const uint8_t rpa_resolution_uuid[16] = {

>>>> +                               0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,

>>>> +                               0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,

>>>> +       };

>>>> +       struct mgmt_cp_set_exp_feature cp;

>>>> +       uint16_t index;

>>>> +

>>>> +       memset(&cp, 0, sizeof(cp));

>>>> +       memcpy(cp.uuid, rpa_resolution_uuid, 16);

>>>> +

>>>> +       index = mgmt_index;

>>>> +       if (index == MGMT_INDEX_NONE)

>>>> +               index = 0;

>>>> +

>>>> +       if (parse_setting(argc, argv, &cp.action) == false)

>>>> +               return bt_shell_noninteractive_quit(EXIT_FAILURE);

>>>> +

>>>> +       mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,

>>>> +                 sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL); }

>>>> +

>>>> static void cmd_privacy(int argc, char **argv) {

>>>>       struct mgmt_cp_set_privacy cp; @@ -5243,6 +5279,8 @@ static

>>>> const struct bt_shell_menu main_menu = {

>>>>               cmd_bredr,              "Toggle BR/EDR support",        },

>>>>       { "privacy",            "<on/off>",

>>>>               cmd_privacy,            "Toggle privacy support"        },

>>>> +       { "llprivacy",          "<on/off>",

>>>> +               cmd_set_ll_rpa_resoln,  "Toggle LL privacy support"     },

>>> 

>>> Let's have it as a parameter of privacy command <on/off/ll> so when a

>>> user enters ll it enables link-layer privacy.

>> 

>> please don’t. The privacy setting means that we start using RPAs.

>> 

>> Also what is wrong with exp-privacy command that I already added.

> 

> Gentle Reminder.


gentle reminder of what? Please re-read my response.

Regards

Marcel
Sathish Narasimman April 14, 2021, 11:14 a.m. UTC | #5
Hi Marcel

> -----Original Message-----

> From: Marcel Holtmann <marcel@holtmann.org>

> Sent: Wednesday, April 14, 2021 3:37 PM

> To: Narasimman, Sathish <sathish.narasimman@intel.com>

> Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>; linux-

> bluetooth@vger.kernel.org; Tumkur Narayan, Chethan

> <chethan.tumkur.narayan@intel.com>; Srivatsa, Ravishankar

> <ravishankar.srivatsa@intel.com>

> Subject: Re: [Bluez PATCH] btmgmt: Add support to enable LL privacy

> 

> Hi Sathish,

> 

> >>>> If the Bluetooth controller supports LL privacy this command will

> >>>> be used to test the same.

> >>>> "sudo btmgmt power off"

> >>>> "sudo btmgmt llprivacy on"

> >>>> "sudo btmgmt power on"

> >>>>

> >>>> Signed-off-by: Sathish Narasimman <sathish.narasimman@intel.com>

> >>>> ---

> >>>> tools/btmgmt.c | 38 ++++++++++++++++++++++++++++++++++++++

> >>>> 1 file changed, 38 insertions(+)

> >>>>

> >>>> diff --git a/tools/btmgmt.c b/tools/btmgmt.c index

> >>>> 93d244ff8ec8..4a53c3768fe9 100644

> >>>> --- a/tools/btmgmt.c

> >>>> +++ b/tools/btmgmt.c

> >>>> @@ -2261,6 +2261,42 @@ static void cmd_bredr(int argc, char **argv)

> >>>>       cmd_setting(MGMT_OP_SET_BREDR, argc, argv); }

> >>>>

> >>>> +static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void

> *param,

> >>>> +                             void *user_data) {

> >>>> +       if (status != 0)

> >>>> +               error("Could not set LL RPA resolution with status 0x%02x (%s)",

> >>>> +                     status, mgmt_errstr(status));

> >>>> +       else

> >>>> +               print("LL RPA Resolution successfully set");

> >>>> +

> >>>> +       bt_shell_noninteractive_quit(EXIT_SUCCESS);

> >>>> +}

> >>>> +

> >>>> +static void cmd_set_ll_rpa_resoln(int argc, char **argv) {

> >>>> +       /* 15c0a148-c273-11ea-b3de-0242ac130004 */

> >>>> +       static const uint8_t rpa_resolution_uuid[16] = {

> >>>> +                               0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,

> >>>> +                               0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,

> >>>> +       };

> >>>> +       struct mgmt_cp_set_exp_feature cp;

> >>>> +       uint16_t index;

> >>>> +

> >>>> +       memset(&cp, 0, sizeof(cp));

> >>>> +       memcpy(cp.uuid, rpa_resolution_uuid, 16);

> >>>> +

> >>>> +       index = mgmt_index;

> >>>> +       if (index == MGMT_INDEX_NONE)

> >>>> +               index = 0;

> >>>> +

> >>>> +       if (parse_setting(argc, argv, &cp.action) == false)

> >>>> +               return bt_shell_noninteractive_quit(EXIT_FAILURE);

> >>>> +

> >>>> +       mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,

> >>>> +                 sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL);

> >>>> + }

> >>>> +

> >>>> static void cmd_privacy(int argc, char **argv) {

> >>>>       struct mgmt_cp_set_privacy cp; @@ -5243,6 +5279,8 @@ static

> >>>> const struct bt_shell_menu main_menu = {

> >>>>               cmd_bredr,              "Toggle BR/EDR support",        },

> >>>>       { "privacy",            "<on/off>",

> >>>>               cmd_privacy,            "Toggle privacy support"        },

> >>>> +       { "llprivacy",          "<on/off>",

> >>>> +               cmd_set_ll_rpa_resoln,  "Toggle LL privacy support"     },

> >>>

> >>> Let's have it as a parameter of privacy command <on/off/ll> so when

> >>> a user enters ll it enables link-layer privacy.

> >>

> >> please don’t. The privacy setting means that we start using RPAs.

> >>

> >> Also what is wrong with exp-privacy command that I already added.

> >

> > Gentle Reminder.

> 

> gentle reminder of what? Please re-read my response.

> 


My mistake. Was misunderstood that the comment was regarding what Luiz asked to Change.

Also, I didn’t rebased the latest code. Found your latest code.


> Regards

> 

> Marcel



Regards
Sathish N
diff mbox series

Patch

diff --git a/tools/btmgmt.c b/tools/btmgmt.c
index 93d244ff8ec8..4a53c3768fe9 100644
--- a/tools/btmgmt.c
+++ b/tools/btmgmt.c
@@ -2261,6 +2261,42 @@  static void cmd_bredr(int argc, char **argv)
 	cmd_setting(MGMT_OP_SET_BREDR, argc, argv);
 }
 
+static void ll_rpa_resoln_rsp(uint8_t status, uint16_t len, const void *param,
+			      void *user_data)
+{
+	if (status != 0)
+		error("Could not set LL RPA resolution with status 0x%02x (%s)",
+		      status, mgmt_errstr(status));
+	else
+		print("LL RPA Resolution successfully set");
+
+	bt_shell_noninteractive_quit(EXIT_SUCCESS);
+}
+
+static void cmd_set_ll_rpa_resoln(int argc, char **argv)
+{
+	/* 15c0a148-c273-11ea-b3de-0242ac130004 */
+	static const uint8_t rpa_resolution_uuid[16] = {
+				0x04, 0x00, 0x13, 0xac, 0x42, 0x02, 0xde, 0xb3,
+				0xea, 0x11, 0x73, 0xc2, 0x48, 0xa1, 0xc0, 0x15,
+	};
+	struct mgmt_cp_set_exp_feature cp;
+	uint16_t index;
+
+	memset(&cp, 0, sizeof(cp));
+	memcpy(cp.uuid, rpa_resolution_uuid, 16);
+
+	index = mgmt_index;
+	if (index == MGMT_INDEX_NONE)
+		index = 0;
+
+	if (parse_setting(argc, argv, &cp.action) == false)
+		return bt_shell_noninteractive_quit(EXIT_FAILURE);
+
+	mgmt_send(mgmt, MGMT_OP_SET_EXP_FEATURE, index,
+		  sizeof(cp), &cp, ll_rpa_resoln_rsp, NULL, NULL);
+}
+
 static void cmd_privacy(int argc, char **argv)
 {
 	struct mgmt_cp_set_privacy cp;
@@ -5243,6 +5279,8 @@  static const struct bt_shell_menu main_menu = {
 		cmd_bredr,		"Toggle BR/EDR support",	},
 	{ "privacy",		"<on/off>",
 		cmd_privacy,		"Toggle privacy support"	},
+	{ "llprivacy",		"<on/off>",
+		cmd_set_ll_rpa_resoln,	"Toggle LL privacy support"	},
 	{ "class",		"<major> <minor>",
 		cmd_class,		"Set device major/minor class"	},
 	{ "disconnect", 	"[-t type] <remote address>",