| 06cf0fd1 |
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 |
Brian Gix |
6 years ago |
2 files, +2010, -0 |
| d6a0539d |
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. |
Inga Stotland |
6 years ago |
1 file, +5, -2 |
| 37bbe30c |
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. |
Michał Lowas-Rzechonek |
6 years ago |
3 files, +89, -105 |
| 45beec16 |
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. |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +8, -7 |
| 79fd24af |
mesh: Remove unused defines |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +0, -10 |
| c7560572 |
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). |
Brian Gix |
6 years ago |
2 files, +0, -20 |
| 0cdcff2f |
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. |
Brian Gix |
6 years ago |
2 files, +22, -14 |
| c8cd5b04 |
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. |
Brian Gix |
6 years ago |
1 file, +14, -3 |
| 550dc90d |
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. |
Inga Stotland |
6 years ago |
3 files, +30, -22 |
| f8225620 |
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. |
Inga Stotland |
6 years ago |
3 files, +206, -3 |
| 6de4bdb9 |
Release 5.51 |
Marcel Holtmann |
6 years ago |
2 files, +16, -1 |
| 8ab0f188 |
build: Update library version |
Marcel Holtmann |
6 years ago |
1 file, +1, -1 |
| 1955e725 |
build: All EXTRA_DIST need to be unconditional |
Marcel Holtmann |
6 years ago |
1 file, +3, -3 |
| 2de05555 |
monitor: Decode L2CAP channel mode
This decodes the L2CAP channel mode of each frame:
> ACL Data RX: Handle 3585 flags 0x02 dlen 12
Channel: 64 len 8 [PSM 127 mode Basic (0x00)] {chan 0}
< ACL Data TX: Handle 3585 flags 0x00 dlen 9
Channel: 65 len 5 sdu 3 [PSM 127 mode LE Flow Control (0x80)] {chan 1} |
Luiz Augusto von Dentz |
6 years ago |
1 file, +35, -10 |
| 1d55ac9e |
monitor: Add proper decoding of LE flowctl mode
This enables decoding LE flowctl mode properly and print out the
SDU. |
Luiz Augusto von Dentz |
6 years ago |
1 file, +63, -51 |
| e60a6b7d |
gatt: Fix assuming writes to CCC will always contain 2 bytes
The spec actually allows writing just 1 byte:
BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 3, Part F
page 2320:
'If the attribute value has a fixed length and the Attribute Value
parameter length is less than or equal to the length of the attribute
value, the octets of the attribute value parameter length shall be
written; all other octets in this attribute value shall be
unchanged.' |
Luiz Augusto von Dentz |
6 years ago |
1 file, +18, -15 |
| afe19681 |
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. |
Brian Gix |
6 years ago |
3 files, +79, -33 |
| 1368a609 |
doc: Remove uneeded dbus API for App Key Refresh |
Brian Gix |
6 years ago |
1 file, +0, -19 |
| 7a5bccba |
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. |
Inga Stotland |
6 years ago |
2 files, +33, -1 |
| f3cbe660 |
shared/shell: fix help message typo |
Ronan Pigott |
6 years ago |
1 file, +1, -1 |
| 3825bc7f |
build: install zsh completions |
Ronan Pigott |
6 years ago |
2 files, +17, -0 |
| 760640a0 |
completion: add bluetoothctl zsh completions
This zsh compdef provides completions for the bluetoothctl command.
It has been modified from version 1 of this patch to get the command
names and descriptions from the newly introduced --zsh-complete.
It utilizes the output of `bluetoothctl devices` or
`bluetoothctl controllers` to provide a descriptive completion menu
in those contexts.
e.g.
$ bluetoothctl connect <TAB>
04:52:C7:0C:D4:A7 -- Bose QuietComfort 35
40:4E:36:D9:8F:28 -- Pixel 2
A4:38:CC:20:5D:E0 -- Pro Controller |
Ronan Pigott |
6 years ago |
1 file, +98, -0 |
| cb0215dd |
shared/shell: add --zsh-complete option
This adds a new long form option --zsh-complete to provide all available
commands in an output format suitable for parsing by zsh or other shell
completion scripts.
Invoke like: `bluetoothctl --zsh-complete help`
There is no corresponding short form option. |
Ronan Pigott |
6 years ago |
1 file, +26, -0 |
| d45b4ac3 |
client/main: add help option for available args
This option exists to facilitate external completion of commands that
have specially defined arguments. It effectively adds two new commands
to bluetoothctl with the following output:
$ bluetoothctl agent help
on
off
DisplayOnly
DisplayYesNo
KeyboardDisplay
KeyboardOnly
NoInputNoOutput
$ bluetoothctl advertise help
on
off
peripheral
broadcast
Shell completion scripts can then parse this output to provide
completions for those commands. |
Ronan Pigott |
6 years ago |
1 file, +7, -0 |
| e8b9e6e3 |
shared/gatt-client: Automatically add CCC when discovering
The spec mandates that a CCC exists if either notify or indicate
property is marked:
BLUETOOTH CORE SPECIFICATION Version 5.1 | Vol 3, Part G page 2357
"If set, the Client Characteristic Configuration Descriptor shall
exist." |
Luiz Augusto von Dentz |
6 years ago |
1 file, +25, -0 |
| f62350b7 |
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). |
Brian Gix |
6 years ago |
3 files, +62, -0 |
| 354d75d0 |
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. |
Inga Stotland |
6 years ago |
2 files, +28, -22 |
| 50f58275 |
mesh: Show error message when io initialization fails |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +4, -1 |
| 3d7d12ee |
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. |
Michał Lowas-Rzechonek |
6 years ago |
2 files, +28, -0 |
| f370e729 |
mesh: Implement properties on org.bluez.mesh.Node1 interface |
Michał Lowas-Rzechonek |
6 years ago |
3 files, +109, -1 |
| 2978d083 |
tools: Tweak script to get Company IDS from SIG
The Bluetooth SIG website requires a trailing "/" on the web page for
the curl command to work. |
Brian Gix |
6 years ago |
1 file, +1, -1 |
| 19329b3f |
client: Fix not able to select attributes if parent exists
When selecting attributes by UUID the code was not checking attributes
that are not a children of the current selected attribute. |
Luiz Augusto von Dentz |
6 years ago |
1 file, +1, -1 |
| 31d74307 |
client: Allow UUID 16 bits on select-attribute
This allow passing UUIDs on 16 bits format. |
Luiz Augusto von Dentz |
6 years ago |
1 file, +3, -0 |
| a29d610d |
mesh: Fix handling of Config Relay Set message |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +1, -2 |
| 3658332b |
gitignore: Ignore mesh service file |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +1, -0 |
| fb5c57bc |
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. |
Inga Stotland |
6 years ago |
5 files, +39, -43 |
| b94453eb |
mesh: Remove double initialisation and fix typo in log |
Rafał Gajda |
6 years ago |
1 file, +1, -2 |
| e71112ad |
mesh: Fix model publication get |
Rafał Gajda |
6 years ago |
1 file, +1, -1 |
| f7ca9fef |
test: Add example-player
This adds an example of registering a player with use of
RegisterApplication. |
Luiz Augusto von Dentz |
6 years ago |
1 file, +203, -0 |
| 9d54c293 |
test: Add example-endpoint
This adds an example of registering an endpoint with use of
RegisterApplication. |
Luiz Augusto von Dentz |
6 years ago |
1 file, +186, -0 |
| 01f8fc29 |
media: Add implementation of RegisterApplication
This implements RegisterApplication registering any proxy which does
implement either MediaEndpoint or MediaPlayer. |
Luiz Augusto von Dentz |
6 years ago |
1 file, +482, -3 |
| 65bd68b9 |
doc/media-api: Add RegisterApplication method
This uses application ObjectManager to discover the MediaEndpoint and
MediaPlayer object of an application and deprecates the use of
RegisterEndpoint and RegisterPlayer. |
Luiz Augusto von Dentz |
6 years ago |
1 file, +20, -0 |
| bdd0e6c5 |
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. |
Michał Lowas-Rzechonek |
6 years ago |
5 files, +78, -75 |
| 7de0eb56 |
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. |
Inga Stotland |
6 years ago |
1 file, +9, -1 |
| e4cec5a9 |
mesh: Fix storing network retransmission in config |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +1, -1 |
| 37cf5ad5 |
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. |
Michał Lowas-Rzechonek |
6 years ago |
3 files, +204, -3 |
| ee566c20 |
mesh: Add documentation for Import() D-Bus API
This replaces previously specified ImportLocalNode() call |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +42, -15 |
| d68a2253 |
mesh: Extract read_* functions in mesh-config-json
This is a small improvement of read_node function readability. |
Jakub Witowski |
6 years ago |
1 file, +68, -15 |
| b53bca54 |
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. |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +8, -0 |
| 38608db6 |
mesh: Check that element indexes are consecutive |
Michał Lowas-Rzechonek |
6 years ago |
1 file, +9, -0 |