This patch fixes a potential issue in which the signed return value
from the network driver send routine is returned from a caller that
has an unsigned return type. The meaning of a negative return value
from the network driver send routine is that an error occurred. A
return value of 1 means that the packet was sent successfully. A
return value of 0 means that the packet could not be sent. Thus, this
patch converts negative return values from the network driver send
routine to a return value of 0 from the caller.
Change-Id: If5cbecb18e514fd976200ecc45782d2a9e1f300f
Signed-off-by: Michael LeMay <michael.lemay@intel.com>
This make use of bt_uuid_to_str to when printing UUID values, to make it
simpler when it is just going to print so the patch introduces a new
function that does the conversion in place using a static variable.
Change-Id: Idfedf05a5ad201653fff2e01387f046cd5647c83
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This allow sending direct notification to a specific peer without
using CCC which is allowed by the spec:
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part F page 507
3.4.7.1 Handle Value Notification
A server can send a notification of an attribute’s value at any time.
Change-Id: Ieff29216cb9ba197c0da92d7b22b26e63101cfa8
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This patch cleans up the code a bit. BT_ATT_MAX_LE_MTU defines
MTU that can be used over LE ATT.
Change-Id: Ie433f33f3bcba3275f51e1bea826bb0fd061c45f
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
If attribute requires authentication to be read or written,
we check if current security level (should be BT_SECURITY_HIGH
or higher) allows to perform such operations on this attribute.
Change-Id: Ibba542ac96af00722370eba77d6c929cda520fd8
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
Always set MITM in AuthReq if local IO capabilities allow it.
This match Security Request behaviour with Pairing Request.
Change-Id: I1734df6661bada296b088cc762a871c443b9e5d1
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This adds an option to enable L2CAP dynamic channel support, fixed
channels are not affected by it.
Change-Id: If36bece46b7b94142ea1ac976b878d1b5ae6a578
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This refactorer fixed channel data so that the channel itself carries
any extra context necessary.
Change-Id: Iea0f29fb7913a29dccdcbef72d92ec4cf4711bf3
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
From Core Spec Vol 3 Part H 2.3.5.1:
"If both devices have not set the MITM option in the Authentication
Requirements Flags, then the IO capabilities shall be ignored and the Just
Works association model shall be used."
Change-Id: I450f8ab5661382b787fe9742937d47df62fb6cfa
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This split L2CAP API so that server API is available to applications
while the rest of the API is keep internal to the stack.
Change-Id: I031926ff906ce100684fba0947b2e9eb2c8fcaeb
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
The ret variable in net_tx_fiber was declared as unsigned but assigned
larger signed values and treated as signed. This patch fixes that
issue.
Change-Id: I2e33f6115a3defe45f86b5f6c7dc13175ec26827
Signed-off-by: Michael LeMay <michael.lemay@intel.com>
Sanitycheck fails due to compile time warning.
Change-Id: I0b9e95d33e8298a15e09ea2532e335bdc0979d09
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
The function that resolves the source IP address we need to
use when sending a test network IP packet in Linux host is
refactored a bit. No functionality changes here.
Change-Id: I0f9bc79a9a7f01b382116b969739d7ad3f671751
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If Security Request with unsupported flags is received just ignore them
instead of repairing. This is already done for Pairing Request but was
missing in Security Request.
Since we are still on 4.0 just remove any new bits definitions and update
BT_SMP_AUTH_MASK accordingly.
This fix constant repairing (instead of just enabling encryption) with
peripherals that support LE Secure Connections.
Change-Id: Ic053590755e97eadbcadbea788670c050f895d32
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
To have same logs in att_mtu_req and att_mtu_rsp.
Change-Id: Ic820f989d0928089d5b0a6bce21e5e1c369eb026
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
According to the Core Spec 4.2 Vol 3 Part G
The server shall respond with the Server Rx MTU parameter set to the
maximum MTU that this server can receive.
Once the messages have been exchanged, the ATT_MTU shall be set
to the minimum of the Client Rx MTU and Server Rx MTU values.
bt: att_mtu_req (0x0010fd04): Client MTU 672
bt: att_mtu_req (0x0010fd04): Server MTU 65
bt: att_mtu_req (0x0010fd04): Negotiated MTU 65
bt: att_mtu_req (0x0010fd04): Client MTU 42
bt: att_mtu_req (0x0010fd04): Server MTU 65
bt: att_mtu_req (0x0010fd04): Negotiated MTU 42
Change-Id: I13f2f0fc99e99d8188ed15bf7972a9b892612e11
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
According to the Core Spec we shall respond to Exchange MTU Request
with MTU parameter set to the maximum MTU that we can receive.
As a Client, we shouldn't send an error if Server's Rx MTU exceeds
517 bytes. Whe should respond with our maximum MTU, because
after negotiation is done, ATT_MTU shall be set to the
minimum of the Client Rx MTU and Server Rx MTU values.
Error will be sent only in case of Rx MTU lower than LE default
ATT_MTU (23).
Change-Id: I9fa4f3fdb9b8129d52fc7b2557129c0894e5d201
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
BT_* log macros don't add new lines at the end of log message.
Change-Id: I4836f58e45453697a87c0a2b290014083b8e229a
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
According to Core 4.2 Vol 3 Part F 3.3, Commands have 6th bit
(startting from 0) set in ATT PDU. If the bit is set, no response shall be sent.
Change-Id: I63f7303e1cf2f9479dae129cdf5d31d7aadc739d
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
If pairing failed before encryption was enabled or if enabling
encryption failed (eg due to remote device missing LTK) required
security level should be reset.
Otherwise it is not possible to re-try with setting security level.
Error reporting to application is still missing though.
Change-Id: I085e3ee116bd04304a4c4563cc40f9d40262447e
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
According to Core Specification "An Error Response shall be sent by
the server in response to the Read Multiple Request if insufficient
authentication, insufficient authorization, insufficient encryption
key size is used by the client, or if a read operation is not permitted
on any of the Characteristic Values. The Error Code parameter is set as
specified in the Attribute Protocol."
If any handle used by client is invalid we should return and error.
Change-Id: I5489ce6284531822676a63edf13db23289866102
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This patch fixes the issue with 128bit uuid descriptors discovery.
Data from Find Information Response were parsed improperly,
because length took into account the size of pointer to info data,
not data itself.
Change-Id: Ifad0110705bacc3c757a91ebbd97af5ba93897d9
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
Factor out role dependent code to helper. This allows to get rid of
'done' label without decresing code readibility. Allows to cleanly
build with CONFIG_BLUETOOTH_PERIPHERAL and CONFIG_BLUETOOTH_SMP
defined.
Change-Id: I33606955ae8b1c75385e2eee89620761d59f0108
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
It is possible that slave sends subsequent Security Request while
link is already encrypted. One example is that current LTK is
unauthenticated and slave wants to increase security with MITM
protection.
Change-Id: I5f079e6140a5912443f770ba2c7cabeffcecdf2b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If security level changed due to key refresh application was
not notified about it.
Change-Id: I550095608da6d9bfb885ff2fbf62d9edc0429d06
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This fix crash due to calling auth callback from wrong pointer.
get_io_capa was using bt_smp_io_capa instead of structure provided
in argument. This resulted in checking NULL pointer for provided
callbacks. By coincident this always returned
BT_SMP_IO_KEYBOARD_DISPLAY (first 8 bytes in memory were non-zero)
and resulted in calling callback from NULL address if application
didn't provided passkey_display or passkey_entry callbacks.
btshell>
bt: bt_smp_connected (0x00115360): conn 0x00111788 handle 73
bt: bt_att_connected (0x00115360): conn 0x00111788 handle 73
bt: bt_gatt_connected (0x00115360): conn 0x00111788
Connected: 20:68:9D:60:A1:E4 (public)
bt: bt_smp_recv (0x00115360): Received SMP code 0x01 len 7
bt: smp_pairing_req (0x00115360):
bt: smp_init (0x00115360): prnd 8773a11cde889e1b7397064527a5469d
***** Unhandled exception/interrupt occurred! *****
Current thread ID = 0x00115360
Faulting instruction address = 0x00111788
Fatal fiber error! Aborting fiber.
Change-Id: Ic297603a3fbc8bd741d5110c01bef61f7dda1d6f
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If pairing was finished it is perfectly fine for remote to send
another SMP PDU and start new pairing.
To make code simpler just use smp_reset() to set SMP into correct
state.
Change-Id: I8d04a5f0ed78c01ef4caca89f02a1ac5fe950e90
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Adding convenience scripts that help user when running socat,
radvd and tunslip6 processes. These helper scripts restart
corresponding processes when qemu stops. This way end user
does not need to manual restart the utility processes.
Change-Id: I2e8eb15ee0ffe2ac8f1cedf4431cf8b09fcbbee5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
User can set the source IP address of the sent network packet
in dtls-client by using -b command line option. This helps if
the -i option picks up wrong address from network interface.
Change-Id: I8c26f1a14de2394085dea1d6008eb758a5ce7ad1
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This allows to pair with devices that use reduced encryption key size.
Encryption key size is stored with keys for future use. LTKs are kept
in full form (16 bytes) and are reduced only when used.
As master:
< ACL Data TX: Handle 64 flags 0x00 dlen 11
SMP: Pairing Request (0x01) len 6
IO capability: NoInputNoOutput (0x03)
OOB data: Authentication data not present (0x00)
Authentication requirement: Bonding, No MITM, Legacy,
No Keypresses (0x01)
Max encryption key size: 16
Initiator key distribution: EncKey Sign (0x05)
Responder key distribution: EncKey IdKey Sign (0x07)
> ACL Data RX: Handle 64 flags 0x02 dlen 11
SMP: Pairing Response (0x02) len 6
IO capability: KeyboardDisplay (0x04)
OOB data: Authentication data not present (0x00)
Authentication requirement: No bonding, No MITM, Legacy,
No Keypresses (0x00)
Max encryption key size: 7
Initiator key distribution: <none> (0x00)
Responder key distribution: <none> (0x00)
...
< HCI Command: LE Start Encryption (0x08|0x0019) plen 28
Handle: 64
Random number: 0x0000000000000000
Encrypted diversifier: 0x0000
Long term key: df3cff52a981d6000000000000000000
As slave:
> ACL Data RX: Handle 64 flags 0x02 dlen 11
SMP: Pairing Request (0x01) len 6
IO capability: KeyboardDisplay (0x04)
OOB data: Authentication data not present (0x00)
Authentication requirement: No bonding, No MITM, Legacy,
No Keypresses (0x00)
Max encryption key size: 7
Initiator key distribution: <none> (0x00)
Responder key distribution: <none> (0x00)
< ACL Data TX: Handle 64 flags 0x00 dlen 11
SMP: Pairing Response (0x02) len 6
IO capability: NoInputNoOutput (0x03)
OOB data: Authentication data not present (0x00)
Authentication requirement: No bonding, No MITM, Legacy,
No Keypresses (0x00)
Max encryption key size: 16
Initiator key distribution: <none> (0x00)
Responder key distribution: <none> (0x00)
...
> HCI Event: LE Meta Event (0x3e) plen 13
LE Long Term Key Request (0x05)
Handle: 64
Random number: 0x0000000000000000
Encrypted diversifier: 0x0000
< HCI Command: LE Long Term Key Request Reply (0x08|0x001a) plen 18
Handle: 64
Long term key: 701b431a9e17bb000000000000000000
Change-Id: Ibc70aa01c040aff0d39410d273d6880d35aa5ae0
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This is in preparation for supporting different encryption key sizes.
Change-Id: I36ed61a35fbe4988ce863127ae318c63f9298dd3
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This adds bt_l2cap_server_register which can be used to register a
server to a given PSM.
Change-Id: I301dc26a0ed881230568aa0fdd6cc5d0d6dd814a
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Change all the Intel and Wind River code license from BSD-3 to Apache 2.
Change-Id: Id8be2c1c161a06ea8a0b9f38e17660e11dbb384b
Signed-off-by: Javier B Perez Hernandez <javier.b.perez.hernandez@linux.intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Moving the includes to include/tinycrypt. This will help make it
clear when looking at source files where each header originated from.
Change-Id: Ic79978da286f9c288868074a69262d89488925b8
Signed-off-by: Dan Kalowsky <daniel.kalowsky@intel.com>
If bt_conn_security failed required security level should be set
back to current security. Otherwise it might not be possible to
try later on with lower security.
Change-Id: I3ad7151f2cdff15147b9948bbdab516b8cc16ce2
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This fixes the bug that affected pairing as peripheral.
With this patch pairing flag is cleared and timeout timer stops
if all keys has been distributed.
Change-Id: If7575197d5a42a0ca5bb158ea5607934e92abb81
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
Rename bt_conn_connected to notify_connected. This will avoid
confusion with BT_CONN_CONNECTED state name. Same goes with
bt_conn_disconnected.
Change-Id: I6e9d50016036b30345068ef2a6bb556c45d7dd06
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Delaying only connected callback resulted in races where security
or pairing callback could be called before bt_conn connected.
Currently only procedure that relies on read features is connection
parameters update and that should not conflict with other traffic.
Change-Id: I835535abbff21ea8d86b728f5681f90ef9fd337c
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Print current number of free MAC buf count when allocating
or freeing mbufs.
Change-Id: I3c434671b28ac4b4d8c8d968899e891391d849d9
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If mbuf could not be allocated, then do not try to free it.
Change-Id: Idf48f9f2eda260b8560a5388c920a9d9a3ef8f16
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The stack usage was not printed often enough when receiving
and sending 802.15.4 packets.
Change-Id: I61a4b6acdc10cb1681e2aeb63cb6af7a35834dff
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The TX stack usage data and statistics were only printed
if there was an error. This happened very seldom which was
not very helpful.
Change-Id: I059cf9ee3449e5b39d872ef6026df968d86d0209
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If IPv6 packet length is incorrect, then print the actual
length values for debugging aid.
Change-Id: I20d4d73efd1e0103f670e8e53ba6417a4795ab80
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If one has 802.15.4 network and tries to compile without
6lowpan, then print warning as that combination is not a
usable network setup. It can be used for testing but not
for real live setup.
Change-Id: I3b540686c8556ed0306723834ca38633aff63165
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If the fragmentation header is missing, then do not discard
the message but pass it to upper layers as is. The fragmentation
header might be missing if the packet fits into 128 bytes.
Change-Id: I39d29e7ad80be5531262a0ac413d8137da0c64f5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
No need to compile sicslowmac.c if we do not have 6lowpan.
Change-Id: I8624089f4b360fb12ef1c4a6d7104f0b190f048c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This collects received statistics from layer 2 (MAC).
Change-Id: Ie869c1209bd06f0a5ccad5094b0cafe5fe74d787
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This collects byte counts from layer 2 (MAC).
Change-Id: I16c25f7ae8b9aa485e3c5f1573154cd2270cff93
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The statistics counts were not initialized so the numbers were
mostly bogus.
Change-Id: If4c33701fbdc4d4603d708c69950a8a18f8eaeaf
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
There is no need to define keys types if SMP is disabled.
Change-Id: If6b653906df4623f440b258afd574722498109d0
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Gather central and peripheral related code togerther so it can be
placed under single blocks of ifdefs.
Change-Id: Ia5fe45b86173b0e647b582bf2cd96fc7c9cb7feb
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Gather client related code togerther so it can be placed under
single blocks of ifdefs.
Change-Id: I6f2f5a06c0308b885d01fc6af300b162baec0823
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Gather SMP related code together so that it can be placed under
single blocks of ifdefs.
Change-Id: I3c2e71243b694e9984ae8e88025a6ead7969e020
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This fix a regression that cause identity address to be passed to
LE Create Connection HCI command. This was affecting connecting to
iPhone. Regression was introduced in beaf30fda7de1476c742a
(Bluetooth: Simplify check_pending_conn function).
check_pending_conn now takes two addresses: ID and real address.
ID is used to find connection object and real is used in LE Create
Connection HCI command. If no IRK is present both addresses have
same value. This is to avoid double lookup of ID address for every
advertising report.
Change-Id: I6b86a698087889c4e6c2a1cbc9a688a804cfeb84
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This reduces number of idefs cuts and make code much easier to read.
In case of SMP not supported (or connection support since SMP depends
on it) find_id_addr is simplified and will most likely be inlined by
compiler resulting in no-op.
Change-Id: Ib16d1508c5664fcb58f619b090a5d62b2ecfe8c5
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Added -e option to echo-client and it will not quit but just
send data forever to the echo-server.
Change-Id: I9085220844b5bc45b2b7fffc46fb1b9e93235307
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If we receive too long message in dummy radio driver,
then we need to discard the packet as we cannot handle
it anyway.
Change-Id: Ibed0ac5f1568dd791dec3e780c7f6c71914d02cd
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The 802.15.4 monitor application had issues with connecting
pipes together and making sure the first byte from qemu is
not lost. Before starting real data connection we send five
null bytes and the discard them in receiving side.
Change-Id: I376ae4f79aaa1ea742640999ec5b3d9c57a1279a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Dummy 802.15.4 has now some additional check to verify that we
are really sending correct amount of bytes.
Change-Id: I4d223c02e2628966e3b1a3cdcf7b560043d7d788
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If the stack is sending network packets by itself, like when
sending router or neighbor solicitation messages, then remember
the original length of the message. This is important because
uIP stack will clear the length of the sent message after it
is sent.
After this change, the lower level drivers can use
the net_buf_datalen() to get the original length of the
buffer. The issue is seen because uIP stack is running in
different fiber than the network device driver.
Change-Id: I6078c5d716bba455a93be9be122e97cd24b8dc0e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Print information about how much data we are losing if
null fragmentation is used.
Change-Id: I2f18d180a4c75768534de851c7cc27c3e70ca310
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Adding selection of 6LoWPAN compression method to Kconfig.
Possible values are:
* no compression
* IP header compression
Change-Id: I8721fa683f7488ec9ad0bf37f6637fa264c2038f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
User can set the desired network id from Kconfig.
Change-Id: Iac9de1deb2b01bcfcb3382849d451dce1a05077a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When 802.15.4 code is receiving the network buffer, the uIP
stack might have zeroed the buf->len value. Restore it back
here so that other parts of the stack will get sane value.
Change-Id: I8fb3c1d3a3c9b0f41f3915d0f31d78afeccf68b6
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Gather connection and SMP related code togerther to that those can
be places under single blocks of ifdefs.
Change-Id: Ief418536e0e0f389fdde3bb3ac8b85bcfce9ac79
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to monitor stack usage in timeout fiber. Since timeout
fiber migth not be even started (eg when there was no SMP command
sent or receive) analysis is done only when timeout fiber is stopped.
Change-Id: I0ff6c081b9077f8f8294386306a3fe0ed77099a8
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This introduces simple API for analysing stack usage. Stack growth
direction is determined on build instead of runtime.
Change-Id: Iacb160d088cc0af57e2e9dedc72cbc5e31fd22f4
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Add support for timing out SMP commands. Timer is restarted on sending
any SMP PDU and if reached 30 seconds pairing procedure shall be
considered to have failed.
This was affecting TC_PROT_BV_01_C and TC_PROT_BV_02_C SMP
qualification tests.
Stack size used by timeout fiber is based on observation:
smp timeout (real size 128): unused 16 usage 80 / 96 (83 %)
Change-Id: I87a16cc51046b6a2487a0a1a736035d64b011d09
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This patch adds additional flag that is used for tracking if pairing
is in progress.
Change-Id: Ie21b8d9440ea4bc64dd552d49eaebfd4b569f176
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Parent link metric was incorrectly printed.
Change-Id: I479820f850d8e9a5459667d58bc35c8174a77559
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When enabled, probes will be sent periodically to keep
parent link estimates up to date.
Change-Id: Ia7f1fe7cd28bb487c64a41159fffdf3665e9e1df
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
User needs to be able to configure used OF as all RPL nodes
in DODAG need to use the same OF. Default OF is MRHOF RFC 6719.
Other alternative is OF0 RFC 6552.
Change-Id: I6d135a6a2c6880a919993e29b0985d4c686b8a9d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Refines errors check when attempting to write over the boundary
of attribute room.
Change-Id: Ia27b86ce380a178b8e7834adf6da4009a6d60233
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
The etimer.c does not need to know about ctimer_process so
remove the extra variable.
Change-Id: I761a9d79c09876c5270e294dd008a8821705e9a2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The code did not mark net_buf to be freed in a case of error
when receiving data. This caused the system run out of network
buffers very fast. It is necessary to set uip_len variable to 0 so
that the upper stack can free the buffer in this case.
Change-Id: Id5e009affcb2ce916f21fcf60060efb1c6d1ec0c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Allocate a net_buf when a network packet is about to be sent.
Earlier one statistically allocated buffer was used for sending
RPL packets but this did not work well enough and it cluttered
the RPL APIs with redundant net_buf parameter.
Change-Id: Ib4160167f8deac83c30852af2346acdf6c6f711b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When the timer is set, the caller needs to specify the function
that is called when timer expires.
Change-Id: Iae69986c6f32b789d708247b187d143e45d73828
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The RPL support needs bigger stack than 600 bytes.
Change-Id: If61fb2b4874d32d6e02c8e510cccd45246332da5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Print RPL statistics in the general IP statistics printing
function if CONFIG_RPL_STATS is defined.
Change-Id: Iefc3a1e5186b052e91b17309a6e9fdeb2fa70886
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Need to use pointer when printing link address.
Change-Id: Ied7fcbefc02034e0ddbe714716b883de33d1e724
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
For RDC (Radio Duty Cycling) we activate nullrdc driver
if 802.15.4 is not used.
Change-Id: I793b84ee8e81cdbc8315758f1b83f7ad3bd7555a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This allows to reduce BT buffers used if connection
support is disabled.
Sample beacon application size reduced from 15212 to 14956 bytes.
Change-Id: I431ea5087706a06eaea76d572839c3afebfb963e
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Make connection related code splitable. This is in preparation for
not compiling connection related code.
Change-Id: I24e21eb553da4a3522916e5cfe17e4b51526ad4d
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to not compile SMP support for devices that don't
require pairing. It is required to support SMP channel and reply
with error for any command received even if pairing is not supported.
To handle this cleanly a null smp implementation is used that case.
Change-Id: I656a52dac882839db904eee65f25a4e29ea2d8c2
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to not compile data signing support if it is not
required. Reduces image size of peripheral sample app from
45772 to 44436 bytes.
Change-Id: I2cd3515973d1a70f478cbd68426ec84fd1645d19
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to specify which roles are supported. Broadcaster and
Observer roles are always supported.
Image size reduction for samples apps:
beacon 43148 -> 15196
central 46892 -> 46356
peripheral 47532 -> 45940
Change-Id: If260c13d63651b9b54df5bafc2c412b01dcb1eb0
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If remote IO capabilities is KeyboardOnly and local is KeboardDisplay
passkey should be displayed on local side.
This was affecting TC_PKE_BV_01_C Security Manager qualification test.
Change-Id: I4d21925f3f0903250b190ae83eee7f4529114579
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This adds support to BT_GATT_DISCOVER_SECONDARY to bt_gatt_discover using
Read by Group Type request as following:
Change-Id: I2c3907dcc18ad077c3161fda9ad94fe3b5e4fd45
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds support to BT_GATT_DISCOVER_INCLUDE to bt_gatt_discover using
Read by Type request as following:
< ACL Data TX: Handle 3585 flags 0x00 dlen 11
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0001-0xffff
Attribute type: Include (0x2802)
Change-Id: I4452e99f08d0b61cc52fe943eb40527561f3ed60
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Add discover type to bt_gatt_discover_params to the API is reduced to
just bt_gatt_discover, this should simplify adding support for
discovering secondary and included services.
Change-Id: Iadeed86fed115afee1340b2c09821d7fafdda0f4
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
If tinycrypt is compiled in use it for encryption instead of HCI LE
Encrypt command.
Change-Id: I9cf70540f14ed449bfda52c4a0901462b9a60fe9
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
These features set are not experimental anymore.
Change-Id: Ia9e4803982f625157e78c8002c38fed1e95c4892
Signed-off-by: Jesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com>
This enables bt_gatt_subscribe to subscribe using indication value in
addition to notification.
Change-Id: I25f3b057e36b023a79fb66b11b70716ecc299ba9
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
The correct code is 0x1e not 0x1f.
Change-Id: Icee68ebd01d76a4b3ed31a54e18b1115172f5b71
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Some controllers are broken in that they may send a completed packets
event after a disconnection has already occurred and the handle is
invalid:
> HCI Event: Disconnect Complete (0x05) plen 4
Status: Success (0x00)
Handle: 64
Reason: Remote User Terminated Connection (0x13)
< HCI Command: LE Set Advert.. (0x08|0x000a) plen 1
Advertising: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4
LE Set Advertise Enable (0x08|0x000a) ncmd 1
Status: Success (0x00)
> HCI Event: Number of Completed Pa.. (0x13) plen 5
Num handles: 1
Handle: 64
Count: 1
Since the disconnection code already takes care of updating the
le_pkts_sem semaphore appropriately there is no need to do anything
for this kind of events (except log a warning of a misbehaving
controller).
Change-Id: I67b35aa50f7297d6bcdeeeab62f1f1d224b1a372
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This is in preparation for being able to compile out SMP support.
Change-Id: Idb3597dd16e457d19d592a9b7dce954b950b174e
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Separate connection master role related parts in single block making
it simpler to split. This is a preparation for being able to compile
in only central or peripheral role support.
Change-Id: I27dc9b32048bf4e682149d5f1d5edbd994155e2b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
The HCI driver send() callback may fail and in such a case require
different handling on the core stack side. This patch introduces the
missing error handling to the places calling drv->send().
Change-Id: Ia0e4f05aedd88c268cf0da98b11924eb3c5c4c0b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
The core specification says the following about the treatment of
unacknowledged packets when a disconnection occurs (page 773 in core
spec 4.2):
"When the Host receives a Disconnection Complete, Disconnection Physical
Link Complete or Disconnection Logical Link Complete event, the Host shall
assume that all unacknowledged HCI Data Packets that have been sent to the
Controller for the returned Handle have been flushed, and that the
corresponding data buffers have been freed. A Primary Controller does not
have to notify the Host about this in a Number Of Completed Packets event"
This patch adds tracking of unacknowledged packets on a per-connection
basis and makes sure the semaphore that counts controller buffers is
given back the appropriate amount when a disconnection occurs.
Change-Id: I2ff4d12ffa50d4dda5b3e8c75fc75b4c0927e609
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Separate connection related parts in single block making it
simpler to split. This is a preparation for being able to compile
out connection support.
Change-Id: I992e604cae848ed2dfe821a6971248e53ae23498
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This patch factors setting up controller to host data flow control
to separate function. This is a preparation for being able to compile
out connection support.
Change-Id: Ibcce0b740534331a6365c2370b7b637877d71560
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
All required includes should be placed in source file that includes
internal header.
Change-Id: I161e7ebe2e62377ea4cf03f759d48f5900103076
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Writes to GATT attribute that has no write permission set, should
return write not permitted (BT_ATT_ERR_WRITE_NOT_PERMITTED)
in check permission routine.
Change-Id: I95f0988e171294cd98b79d3e7b518383ac47567d
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
Move parts of the API that are not usable for applications to
an internal header.
Change-Id: Idbcd3db8acda74375ea9deec2bf3d7eddc8a4ddb
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If no attribute with given handle is found in database then invalid
handle error should be set and returned. If attribute is found then
pre-set invalid handle error will be cleared.
Change-Id: I4119877bb72693e18003399f9b6764666f801fe4
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
This makes menu cleaner and easier to follow what options
are Bluetooth specific. It is now similar to IP configuration.
Change-Id: Ic2f6002ab30093bed62e71fe268a576d69a9cd0d
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Tinydtls had its own .gitignore file that masked away two
include files that are needed in compilation. Removed
the files from ignore file and added those two files.
Change-Id: Ibcfcf4e18ca8f56eef97d41464c4233148e9db9e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If the remote response with encryption/authentication error attempt to
elevate the security and retry sending the request:
bt: bt_att_recv (0x00112e0c): Received ATT code 0x01 len 5
bt: att_error_rsp (0x00112e0c): request 0x0a handle 0x0018 error 0x0f
bt: security_changed (0x00112e0c): conn 0x0010f5ac level 1
bt: security_changed (0x00112e0c): Retrying
bt: bt_att_recv (0x00112e0c): Received ATT code 0x0b len 1
bt: att_handle_read_rsp (0x00112e0c):
bt: att_read_rsp (0x00112e0c): err 0x00
Change-Id: I9d74fb50385c39b2092357f4fd6912a3eb041442
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Clone request buffer so it can later be used to validate the response.
Change-Id: I306f7b01a9a72a6c4b8e97c30789247b28428365
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Use correct config option to either enable or disable
neighbor discovery.
Change-Id: If67219cfa71893d2805b37e5ab3bbd11af789cb5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This adds bt_buf_clone which can be used to duplicate a buffer, including
its contents.
Change-Id: I473841e1fce00fddbfac1fb2c55d40741658484f
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
If bt_enable() is called from a preemptible context we need to make
sure the RX prio fiber is initialized by the time the HCI init runs
from the hci_rx_fiber function.
Change-Id: I91bb0c69d011944ee2a035b2a707618632a6b189
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
There is no need for local copy of addres. Use pointer instead.
Change-Id: I4681af527813093547d2641ab2390cfa64383d6b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Connection address based on keys is already selected before call to
check_pending_conn. There is no need to select it again.
Change-Id: I2f1a329c19f5c08734c50dbf8d32bf5c28192a35
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Pass service handles to the callback during service discovery.
Change-Id: I616de5188faf76c84cc02ceb29a6f5aab631b89c
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
No need to give the pipe names as the default values can be
used instead.
Change-Id: I610d07b860a32b55e6c68e7b2869218b29c8f304
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The duplicate address detection check was not run properly
in periodic timer. After this patch the IPv6 address is
marked properly as preferred if DAD succeeds.
Change-Id: I2b4ad91b2c851dca51a52635ef2dea92fb5b58b5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This is only meant for testing the network. This must not be
enabled in live system as it takes memory and processing power
for each sent or received network packet.
Change-Id: I223a087175b19c8561743a1fcceb659be2356c4d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Add function that returns the link address that the system
is using at the moment.
Change-Id: Id09aed3f6cbc4cd3ee694e18441f7443f0b7c3bf
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Make sure the etimers are triggered in main event processing
function in tcpip.c
Change-Id: Ib521b9291c768245a9f35f3502b3b173abe08ee9
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The Contiki etimers need polling which is handled by this fiber.
This fiber sleeps until next etimer is to be triggered. If the wakeup
time is long, we wait max 60 sec so that new timers can be triggered
also. This 60 sec timeout might be too long and require tweaking when
we know how the system behaves.
If there are no etimer event in the system, then the timer fiber
will only sleep 2 seconds before checking the timers again. This
interval might need tweaking also.
Change-Id: If34b97073882d8b273941cfb0be36df6aac97cf8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Add sample radvd.conf and instructions how to use it in README
file. This is needed if user wants to use IPv6 SLAAC (stateless
address auto configuration) when using qemu setup.
Change-Id: I3c9c34cfcc1bc88117a1c70a5d3ef6b5e56739f1
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Allocate a new TX net_buf when sending neighbor solicitation
message instead trying to use the existing RX net_buf. This
simplifies and unifies the RX and TX buffer management.
Change-Id: Ia1c42f7fef720ad85fe1c599c3c2ec9ea2c024b5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When sending IPv6 packet, make sure that the net_buf is valid.
Change-Id: I0027f42f307c09b3add42f430abf759bd88d63c5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Allocate a separate buffer when sending RS, RA and NS ICMPv6
messages to the network.
The ICMPv6 messages are:
RS = router solicitation
RA = router advertisement
NS = neighbor solicitation
Change-Id: Ibe5a1701f78f72dce6460f77e9f659b16c355640
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Debug prints were missing line feeds + spaces in neighbor
discovery code.
Change-Id: I1373af38cc7eae103d1a1da527430f2eb63e6b7a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
User is able to disable IPv6 neighbor discovery.
Normally ND should be enabled but for testing purposes
the ND can be turned off as it simplifies the network
setup.
The default value atm is not to run ND because
we do not have a proper network setup. If user is
running qemu image, then ND should be disabled because
ND does not work properly with tun device.
Change-Id: I0ab7d6ee2ea3bc70918d9adf6f44473f71b3bd29
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Neighbor solicitation message sending had a typo.
Change-Id: Ia2a8b5c0eef60acc093463eb24f33bbe8fb93421
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Now we can wakeup properly if there are multiple Contiki etimers
in the system.
Change-Id: I356818f4b79427c9bf26afca31b1a0766760ca3d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The clock_delay() function sleeps now correctly either
in micro or nano kernel.
Change-Id: I1df71b64c5f0b46d963ee117252e41be3ddfb1df
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
IP networking depends on CONFIG_NANO_TIMEOUTS and
CONFIG_NANO_TIMERS support so select them automatically
in Kconfig.
Change-Id: Ib3a86ca5a2006da545bed8c13b631d6a8c45ea99
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Style fix - add missing brackets for single instruction if statements.
Change-Id: If37f886949fb8587d6973a19bd2df92af03f7a87
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
The minimal/start valid handle value is 1.
Change-Id: Ief3be01d0bf76193350b7632aedebc559d368810
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
Att data structure passed to read_type callback wasn't set properly
with connection data. This cause parsing att struct set to 0 (casted
in cb, set in att_read_type_rsp). Wrong att data caused parsing wrong
mtu size and whole conn structure.
Change-Id: Ib0aa4b8edca4965afd746e7186a08cfa34e62cf3
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
UUID format in 4-byte hex is more readable format than unsigned int.
Change-Id: I5e7fa3771d628705b9991c0064c102313573b8e4
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
The net/ip/contiki/tools directory was not in proper place
as it contains also non Contiki code. The net/ip/tools is
a more suitable location.
Change-Id: I1eb621680d4247d56d67ea977120f3c67c013599
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The observe client routines need to allocate a net_buf that
will hold the sent UDP data.
Change-Id: Ia04aacdde266aa93de1b9941eeed0c8292ca83b8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
When a transaction is retransmitted, we need to allocate a
net_buf that will hold the actual UDP packet to be sent.
Change-Id: Ie0d51694b5531938cd1da5c330a308e3e9fd1764
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Add coap_context_connect() function so that client can use
it both in DTLS and normal connections.
Change-Id: Ibd8cff904e79a97f97ed6ff20d92078eff110e35
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Use only integer arithmetics when calculating the timeout
value.
Change-Id: Ifc61e1eee4a9a680e9c4f8c89f146417d6cc5ba4
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If the transaction allocation fails, then print additional
information in order to find the place of the failure.
Change-Id: Idd59969b2c5eff53170b51a471583ec8c837416a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The mid needs to be init from server and client code so
create a new function for it.
Change-Id: I662b64c207ac69288648ffbdc950896edd5ade52
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Refactor etimer and timer Contiki APIs to use the native
Zephyr timers. The Contiki way did not work well anyway
as we do not really have the process concept in Zephyr.
Change-Id: I14743707f3cf43eddfe914717b069204cde4bd65
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The clock_seconds() API returned wrong number of seconds since
initialization.
Change-Id: I4f0f6197327f4ebe12e2c37588d9611ec40d7643
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Print additional information about how many net buffers
are available when allocating (get) or de-allocating (put)
them. The prints are only available if Kconfig option
CONFIG_NETWORKING_WITH_LOGGING is set.
Change-Id: I85e6a5813356d8fe00f0ba633c3ebf5379e56bff
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Have a separate network buffer pool for received and transmitted
data. This way incoming packet flood cannot prevent from sending
IP packets out.
Change-Id: I2aae3bcb4ea63f36355f758de44532b167edfdb8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Add simple CoAP client that can be used to test
the CoAP server running in Zephyr inside qemu.
The coap-client is run in the host.
Change-Id: I50e4b0e13aa657a0d805b0438050b8b9187d3839
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Adding CoAP client support to Kconfig and Makefile.
Change-Id: I857169feac8b6c4347af4369b0cdfb806c6aedb0
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Add CoAP switches to Kconfig and enable them in Makefile.
Change-Id: I3d5e18f34c0ab0853838c2e883748dd4ae62aed2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The use of CoAP context is needed as we do not have
global buffers any longer. This commit adds support
for CoAP context when user does not have DTLS enabled.
Change-Id: Ief716e2a3290bd1f7e5a3286a20deba690b3c1c5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Make the DTLS code in CoAP context to work in Zephyr.
Change-Id: I0c9cd30a02fa6b3f0221f78e1dadd1d476bad646
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Initial port of er-coap code into Zephyr.
Change-Id: Icb45903387eb08418a3610c1bd0933a9a9c6f8dd
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Use the debug macros from uip-debug.h so that they are
in one place.
Change-Id: I342d727d4c6af9a655729db6245668968bee4b07
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This is originally from git@github.com:YanziNetworks/netcontiki.git
commit e7d7ee5b142fb7b0695677dac9cc1899620b0fe0
Change-Id: I606b26420b9df841f03bc955039f25970553e481
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This is originally from git@github.com:YanziNetworks/netcontiki.git
commit 02bb8eed066c012b4b6033cbe17a31ff15879a24
Change-Id: I4b19302266a6ff562532c493bb34b7cd9a27ee5d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
conn->dst might already contain identity address from previous
pairing. In order to store IRK distributed in new pairing we
should check address used in connection.
Change-Id: If4bfaf445d31684125246cc98cfad1aab45875ca
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This callback is called if security level of a connection was changed.
Change-Id: I268da245cf4b7f6d2bfbd57969ce2da6c34fc69f
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
bt_conn role can be set when LE Connection Complete event is received.
Controller indicates to both Hosts forming the connection their role
in this connection.
Change-Id: I35455eff54afa30665611415ac52e19089f2e649
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
This callback is called if identity was resolved for remote device
that was using Resolvable Private Address while connection. From
now on only Identity Address is used.
Change-Id: I5976be575a8e4ad8c13f56d7bc274d751ae37511
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Since initiator and responder addresses are already tracked it is
no longer needed to store source address in bt_conn structure.
Change-Id: I048e4d4659f4b7d29b101f9f3c5708f66c773906
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
When remote device initiate pairing but its IRK is already known
identity address was used to calculate confirmation value. This
resulted in 'Confirm Value Failed' error and pairing failure.
To avoid any confusion simply track initiator and responder addresses
used for connection.
This fix re-enabling security with iPhone if device was unpaired
only on iPhone side.
Change-Id: I07d9589bee5fea7f6b028472b1709090a5755e31
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
When sending security request for connection with pending high
security level, authentication requirements should indicate that
MITM is required.
< ACL Data TX: Handle 64 flags 0x00 dlen 6
SMP: Security Request (0x0b) len 1
Authentication requirement: Bonding, MITM, Legacy,
No Keypresses (0x05)
Change-Id: Ie78e021726063b0eee415bfa7189962fe0b2d94b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
When re-pairing was successful (indicated by enabling encryption with
STK) old keys are no longer needed as those will be replaced by keys
distributed in new pairing.
Change-Id: If2a81e8e94f35eb04ce9a7e4d782094632cbd77a
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
The -i (interface) option was not described in usage.
Change-Id: I50d01f0e639d3258234c5573abd8836a7144584e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Add note about possible firewall issue in host.
Make sure you run echo-server as a root user.
Change-Id: I9ebe06db799eef8664d7d7ccb38827280e338f9d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
So return 0 if all the tests run ok, and !=0 if some failed.
Change-Id: Ib66d84dbcc6cc29e5e46609b1e2b1b1748ce6fcc
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Print information who allocated or freed mac net buffer.
Change-Id: I106e1703b7f5c3e5363d53d63c599a12b65577cb
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Use more generic stack analyze functions that are now
found in net_buf.h
Change-Id: I473665bbad8aa1a6749a4c5dc1d6952bdb56da5d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Generalize the stack analyze functions so that they
can be used by other fibers.
Change-Id: If1fae51db45010b75f6ac58cd8d874b31ca336e2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Make sure we are not trying to release a NULL net_buf.
Change-Id: Ie4d2e7cdbd4f85c5543874471cc7c7ce3bc0b9df
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
If the net_buf allocation fails, then return and do not
try to access it.
Change-Id: Ib4c4a0b3a6669f6e6030357f3f2dd9af4dc638c8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Use the new NET_BUF_IP() and NET_BUF_UDP() macros to access
IP and UDP data in the received network buffer.
Change-Id: Ic35ddf6fa8641aa6334b1207a8c2f1f19a39866f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Fail if we have keys that are stronger than keys that will be
distributed in new pairing. This is to avoid replacing authenticated
keys with unauthenticated ones.
Change-Id: If81b158f68a818d7a6e5d2854b482f34516b4737
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Keys from same pairing have are of similar key type and
this can be stored in single place.
Change-Id: I38426c282604769424098af6ee26e0cf9cb5f358
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
There is no need for separate lists of each key type as this
lookup optimization is of little benefit. Removing those results in
much simpler and smaller code. Using array over list also improves
data locality and thus cache utilization.
This patch results in following code size reduction:
keys.o from 14208 to 10028 bytes
microkernel.elf from 599417 to 597091 bytes
Change-Id: Ia8fe21ca3d79f668d8550c4376fa403e8778861e
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Ensure smp->remote_dist tracks unreceived PDUs both for slave and
master role, and use the same logic in all PDU handlers for
remote_dist and allowed_cmds.
Change-Id: If4769d0be0118e8e764d7483f0d93ef8b61fa398
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Other function name was used "bt_gatt_attr_read_included" by include
than the implementation "bt_gatt_attr_read_include" has.
Function naming mismatch caused linker error if used included service
define.
Change-Id: Ib4b4d07050d634cb1578c8a8948322acad85a307
Signed-off-by: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
This fix following build error:
CC net/bluetooth/hci_core.o
In file included from net/bluetooth/hci_core.c:43:0:
net/bluetooth/hci_core.c: In function 'update_conn_params':
net/bluetooth/hci_core.c:751:49: error: 'evt' undeclared
(first use in this function)
BT_DBG("status %u, handle %u,features 0x%x\n", evt->status, handle,
Change-Id: Ic3c15d17c73b26d44913327df577495afc80f356
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Adds host bits to initiate LL LE Exchange Feature procedure if
supported. Both the master and slave can initate it for controllers
newer than 4.0. For 4.0 controllers only master can do that.
Inform upper stack layers of the slave about the connection is ready
to use only when LE Exchange Feature isn't supported. Otherwise
upper layers shall be notified about new connection when Connection
Parameters Update procedure is finished.
Change-Id: Ief29744e498873f79fc6f62f98c083fecaeae24e
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
Since then bt_conn_connected as well as bt_l2cap_disconnected callback
can be called from bt_conn_set_state directly.
Also connected cb could be called from there, however
eg. introduction of some additional state is required TBD.
Change-Id: Ida6906272e1468ef5b41ba8dba2a936db049d308
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
Makes bt_l2cap_update_conn_param to return an error if command was not
sent.
Change-Id: Ie7351040bd371bb161afc2f2a2c10e015bcdc8e4
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
There is no need to have sparate bool in context structure while
flags field is available.
Change-Id: Ib1bcf9794c32268897b0a873787566a620f3097b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If ref is zero other struct bt_conn fields should be considered
garbage. Using ref count instead of address is also faster.
Change-Id: Ic3b30c0fdbce8f93f81095d3671be0e54eac1455
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If slave is requesting MITM protection verify if LTK is authenticated
before enabling encryption.
Change-Id: I6642f88945b0ca0310880935edbcfa2a6764c8d8
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If authenticated key was used for encryption resulting security
level is high. If resulting security level is lower then
requested level link is disconnected.
Change-Id: Ib66f722e6bb52e943d2b5cefb58f018707ce725b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
If high security is required but keys are unauthenticated start
pairing instead of encrypting with too weak keys.
Change-Id: I35e5f0c1ab86660479288908152d61823ffb102e
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
There is no point in initializing security if required security level
is not reachable due to local IO capabilities.
Change-Id: I00d3cc552fcce4d1aac9498c90dcd826735dcb2b
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to store information if key was generated during
authenticated or unauthenticated pairing.
Change-Id: Idd398749c869e6278bf10909cfb768ba09565d54
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This monitor_15_4 tool is run in the host side. It will connect
to Zephyr via UART using pipes. Test app1 in qemu send data
through the uart and pipe, this tool read data from pipe1
and writes it to pipe2 where test app2 running in qemu2
will read data from it and vice-versa. In between tool store
data in pcap format for further wireshark packet analyzation.
Change-Id: If5c998591edf4253fbd5e249c6c9e48fa1792715
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
Cache input type and validate TLV according to it. Check
uart_send return values.
Change-Id: Ib1f784a776176763773fead2d464330a4325ba19
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
If JustWorks pairing is used for pairing don't report failure.
Change-Id: I23cee54a74dd021c1f273d987ca67066452d7801
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
Flags for indicating if stored TK is valid and if confirm sending
was delayed are required for properly handling passkey entry input.
This is to avoid using incorrent TK or sending SMP commands in invalid
order.
Change-Id: I11e162331e93311f292f0723fc9f860c753d7d96
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to request passkey being entered by user.
Change-Id: I6a56c65ca689473659a13c19f8578058476d2685
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to track which pairing method was used and is
a preparation for storing information if resulting keys
are authenticated.
Change-Id: Ib9fc762d19bd4add6f0b431745eeb9e2780016d4
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This makes the code more consistent by always trying to name bt_buf
variables as buf.
Change-Id: I10d54260c5cf2f6aea5300668d5eb68f3da2a8ba
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This dtls-server app is run in the host side. It will
connect to Zephyr via UART using SLIP. The app will
listen DTLS data in socket 4242 and will reverse the returned
bytes and send them back to the sender. The application
supports both IPv4 and IPv6 protocols.
Change-Id: I8d37b0d3318bf6a3a5365e7d2c64eae83a1f3285
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The option NET_BUF_SIZE was all over the place due to
missing dependency. Use menuconfig for networking and
put everything inside an if statement.
Change-Id: Id61d777cd4079a2a0a8975b7f32fdd795557fb3a
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
The term 'context' is vague and overloaded. Its usage for 'an execution
context' is now referred as such, in both comments and some APIs' names.
When the execution context can only be a fiber or a task (i.e. not an
ISR), it is referred to as a 'thread', again in comments and everywhere
in the code.
APIs that had their names changed:
- nano_context_id_t is now nano_thread_id_t
- context_self_get() is now sys_thread_self_get()
- context_type_get() is now sys_execution_context_type_get()
- context_custom_data_set/get() are now
sys_thread_custom_data_set/get()
The 'context' prefix namespace does not have to be reserved by the
kernel anymore.
The Context Control Structure (CCS) data structure is now the Thread
Control Structure (TCS):
- struct ccs is now struct tcs
- tCCS is now tTCS
Change-Id: I7526a76c5b01e7c86333078e2d2e77c9feef5364
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Include all headers to signature verification process.
Change-Id: I14e152e8529bca380faeb8e9a1be00e4e8d84f9a
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Verify that message is signed correctly using early distributed CSRK
key.
Change-Id: I30b24e90f3503907449c310dd4f59f32e6acca6f
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Add support for signed write with sign parameter for write without
response.
Change-Id: I79008532d88b10d34db1f68898ad4258dd3e761b
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
cnt is in le byte order so print keys->remote_csrk.cnt instead.
Change-Id: I2c2970f0bdf91960d978fea248bc0dbc23fdfd53
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
bt_smp_sign_packet() signs data packet adding signature and count at
the end of data.
Change-Id: I6cca931cf33d74a765f4b4aa126aae10bee7ef4c
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
This adds validation for passed callbacks. Previously registered
callbacks need to be explicitly unregistered by passing NULL.
It is no longer possible to implicitly overwrite callback
structure.
Input Output Capabilities generation is factored out to separate
function. This is in preparation for adding more callbacks.
Change-Id: Ie809ea2daa80f9c54585efb459b49af1107007d3
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This allows to register agent with display capability resulting
in DisplayOnly InputOuput Capability being used.
Change-Id: I98931af35c51a71882b60303c0f5d4da19eefbc4
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
This dtls-client app is run in the host side. It will
connect to Zephyr via UART using SLIP. The app will
send data to server using the established DTLS connection.
The dtls-server will echo the data back and dtls-client
will verify that it got back same bytes that it sent
to server.
Change-Id: Ia18d75e887b38e08bc06b660c60dac4043f7d605
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This will print incorrect warning if we have tinyDTLS
server functionality in use.
Change-Id: I21689b69190621329ee7ae2c7ebe6577937c561a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This is not a likely scenario but make sure that we
return NULL if there are problems when user is trying
to receive network packets.
Change-Id: I637306d127d20a95c4a2f420b9a3061b707311c2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Print error if IP stack is corrupted, best option would
be to reboot the device.
Change-Id: Ie92782de2fe0f323c9461fa21e90e545ccd23449
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Use the data length in net_buf as a master value when
replying the data.
Change-Id: I2184890b0ed8d26b700ee75b9e4b6d5a466e649c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Make sure that the default link MTU for IPv6 networks
is used (1280 bytes). If this is left out the default would
be 128 bytes. This setting is only needed because the values
are used in tinyDTLS project.
Change-Id: I6873b8383be6355d616910aa58a03317e92dc8f8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Use net_buf when sending data in order to allow bigger
messages to be sent. Earlier the max. msg length was
200 bytes, now it is 1280 bytes.
Change-Id: Id5550de45b61c6fa6410258776cd8240efb1570e
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Using appdata pointer is more logical here. There was no
error in earlier code either.
Change-Id: Ic1557f01b2b016484d75fdff00f3fc02c9debac5
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Instead of having IP address and UDP port as separate fields
in session struct, place them inside an address struct.
This way the session size field will have a proper size
and we can use the dtls_session_init() function when initializing
the session.
Change-Id: I0560750bdd7189e24bf720a3bad240df2a3fc7fe
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
The PROCESS_CONTEXT_END() macro used wrong variable. This is
only cosmetic as the variable is not used in macro but for
consistency use the proper variable name.
Change-Id: Ia9537f4c78e6573b955fd91482e033d96cdaf66b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Use sys_clock_ticks_per_sec that is defined from Kconfig,
to set the Contiki clock.
Change-Id: I1d0198fb39e83a59258b7c067107c25b63db50ed
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
User is able to enable tinyDTLS support via Makefile.
Change-Id: I383bf69756fe3540b63bcd5793e2a1a31231d6b1
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>