Re: [PATCH BlueZ V2] Mesh: Fix TTL in Config Heartbeat Publication Set

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Robert,

> On Mar 23, 2018, at 8:20 AM, Robert Lubas <robert.lubas@xxxxxxxxxxx> wrote:
> 
> Hi Brian,
> 
>> On 03/22/2018 10:33 PM, Gix, Brian wrote:
>> I am unable to look at all the code in context at the moment, but using the DEFAULT_TTL (0xff) for any TTL value, will automatically get replaced with whatever the default TTL has been set to. It is a handy value which means “use the system setting” without needing to look it up.
>>> On Mar 22, 2018, at 3:45 AM, Robert Lubaś <robert.lubas@xxxxxxxxxxx> wrote:
>>> 
>>> In Mesh Profile spec 4.2.17.4 Heartbeat Publication TTL value range is
>>> 0x00-0x7F. In cmd_hb_pub_set heartbeat ttl was set to DEFAULT_TTL 0xFF, this
>>> patch fix this by adding ttl param to hb-pub-set.
>>> ---
>>> mesh/config-client.c | 12 ++++++------
>>> 1 file changed, 6 insertions(+), 6 deletions(-)
>>> 
>>> diff --git a/mesh/config-client.c b/mesh/config-client.c
>>> index 19e617d62..0b5b8677b 100644
>>> --- a/mesh/config-client.c
>>> +++ b/mesh/config-client.c
>>> @@ -1042,7 +1042,7 @@ static void cmd_hb_pub_set(int argc, char *argv[])
>>>    n = mesh_opcode_set(OP_CONFIG_HEARTBEAT_PUB_SET, msg);
>>> 
>>>    parm_cnt = read_input_parameters(argc, argv);
>>> -    if (parm_cnt != 5) {
>>> +    if (parm_cnt != 6) {
>>>        bt_shell_printf("Bad arguments: %s\n", argv[1]);
>>>        return bt_shell_noninteractive_quit(EXIT_FAILURE);
>>>    }
>>> @@ -1056,12 +1056,12 @@ static void cmd_hb_pub_set(int argc, char *argv[])
>>>    /* Period Log */
>>>    msg[n++] = parms[2];
>>>    /* Heartbeat TTL */
>>> -    msg[n++] = DEFAULT_TTL;
>>> +    msg[n++] = parms[3];
>>>    /* Features */
>>> -    put_le16(parms[3], msg + n);
>>> +    put_le16(parms[4], msg + n);
>>>    n += 2;
>>>    /* NetKey Index */
>>> -    put_le16(parms[4], msg + n);
>>> +    put_le16(parms[5], msg + n);
>>>    n += 2;
>>> 
>>>    if (!config_send(msg, n)) {
>>> @@ -1167,8 +1167,8 @@ static const struct bt_shell_menu cfg_menu = {
>>>                        "Set relay"},
>>>    {"relay-get",           NULL,                   cmd_relay_get,
>>>                        "Get relay"},
>>> -    {"hb-pub-set", "<pub_addr> <count> <period> <features> <net_idx>",
>>> -                cmd_hb_pub_set,     "Set heartbeat publish"},
>>> +    {"hb-pub-set", "<pub_addr> <count> <period> <ttl> <features> <net_idx>",
>>> +                cmd_hb_pub_set,    "Set heartbeat publish"},
>>>    {"hb-pub-get",           NULL,                   cmd_hb_pub_get,
>>>                        "Get heartbeat publish"},
>>>    {"hb-sub-set", "<src_addr> <dst_addr> <period>",
>>> -- 
>>> 2.11.0
>>> 
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
>>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> I see your point. You know the mesh specification very well, but I will just refer to it to construct the reply. The Mesh Profile specification says: if the publish TTL is set to 0xFF the message use the Default TTL (4.2.2.5). The Default TTL valid values are 0x00, 0x02-0x7F. Prohibited are 0x01, 0x80-0x7FF (4.2.7).
> 
> However in terms of Heartbeat publication TTL the valid values are 0x00-0x7F. Prohibited are 0x80-0xFF (4.2.17.4). Taking into account valid ranges the heartbeat TTL should be masked with 0x7F or in case of 0xFF the node Default TTL from db should be used.
> 
> I think that it will be helpful e.g. to assess the basic reliability of the mesh network having the heartbeat publication TTL as a parameter. Then, for example you can very easy build the metric which depends on TTL.

You are correct that you should never see anything greater than 0x7f over-the-air.... but the intent was that the lower layers would handle the translation to the system setting.... or in the case of heartbeat, the control layer.��.n��������+%������w��{.n�����{����^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�

[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux