Marcel Holtmann [Sat, 16 Jun 2018 20:27:51 +0000 (22:27 +0200)]
monitor: Add support for decoding Broadcom Raw RSSI command
Change-Id: Icf75bdfb5d31bb2a9464bf2db261b661e4dc7e86
Signed-off-by: himanshu <h.himanshu@samsung.com>
Marcel Holtmann [Sat, 16 Jun 2018 20:17:40 +0000 (22:17 +0200)]
monitor: Add support for decoding Broadcom high priority connection
Change-Id: I6c335959231197ed76fbb17590dbe1506e2f5e39
Signed-off-by: himanshu <h.himanshu@samsung.com>
Marcel Holtmann [Sat, 16 Jun 2018 20:11:28 +0000 (22:11 +0200)]
monitor: Add support for providing fallback manufacturer
Change-Id: Ic91151c25ac11765d0b5d18eaf825282b2245f92
Signed-off-by: himanshu <h.himanshu@samsung.com>
Marcel Holtmann [Sat, 16 Jun 2018 19:18:47 +0000 (21:18 +0200)]
monitor: Fix command parameter ordering
Change-Id: I3cdb596baffff23ae78fcb4252bc85a54e8f32c2
Signed-off-by: himanshu <h.himanshu@samsung.com>
Tedd Ho-Jeong An [Wed, 13 Jun 2018 19:52:18 +0000 (12:52 -0700)]
monitor: Fix printing params for HCI Intel DDC command
The offset of value for HCI Intel DDC command is incorrect.
HCI Intel DDC parameter has a combination of following structure:
struct intel_ddc {
u8 len;
u16 id;
u8 *value;
}
The offset of value should be sum of len and id which is 3.
Change-Id: I76278eb72b7742d47a2279f805d25aaeec4a5ef8
Signed-off-by: himanshu <h.himanshu@samsung.com>
Luiz Augusto von Dentz [Thu, 14 Jun 2018 13:27:51 +0000 (16:27 +0300)]
shared/shell: Fix code style
Remove empty lines
Change-Id: If543623a3a9697a23e6299052eca119b3249d3b5
Signed-off-by: himanshu <h.himanshu@samsung.com>
Luiz Augusto von Dentz [Wed, 13 Jun 2018 12:55:36 +0000 (15:55 +0300)]
shared/shell: Add history support
This uses read_history/write_history to load and save input history.
Change-Id: Iaca94569f29a8c3017cb2b5427aaa5e036bb3ad1
Signed-off-by: himanshu <h.himanshu@samsung.com>
Luiz Augusto von Dentz [Wed, 13 Jun 2018 11:19:28 +0000 (14:19 +0300)]
shared/shell: Set shell name on SHELL env
This set SHELL to the first argument given.
Change-Id: I51d0e2f67d7c61a6123b5100f09acb36955f9fce
Signed-off-by: himanshu <h.himanshu@samsung.com>
injun.yang [Mon, 30 Dec 2019 08:46:21 +0000 (17:46 +0900)]
Remove redundant debug message
Change-Id: I7c40721f4b30aaa45d80abb517b26aed4bf72cd9
DoHyun Pyun [Mon, 30 Dec 2019 04:21:38 +0000 (13:21 +0900)]
Adjust the position of GCC build option
Change-Id: Ifb5ab3083ade1638b80a25167314d5ffb118a7f2
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
DoHyun Pyun [Mon, 30 Dec 2019 00:29:47 +0000 (09:29 +0900)]
Add the build exception for GCC9
Change-Id: Iec7c24e4db833b7c49ff24a6feaea206910d624e
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
Amit Purwar [Fri, 27 Dec 2019 10:49:45 +0000 (16:19 +0530)]
Fix build issue for strncpy
Change-Id: Ife86ad79f4a271179a184faf47e489fa88c2f0fa
Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
Pyun DoHyun [Tue, 24 Dec 2019 03:25:57 +0000 (03:25 +0000)]
Merge "Support the keyboard plugin" into tizen
DoHyun Pyun [Mon, 23 Dec 2019 23:42:10 +0000 (08:42 +0900)]
Support the keyboard plugin
Change-Id: Ia5a640caf07cba2a355af94998aa9000500bb82a
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
Inga Stotland [Sun, 11 Aug 2019 07:00:45 +0000 (00:00 -0700)]
shared/mainloop: Add ell-based mainloop implementation
This adds implementation of wrapper mainloop functions to interact with
ell main APIs, enabling support for the applications that link with ell
library and use mainloop functionality.
Change-Id: I9a52c5589097d0acb7a488af88600e9a99d38070
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
DoHyun Pyun [Fri, 20 Dec 2019 03:53:56 +0000 (12:53 +0900)]
Merge branch 'meshd_integrate' into tizen
Change-Id: I1d361e7c478b6a61680f96e6e9724ad96f82bc27
Brian Gix [Wed, 4 Dec 2019 19:15:16 +0000 (11:15 -0800)]
build: Include dependencies for ell/settings.[ch]
Including settings.[ch] in a build requires the following chained
dependencies:
PEM
CERT
KEY
PKSC5
BASE64
Change-Id: I29e6478c9c445cbf30b3681a5248185fdf1c19eb
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Wed, 11 Dec 2019 00:56:16 +0000 (16:56 -0800)]
mesh: Add mesh-main.conf file with general mesh configuration
This adds key file with default settings for the mesh daemon.
The following settings are included:
Beacon: Default setting for to indicate whether
secure network beaconing is enabled for a
node whose Beacon state hasn't been configured
by a configuration client, i.e., this setting
apllies to a newly provisioned, created or
imported node.
Relay: Default setting for supporting relay
Friendship: Default setting for supporting Friendship
CRPL: Default depth of replay protection list.
FriendQueueSize: Default size of friend queue: the number
of messages that each Friend node can store
for the Low Power node.
ProvTimeout: Provisioning timeout in seconds.
Change-Id: Ia5f40ef9d5d866e8d94a2ff5cac7cf6339015eca
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Aurelien Jarno [Tue, 10 Dec 2019 22:22:50 +0000 (23:22 +0100)]
tools/mesh-cfgclient: add friend get/set commands
Add friend-get and friend-set commands as per Mesh Profile 4.3.2.55,
4.3.2.56 and 4.3.2.57.
Change-Id: I4375267c2b4a18a68ebafc6610bf22e067ecd663
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Aurelien Jarno [Mon, 11 Nov 2019 19:55:30 +0000 (20:55 +0100)]
tools/mesh-cfgclient: add network transmit get/set commands
Add network-transmit-get and network-transmit-set commands as per
Mesh Profile 4.3.2.69, 4.3.2.70 and 4.3.2.71.
Change-Id: I622480b77bd07d474d4ae8259e0edc1eda552471
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Fri, 13 Dec 2019 20:25:02 +0000 (12:25 -0800)]
mesh: Cleanup unused LPN code
The daemon does not support the LPN role, and this is unreferenced code.
Change-Id: I8e201453bec2800c27e57d856b1258c127a67388
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Fri, 13 Dec 2019 20:15:05 +0000 (12:15 -0800)]
mesh: Refactor Secure Network Beaconing
The daemon handles multiple nodes, that may or may not be on the same
mesh network. While each node my be seperately configured to beacon or
not beacon, there is nothing gained (except redundent traffic) for each
node to beacon seperately. Beaconing is therefore centralized with the
Network Key the SNB represents, with each *received* beacon delivered
to each node. But for SNBs generated, we keep a count of how many nodes
want beacons sent for a specific key. If 1 or more, we beacon, if 0
nodes want the beacon sent, then we do not beacon.
Change-Id: Id186b6e93d70b09553d585ee9cc4d1b8c7e8b268
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Wed, 11 Dec 2019 23:28:47 +0000 (15:28 -0800)]
mesh: Add more checks for element properties
This adds consistency checks for mandatory properties on
org.bluez.mesh.Element1 interface:
- disallow duplicate models on the same element
- disallow elements with duplicate indices
- disallow configuration server model on any element but primary
Change-Id: If4174021b50a0f05c7c25911054cfb98042a06c8
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Tue, 10 Dec 2019 23:06:00 +0000 (15:06 -0800)]
mesh: Remove redundant code in mesh IO mgmt
This removes unnecessary housekeeping for hci controllers
Change-Id: I38cf74c18d447d5df6ad340e8cbe0e8f40640122
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 6 Dec 2019 20:57:49 +0000 (12:57 -0800)]
mesh: Initialize net modes based on node configuration
This correctly initializes net settings related to node features
based on node configuration: either defaults in the case of
a newly node created/provisioned/imported node or the configured
values read from stored existing node.
Change-Id: Id0d7a7e2ba2ea7e4dc3cdc17b241250581a14af1
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 6 Dec 2019 20:57:48 +0000 (12:57 -0800)]
mesh: Clean up node.c
This change makes the node initialization a bit easier to follow.
Replace if-else with switch when processing request type, descriptive
function names, more predictable code flow.
Change-Id: Id81f673224878a64d3ff341c7eb574a78bd8be0b
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Biman Paul [Tue, 17 Dec 2019 08:18:57 +0000 (17:18 +0900)]
Add custom uuid support to trusted profile
[Model] Z400F
[BinType] AP
[Customer] OPEN
[Issue#] NA
[Request] Monitoring Test
[Occurrence Version] Z4 Daily
[Problem] SPP authorization request is always shown
even if we select "do not show again".
[Cause & Measure] We are not marking SPP uuid as trusted
Measure: Add custom uuid support to trusted profile
[Checking Method] Request SPP connect from remote device
[Team] Basic Connection
[Developer] Biman Paul <biman.paul@samsung.com>
[Solution company] Samsung
[Change Type] N/A
Change-Id: I9bb537cd0da01b1f86a99f7b4f1c8765c409ce6f
Signed-off-by: Deokhyun Kim <dukan.kim@samsung.com>
Inga Stotland [Fri, 6 Dec 2019 20:57:47 +0000 (12:57 -0800)]
mesh: Delete unused function
This removes node_parse_composition() implementation as it is not used
anywhere in the rest of the code base.
Change-Id: Ifb628a4c8cd447f327cfd560b631b04f435837c6
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Tue, 10 Dec 2019 17:45:22 +0000 (09:45 -0800)]
tools/mesh-cfgclient: Fix appkey/netkey commands
This fixes the checks for the presence of AppKeys and Netkeys.
Change-Id: I095c36f5be5846b789c56673fed8deb4d882cf7e
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Sat, 7 Dec 2019 06:12:45 +0000 (22:12 -0800)]
tools/mesh-cfgclient: Disallow sending a non-existing key
Prior to sending either NetKeyAdd or AppKeyAdd message to a
remote node, check if the key exists locally.
Change-Id: I7ba29c91b15ccbffbdffa0ef206e659843f955ea
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Tue, 3 Dec 2019 21:04:10 +0000 (13:04 -0800)]
mesh: Fix memory leak in Join() API call
Change-Id: I69da675134c83fea589056e52882df5339ec9092
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Tue, 3 Dec 2019 21:04:09 +0000 (13:04 -0800)]
mesh: Rearrange PB-ACK for possible session close
In certain circumstances, reception of PB-ADV messages may trigger
session close. This rearrange ACKs new verified messages before
performing call-back to avoid situations where the session no longer
exists after the message has been handled.
This caused static analysis errors during provisioning, which are now
addressed.
Change-Id: I272e8066f307374c848cb78326259b49acaf4e20
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Prathyusha N [Tue, 3 Dec 2019 10:01:25 +0000 (15:31 +0530)]
mesh: Fix to send close indication on timeout
If pb_session is freed in timeout, close indication will not be sent.
pb_session is freed in pb_adv_unreg() and hence removed from tx_timeout.
Added acceptor_free() in acp_prov_close() to ensure pb_session is freed.
Change-Id: I4649bfa038cf14fb613f13c6b910314f7f710403
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Prathyusha N [Tue, 3 Dec 2019 10:01:23 +0000 (15:31 +0530)]
mesh: Fix string of public-oob and static-oob
Fix string typo as per mesh-api.txt
Change-Id: I58742118a47a0b304468bcf6245c4871f692b75b
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Prathyusha N [Tue, 3 Dec 2019 10:01:24 +0000 (15:31 +0530)]
mesh: Fix invalid transaction number in PROV_INVITE
For initiator, transaction number starts from 0x00 where as for acceptor
transaction number starts from 0x80. Since transaction number is
pre-incremented and sent in every packet, initialize it with 0xFF for
initiator and 0x7F for acceptor.
Change-Id: I833335c962f06b6a58ff70d63c603938d335005c
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Nagaraj D R [Tue, 3 Dec 2019 09:53:27 +0000 (15:23 +0530)]
mesh: Fix invalid netkey index in appkey add/delete
8 LSbs of netkey index should be packed into the first octet
Change-Id: Ia2226334e4ef9702e44a9fa96a28e8273780ac04
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Aurelien Jarno [Mon, 11 Nov 2019 19:54:06 +0000 (20:54 +0100)]
mesh: fix (re)transmit count & interval steps
The Foundation Model Layer uses little endian ordering. As a
consequence the (re)transmit count and interval steps in the Config
Relay, Config Model Publication and Config Network Transmit messages
use the lower 3 bits for the (re)transmission count and the higher 5
bits for the interval steps.
The figure 4.5 in section 4.3.2.16 of the Mesh Profile Bluetooth
Specification provides a good clarification.
This patch therefore fixes those messages for both the daemon and
configuration client parts.
Change-Id: I3473d43c2ca9a7de79faa93c6d0c6953377d0f31
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Wed, 27 Nov 2019 21:39:39 +0000 (13:39 -0800)]
mesh: Friendship clean-up and rewrite
Friendship support re-written such that it can now support multiple
nodes (on multiple mesh networks) as friends to remote Low Power Nodes
(LPNs). Validated to properly respond to Friend Requests when enabled,
and a hard coded Friend Queue size of 32 (FRND_CACHE_MAX).
Change-Id: Ia50bba5f000eb9bd30e5a7d54045a22d2978428a
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Wed, 27 Nov 2019 21:39:38 +0000 (13:39 -0800)]
mesh: clean-up Recieved Message debug output
For each received packet, this change limits outputing the encrypted
version once, and the decrypted version once per applicable local node.
Change-Id: Ib1d237e5aeef927a20343be2877a98bd3a36ed14
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Aurelien Jarno [Mon, 11 Nov 2019 20:20:09 +0000 (21:20 +0100)]
tools/mesh-cfgclient: add unbind command
This reuses the existing cmd_bind for both opcodes. cmds[] already has
code to handle it.
Change-Id: I7152d6170b73c6438caf72692564c87c08e8bcfe
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Aurelien Jarno [Mon, 11 Nov 2019 14:10:46 +0000 (15:10 +0100)]
mesh: fix sending messages to group addresses
When sending a message to a group address (either virtual or fixed), it
has to be sent OTA even if successfully enqueued to an internal model.
Change-Id: I29a5d4a6a8aee3c906c0f544c8b30f8a3c8e1f29
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Sat, 9 Nov 2019 00:07:00 +0000 (16:07 -0800)]
mesh: Fix clean up after AddNode method
This fixes the cleanup routine that is called after AddNode method
on org.bluez.mesh.Manager1 interface is complete: do not remove
the agent associated with the Provisioner (owner of Manager interface).
Change-Id: I8048b820a8e7f29e5e3d9c3001e6d19111af7733
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Aurelien Jarno [Thu, 7 Nov 2019 12:16:40 +0000 (13:16 +0100)]
tools/mesh-cfgclient: fix binaries and config name in README
This patch fixes the mesh-cfgclient README file:
- The configuration directory is meshcfg not mesh-cfgcli
- The home directory is looked up using $HOME not using /home/$USER
- The binary is called mesh-cfgclient, not mesh-config
- The -c option takes a config file path, not the directory where the
config file is stored.
Change-Id: I44b259458876d4d954346b57d43e5f77af3af018
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:29 +0000 (11:57 -0700)]
tools/mesh-cfgclient: Add README file
Change-Id: Ie3f292a17cbf2af897b079a8b08abd474ae16cab
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:28 +0000 (11:57 -0700)]
tools/mesh: add initial support for config storage
This adds support for storing the state of a mesh network.
The configuration is written out in JSON format. The initial
configuration file is generated automatically upon the
successful completion of "create" command form the main menu.
Change-Id: I2a8731d44110a83d6a620c6c6b28930fad599f38
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:27 +0000 (11:57 -0700)]
tools/mesh-cfgclient: Command line option for config
This adds "-c" option to specify full path to configuration file.
If the path is not provided, the application will attempt to open
in the following order:
1) $XDG_CONFIG_HOME/meshcfg/config_db.json
2) $HOME/meshcfg/config_db.json
if the file does not exist, it will be generated for a newly created
network, i.e., upon successful completion of "create" command.
Change-Id: Ica273fe3803a09ab8d54434dbbcb586c0620f16a
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:26 +0000 (11:57 -0700)]
tools/mesh-cfgclient: Add timeout for expected response
This adds a pending request queue for the issued commands awaiting
response from a remote config server. The tool forces "single-issue"
of a config command, i.e. only one command that has a specified return
type is allowed to be outstanding per a remote node address.
That is, if AppKeyAdd command to a node is pending response, the tool
disallows sending another AppKeyAdd, AppKeyUpdate or AppKeyDelete to
the same address until response timeout expires (notification will
be displayed).
The default response timeout is set to 2 seconds and is configurable
by "timeout" command.
Change-Id: I4611df3e02faf1a5310faec16cd714f7cde5d013
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:25 +0000 (11:57 -0700)]
tools/mesh-cfgclient: Add config menu key commands
This adds implementation for config client commands to add/update
NetKeys and AppKeys on a remote node.
Change-Id: I22eec3e0bcce0e6f1a2ccc4cd32970049279b8fa
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:24 +0000 (11:57 -0700)]
tools/mesh-cfgclient: Commands for Management iface methods
This adds complete list of commenads that excercise calls to
org.bluez.mesh.Manager1 methods:
"appkey-create": CreateAppKey()
"appkey-import": ImportAppKey()
"appkey-update": UpdateAppKey()
"appkey-delete": DeleteAppKey()
"subnet-create": CreateSubnet()
"subnet-import": SubnetImport()
"subnet-update": SubnetUpdate()
"subnet-delete": SubnetDelete()
"subnet-set-phase": SetKeyPhase()
"node-import": ImportRemoteNode()
"node-delete": DeleteRemoteNode()
Change-Id: I814e21afb5e4362b5512bbb865e0c7c1181d2802
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:23 +0000 (11:57 -0700)]
tools/mesh: move remote node processing to a separate file
This confines the functionality related to remote node
housekeeping into a separate file remote.c
Change-Id: I45230ddfff9b63c4c48a622559b039df11282f2a
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Anupam Roy [Tue, 17 Dec 2019 20:17:37 +0000 (01:47 +0530)]
mesh: Enable mesh-cfgclient build
Change-Id: Ie826322bfdac767c6ac4bb81a21ce71024ea1424
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:22 +0000 (11:57 -0700)]
tools: Add mesh-cfgclient tool
This adds a tool that allows to create mesh networks
opreating over advertising (PB-ADV) provisioning bearer.
The main commands are:
create - Create new mesh network with one initial node
discover-unprovisioned - Look for devices to provision
list-unprovisioned - List unprovisioned devices
provision - Initiate provisioning
list-nodes - List remote mesh nodes
Change-Id: I04a3b16038933e374e6447818952e9d7f55e7475
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:21 +0000 (11:57 -0700)]
tools/mesh: Move meshctl specific files to mesh-gatt
Change-Id: I856ab403aefe0058dc5543d8812fd37751a57e75
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 1 Nov 2019 18:57:20 +0000 (11:57 -0700)]
tools/mesh: Remove extra dependencies from agent.c
This removes dependency on glib and mesh/util.c.
Also, fixes few style glitches.
Change-Id: I74b63e7b293a34ed35e210cbc0e5dd2170b138a7
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Wed, 30 Oct 2019 06:27:49 +0000 (23:27 -0700)]
mesh: Add authorization checks for Manager iface methods
This adds a check for org.bluez.mesh.Manager1 interface calls to
validate that a message sender, i.e. thatt the sender is the original
owner of the node object generated on Attach() method call.
If the check fails, org.bluez.mesh.Error.NotAuthorized is returned.
Change-Id: Ibf46b6e27df02ce2a62a84f2f68c4e7639a0889f
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Anupam Roy [Tue, 17 Dec 2019 19:05:15 +0000 (00:35 +0530)]
mesh: Add ELL source and headers
Change-Id: I6600cf2244463c1e8371574ddeabaccb8bb9b3ef
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Marcel Holtmann [Thu, 31 Oct 2019 06:33:48 +0000 (07:33 +0100)]
mesh: Adjust for changed l_dbus_object_manager_enable parameters
Change-Id: I4921c56e642c16e2c1ef3f6a60ab8238e262419a
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Anupam Roy [Tue, 17 Dec 2019 18:05:20 +0000 (23:35 +0530)]
mesh: Add ELL changes
This patch refers following upstream patch from
ELL project.
=======================================================
commit
2088ddd7437f4ae544917f7634967746b36c3c5d
Author: Denis Kenzior <denkenz@gmail.com>
Date: Mon Oct 28 13:25:05 2019 -0500
dbus: Add ability to put ObjectManager on any path
========================================================
Change-Id: Ieacea5c8e1f898d9bc123c582feb9f09f9b36bf6
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Sun, 20 Oct 2019 21:29:49 +0000 (14:29 -0700)]
mesh: Fix reading/writing key indices
This fixes inconsistency when reading/writing NetKey and AppKey
indices to/from JSON config storage:
- when writing, convert an integer to hex string
- when reading, convert hex string to uint16 integer
Change-Id: Iaefe05c061f6c62d9fdc9835457e3ff75d84de1a
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Thu, 17 Oct 2019 21:55:00 +0000 (14:55 -0700)]
mesh: Implement AddAppKey and AddNetKey methods
This adds implementation for the following methods on
org.bluez.mesh.Node1 interface:
void AddNetKey(object element_path, uint16 destination,
uint16 subnet_index, uint16 net_index, boolean update)
void AddAppKey(object element_path, uint16 destination,
uint16 app_index, uint16 net_index, boolean update)
Change-Id: I31ebf4f126f02f7b16e10c718214e21abd9523af
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Mon, 14 Oct 2019 21:47:58 +0000 (14:47 -0700)]
mesh: Add provisioner confirmation
This adds codes to send a confirmationfrom provisioner's side
after receiving a callback from a provisioning agent.
Change-Id: Ibb0293d9736e8cb2b735cacce89d389831415bbd
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Luiz Augusto von Dentz [Wed, 16 Oct 2019 08:57:23 +0000 (11:57 +0300)]
unit: Make mesh tests conditional
Mesh code can be disabled with use of --disable-mesh.
Change-Id: Ie268fab60a5199d730561c95ba9fd9e2d87280b3
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Thu, 10 Oct 2019 22:58:52 +0000 (15:58 -0700)]
mesh: Secure Beacon - IV_Index/Key Refresh re-write
This is a major rewrite of Secure Network Beacon (SNB) handling
that includes:
* Seperating Key Refresh from IV_Index handling
This is a clearer handling of the two features. Although both features
are represented in SNB's, they run independantly.
* Creating a Seperate IV_Index initialization and updating state
distinct from the current values sent and received in SNBs.
If a restart occured during an IV Update procedure (96 hours long)
the IVU bit got lost, and Sequence number resetting was not done
correctly.
* Assuring that all Nodes handled by daemon receive each incoming
beacon. SNB handling previously stopped after the first node
successfuly handled it, although the SNB may be valid for many local
nodes.
Change-Id: Ia447518da6800f42b2c316406a4d48879a05a4de
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Fri, 11 Oct 2019 17:31:29 +0000 (10:31 -0700)]
unit: Fix valgrind errors in test-mesh-crypto
Two HEAP errors, and one error caused by missing checksum data.
Change-Id: I383a43b5f7669b8e7efb3dd0c7bd1142f916c46a
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Tue, 12 Nov 2019 14:54:25 +0000 (15:54 +0100)]
mesh: Fix ignored return value
This fixes the following build error when compiling in maintainer mode:
mesh/keyring.c: In function ‘finalize’:
mesh/keyring.c:142:8: error: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Werror=unused-result]
(void)write(fd, &key, sizeof(key));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Change-Id: I0fb908ee59ae2db2dcd682c342dd94107419ab89
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Thu, 3 Oct 2019 20:44:05 +0000 (13:44 -0700)]
unit: Add Mesh Crypto tests from Mesh Profile Spec
This unit test will be grown over time to include tests formed from the
sample data in the Bluetooth Mesh Profile specification (Currently at
version v1.0.1).
Currently it includes test cases for the following sets of sample data:
Sections 8.1.1-6
Sections 8.2.1-6
Sections 8.3.1-11
Section 8.4.3
Section 8.6.2
Change-Id: I70b90d83e997b2c711433a2a131a4cc6ef3bca3f
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Tue, 1 Oct 2019 18:51:08 +0000 (11:51 -0700)]
mesh: Fix segmentation fault on Join() call
This fixes the following segfault:
node_init_cb (node=0x0, agent=0x0) at mesh/mesh.c:359
reply = dbus_error(join_pending->msg, MESH_ERROR_FAILED,
user_data=0x5555555be170) at mesh/node.c:1760
dbus=<optimized out>) at ell/dbus.c:216
user_data=0x5555555a6e00) at ell/dbus.c:279
user_data=0x5555555a7ef0) at ell/io.c:126
at ell/main.c:642
at mesh/main.c:205
The fault was caused by the premature deletion of preserved state.
This moves setup of disconnect watch for the application calling the Join()
method into the node_init_cb(), after a temporary node has been
successfully created.
Change-Id: Ib564cf87d4f09f0713b40a37bf91bff2219a30d1
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Thu, 3 Oct 2019 20:07:47 +0000 (13:07 -0700)]
mesh: Align appkey_packet_decrypt with dev and virt variants.
Move appkey_packet_decrypt to mesh/model, rename it to
app_packet_decrypt, make it private and change arguments to be aligned
with other decryption functions.
Also, simplify the implementation using an inline loop, removing the
need of mod_decrypt struct.
Change-Id: I0eb810553d8947a9cbeaf4469104ba69f31579e8
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Thu, 3 Oct 2019 20:07:46 +0000 (13:07 -0700)]
mesh: Normalize Access Key AID and Index naming in models
After
8f0839a1c46300ceb1b129d17a3bff446ff79d08, mesh/crypto uses _aid
suffix for keys' AID property, so let's change the wording in mesh/model
as well.
Change-Id: Ia4cb39f7b0b4cabb62ef097288ef7d6734476c8b
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Thu, 3 Oct 2019 20:07:45 +0000 (13:07 -0700)]
mesh: Remove unused defines
Change-Id: Ide8c43fde71bd649a8624b2139860e98bc26d91f
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Thu, 26 Sep 2019 18:14:44 +0000 (11:14 -0700)]
mesh: Fix Key Ring permissions for local nodes
We do *not* automatically create populated key rings for imported or
joined nodes, but we also do not *forbid* any node from adding a key
in it's possesion to the local key ring.
There are two (known) use cases for Import()
1. Node previously existed on a different physical piece of hardware,
and is being migrated to this daemon.
2. Node was newly provisioned Out-Of-Band, and this is the net result
of the provisioning.
In *neither* case is it a given that the Node should be able to
provision another node (the effect of adding the Net Key to the key
ring). In neither case is it a given that the Node should be able to
modify it's own Config Server states (the effect of adding it's
Device Key to the key ring).
Change-Id: Ida5adbedbb6757a36a7f0b8c803fe66e4c7d4cf0
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Thu, 26 Sep 2019 18:14:43 +0000 (11:14 -0700)]
mesh: Explicit Remote/Local Device key usage
When sending or receiving Device Key (privileged) mesh messages, the
remote vs local device key must be specified. This allows Apps to
specify Key Ring stored device keys, and sanity checks that the correct
key exists before allowing the transmission. Loopback messages to local
servers *must* use keys from the Key Ring to indicate privilege has been
granted.
Change-Id: I9c26c6b18f2ea419af568b4402acf8156a561dd2
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Thu, 26 Sep 2019 18:14:42 +0000 (11:14 -0700)]
mesh: Add remote boolean to DevKey transactions
DevKey operations require authorization on the part of the applications
making the requests. Messages to state changing Servers should use
device keys from the remote (destination) to demonstrate authorization.
Change-Id: Ie586b3aa33386e170ef9f3d638fe664179aeadf3
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Tue, 1 Oct 2019 16:27:28 +0000 (09:27 -0700)]
mesh: Make mesh-config API more consistent
This changes the prototypes for mesh_config_model_binding_add() and
mesh_config_model_binding_del() to take the element's address as input
parameter instead of the element's index. The change aligns the API
with other functions that handle storage of model states.
Change-Id: I032e0b52da2073a1823e743ffd2c5404bfeda722
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Fri, 6 Sep 2019 16:24:34 +0000 (09:24 -0700)]
mesh: Automate AppKey update on KR phase 2-->3-->0
Designed so that if an unexpcted abort() occurs, the bound NetKey remains
in state 2 or 3. If successful, the NetKey is set to Phase 0, and all
bound AppKeys are in their correct state.
Change-Id: Id08b48eca43f0f46f72ab1397e2444d74e7d97ae
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Sat, 7 Sep 2019 06:07:59 +0000 (23:07 -0700)]
mesh: Handle messages sent to a fixed group address
This handles the case when an inbound message is addressed to
a fixed group, i.e., all-proxies, all-friends, all-relays and
all-nodes. The message is delivered to a primary element only,
and, with the exception of all-nodes case, if the corresponding
feature is enabled on the node.
Change-Id: Ibdc2df9d180b902ce4089d2fd16f2f5d0dfbabb0
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Brian Gix [Fri, 30 Aug 2019 19:15:27 +0000 (12:15 -0700)]
mesh: test AEAD at startup to check kernel support
One time test at startup to ensure either kernel version v4.9 or later,
*or* that required AES-CCM support has been back-ported. If support not
there, daemon will run without providing D-Bus service or attaching to
controllers (prevents systemd thrashing).
Change-Id: Id54fe45cf7c1c3c1ce52a91d8f515dbd2e868a09
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Thu, 29 Aug 2019 20:22:45 +0000 (13:22 -0700)]
mesh: Add closedir() of config directory after opendir()
This adds missing closedir() call to accompany opendir() in
mesh_config_load_nodes().
Also, fixes confusing mix of variable names.
Change-Id: Ic945073e2076cb7ad19ee8b5923abeae5e00b9aa
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Tue, 20 Aug 2019 07:58:52 +0000 (09:58 +0200)]
mesh: Show error message when io initialization fails
Change-Id: I589800ccb7c4f5028ff3c57a6b6b8caab33a1180
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Wed, 28 Aug 2019 07:52:30 +0000 (09:52 +0200)]
mesh: Add org.bluez.mesh.Node1.Addresses property
To enable applications to talk to the local node's internal models, it's
useful to know its unicast addresses. They are known after CreateNetwork
and Import, but after Join, the allocated address is only known to the
provisioner.
This patch enables read only access to list of allocated unicast
addresses.
Change-Id: Icb20348a445bb4ea450292f6605a4a29ebadd574
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Wed, 28 Aug 2019 07:52:29 +0000 (09:52 +0200)]
mesh: Implement properties on org.bluez.mesh.Node1 interface
Change-Id: I548b038d2f9016af0cf224e949940de768667e03
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Fri, 16 Aug 2019 07:36:27 +0000 (09:36 +0200)]
mesh: Fix handling of Config Relay Set message
Change-Id: I226b1a406802b6569fb6e0e48b4050f172e2ed67
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Mon, 12 Aug 2019 06:25:58 +0000 (23:25 -0700)]
mesh: Move commonly used constants into mesh-defs.h
This consolidates definitions of commonly used constant values
into a single header file. The constant values are based on mesh
specification, plus a few internal utility constants (masks, etc.)
Also, removes redundant redefinition maximum message length.
Change-Id: Ie6c8d26b72f7ff80078a9f96119f37508d1fdc72
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Rafał Gajda [Mon, 12 Aug 2019 12:06:56 +0000 (14:06 +0200)]
mesh: Remove double initialisation and fix typo in log
Change-Id: I7d9414cb5fec8754b27dbc0eaefc9296094010a9
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Rafał Gajda [Mon, 12 Aug 2019 12:08:25 +0000 (14:08 +0200)]
mesh: Fix model publication get
Change-Id: I9537a38dbaa60fab422bf06be59f03d831c9cf99
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Wed, 7 Aug 2019 09:58:31 +0000 (11:58 +0200)]
mesh: Move sequence number overcommit to mesh-config-json
This confines sequence overcommit logic in mesh-config-json, as other
storages might use a different mechanism to ensure reliability.
Also, refactored logic to calculate overcommit value to avoid division
by zero when messages are sent too fast.
Change-Id: Iee73274ff7c5578f1dd07619d0a08e63cb0751f8
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Wed, 7 Aug 2019 20:06:36 +0000 (13:06 -0700)]
mesh: Fix double free of a pointer in mesh-io-generic
This fixes a crash in bluetooth-meshd due to freeing the same pointer
twice. The fix is to initialize the address of freed TX buffer to NULL.
Change-Id: I73ba5d09493b888f12b11569bdf0d0deebbf9a28
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Mon, 5 Aug 2019 07:54:58 +0000 (09:54 +0200)]
mesh: Fix storing network retransmission in config
Change-Id: I20a87d75ccbbefecfa5030a712cd949296f9227e
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Wed, 31 Jul 2019 07:16:47 +0000 (09:16 +0200)]
mesh: Implement Import() D-Bus API of org.bluez.mesh.Network1 interface
This method allows local nodes to be imported from an external
provisioning database, enabling applications to create mesh nodes
without using provisioning procedure.
The procedure is similar to provisioning procedure, but all data
exchange happens over D-Bus.
Change-Id: I1beaaefe1b07466130a961aac66fd373799c027d
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Wed, 31 Jul 2019 07:16:46 +0000 (09:16 +0200)]
mesh: Add documentation for Import() D-Bus API
This replaces previously specified ImportLocalNode() call
Change-Id: I1b0da2fdf68d45cef355aed9976130be55cb5c31
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Jakub Witowski [Wed, 31 Jul 2019 07:16:45 +0000 (09:16 +0200)]
mesh: Extract read_* functions in mesh-config-json
This is a small improvement of read_node function readability.
Change-Id: I9c9194b66c95462f776724fe47fcccbfa3d673c6
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Fri, 26 Jul 2019 06:36:06 +0000 (08:36 +0200)]
mesh: Check that config server is present in primary element
This verifies that Config Server model is supported by element #0, and
is not supported by any other element.
Change-Id: I797fa781a64c7f99754e8c609aee5ccb5a20f9a9
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Fri, 26 Jul 2019 06:36:05 +0000 (08:36 +0200)]
mesh: Check that element indexes are consecutive
Change-Id: I57cbf929ce5e2af1a1ba15ce1a78b668d30382fb
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Fri, 26 Jul 2019 06:36:04 +0000 (08:36 +0200)]
mesh: Keep element and model lists sorted and unique
This keeps composition data unchanged even if elements or models are
registered in a different order.
Change-Id: Ic918001bc152e92ba6f08274159d81b9a65b20b1
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Fri, 26 Jul 2019 06:36:03 +0000 (08:36 +0200)]
mesh: Validate application by comparing composition data
Instead of validating application by enumerating D-Bus objects, create a
temporary node instance and check if composition data generated for the
temporary matches the node loaded from storage.
This allows node validation logic (primary element, mandatory models etc)
to be confined in node_generate_comp() function.
This also streamlines code implementing Attach(), Join() and
CreateNetwork() calls.
Change-Id: I82c634a32a89c446937a7d58ff4f9a73da339aa3
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Fri, 26 Jul 2019 06:36:02 +0000 (08:36 +0200)]
mesh: Convert void pointers to anonymous unions in managed_obj_request
Change-Id: I245a62465bac7f093524bb041a2e034d9bdfad0a
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Thu, 25 Jul 2019 18:31:45 +0000 (11:31 -0700)]
test/test-mesh: Initialize required properties
This initialized required "Models" and "VendorModels" properties
wheher the actual models exist or not, according to the mesh-api.txt.
In case when an element does not contain either SIG defined models or
vendor defineed models, the corresponding properties should contain
empty arrays.
Change-Id: Ica2e4bab99f6da827997832a29afe4f2079c0561
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Thu, 25 Jul 2019 18:26:12 +0000 (11:26 -0700)]
mesh: Fix storage init of Friend and LPN features
This fixes a typo in mesh-config-json.c when Friend feature
was initialized twice and LPN was not initialized at all.
Change-Id: I69b79713e31667210a515821635c2acfef003739
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Inga Stotland [Fri, 26 Jul 2019 02:03:10 +0000 (19:03 -0700)]
doc/mesh-api: Restore properties in mesh node hierarchy
This restores Features, Beacon, BeaconFlags, IvIndex and
SecondsSinceLAst heard properties under the
org.bluez.mesh.Node1 interface.
Change-Id: I27dd9dd8544c973825848ac089c38663585e94b1
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
Michał Lowas-Rzechonek [Fri, 19 Jul 2019 12:15:59 +0000 (14:15 +0200)]
mesh: Check address range passed to ImportRemoteNode
+changed "not authorized" error to "invalid args" when managing device
key for local address range
Change-Id: I17f83a7b0eed3321d67cb4394204d2978e4b05d8
Signed-off-by: Anupam Roy <anupam.r@samsung.com>