Commit Graph

395 Commits

Author SHA1 Message Date
Ravi kumar Veeramally
5d2e81c8ab net: Copy mac address to uip_lladdr
uip_lladdr is global variable which is used to generate link
local address based on mac address. Right now it is empty.

Change-Id: I89bf7ac4c7770858044ef0c4f3d667e9316c4269
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-02-05 20:14:35 -05:00
Ravi kumar Veeramally
5d2e9db894 net: sicslowpan: if compression fails then send uncompressed packet
If HC1 or HC06 compression fails then send uncompressed ipv6 packet
by adding IPv6 dispatch header infront of the header.

Change-Id: Ie15fb9d61def45066fb606417ba4f46ae6c628b1
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-02-05 20:14:35 -05:00
Ravi kumar Veeramally
1f8cb9b4dc net: sicslowpan: Fix length and packetbuf issues
Fix IPv6 packet lenght in header. packetbuf_copyfom clears all
pointers which is causing an issue, so assign uip_packetbuf_ptr
after packetbuf_copyfom.

Change-Id: I943273bb0a079d3ac86da0761c3f32043a280a87
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-02-05 20:14:35 -05:00
Ravi kumar Veeramally
944b580266 net: Remove net_buf forward declaration in sisclowmac
Change-Id: I5f202c7241b885e85a428b625a7170a5300b7237
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-02-05 20:14:35 -05:00
Ravi kumar Veeramally
fda66bfa34 net: Enable 802.15.4 related macros
UIP_CONF_LL_802154: 802.15.4 support in uIP, default compression
is none(SICSLOWPAN_COMPRESSION_IPV6: just add IPV6 dispatch infront
of header, enable HC06 or HC1 depends upon requirement).

Change-Id: I5c298652783a560d227b77c293c3d13844647f56
Signed-off-by: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
cc3afa6346 net: Add net_mbuf validation
Add infrastructure and checks to validate the net_mbuf during
its lifecycle.

Change-Id: Id4b638fff991325d2247b1f24152552038888915
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
4f4700e32c net: Use correct IPv6 address when registering UDP socket
The code used wrong IPv6 address pointer for UDP registration.
This caused the packet sending to fail because the generated
IPv6 address was bogus and not routable.

Change-Id: I933d6920c6455b271e775f5cbe15afdaa948abae
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
17b269682e net: The local address was allocated from stack
We cannot use stack variable for local address as the address
needs to point to static memory. So change the type of the laddr
to be static. This is not a problem here as there is only one
local address defined anyway in the system.

Change-Id: Ie8763f761eea08997f0984394984050be946ae18
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
d644eb8175 net: Add missing curly braces
Follow the style guide here.

Change-Id: Icd4053434f509aee4787bf2d5aae42cefb830a36
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
fdadfc95a7 net: uip: Reset the rxbuf if we run out of buffers
We need to reset the slip receive buffer pointers if we cannot
process the incoming message. If this is not done the rxbuf
will overflow and overwrite core kernel data.

Change-Id: If6a96177a3de57148268e48940fbc33d2e08b36a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
5ac5211093 net: uip: Free net_buf if it cannot be pushed to slip rx queue
This is a sanity check.

Change-Id: I1e747887b3f77203c6a2945810c8203243c41fe3
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
90ca5ff779 net: Validate that net_buf allocation is correct
Add macros that check that we are not trying to use already
freed net_buf and vice versa.

Change-Id: Ifdb6a7e24cd6d7a0de46fa7b991c358ea8828d6f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
a64f6995bb net: tools: Simple echo client that sends data to echo server
This client sends pre-defined UDP data to server, reads back
the reply and verifies that the data is the same.
This test application is only usable when running in Linux
host and it is not meant to be run inside Zephyr.

Change-Id: I6df83f3a5b1ab92c724b4d3c245738eb5c56a91f
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
3e4d890d72 net: slip: Add slip driver for testing purposes
This slip driver is needed for sending packets outside of qemu.

Change-Id: Ifc37181094ddebce08d97ae889f3a58c03d01ae1
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
6421d6eba8 net: The UDP remote address was incorrectly set
We need to use correct IPv6 address when registering UDP
socket.

Change-Id: I38f55bc16f72a71cb8cd58d20b3288be2f4cd475
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
54ab6fad20 net: Add net_reply() function
The net_reply() can be used if the application wants to reply
something to peer right after receiving the data. The function
will reverse the source and destination addresses and ports,
and set the uIP internal structures in such a way that the
reply is possible. Using this function saves the application
from allocating a separate net_buf for just sending simple
message back.

Change-Id: Ia960c83b77a8f300222159ee085fed99e2b007c2
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Szymon Janc
bdb7044f09 Bluetooth: SMP: Make bt_smp_init parameters explicit void
Change-Id: I307ebd13cf031af3359176a19d6a9d4c067cf0ec
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:34 -05:00
Mariusz Skamra
296c76c7a8 Bluetooth: Fix status returned by bt_stop_scanning and bt_start_scanning
If the Command Complete status is read, this status shall be returned.

Change-Id: Ic3fe102c16da4b01d002a2d39952fd401e9f832d
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:14:34 -05:00
Luiz Augusto von Dentz
96fbd6636c Bluetooth: Add bt_gatt_exchange_mtu
bt_gatt_exchange_mtu can be used to exchange MTU used by GATT, the MTU
is selected automatically based on the amount of data bt_buf can hold.

Change-Id: Id49a506663d922132e81c0a753a983b93579ffd0
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-05 20:14:34 -05:00
Luiz Augusto von Dentz
92477f7f65 Bluetooth: Handle ATT Exchange MTU Respose PDU
This adds function handler for Exchange MTU PDU which parses MTU received
and call the request callback:

< ACL Data TX: Handle 3585 flags 0x00 dlen 7
      ATT: Exchange MTU Request (0x02) len 2
        Client RX MTU: 65
> ACL Data RX: Handle 3585 flags 0x02 dlen 7
      ATT: Exchange MTU Response (0x03) len 2
        Server RX MTU: 517

Change-Id: I8daf0e32c1e1b838c45dc488fdef68a01451d55d
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-05 20:14:34 -05:00
Mariusz Skamra
a663540af6 Bluetooth: Factor out active scanning dependent code
API remains the same, only adds helpers for common code which will be
used by active and passive scanning.

Change-Id: I3ef7845af766ba1634fe959f0a93d74601c6711c
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:14:34 -05:00
Luiz Augusto von Dentz
18f2299f24 Bluetooth: Handle ATT Error Response PDU
This adds function handler for Error Response PDU which parses the
error code and call the request callback:

< ACL Data TX: Handle 3585 flags 0x00 dlen 5
      ATT: Exchange MTU Request (0x02) len 0
        invalid size
> ACL Data RX: Handle 3585 flags 0x02 dlen 9
      ATT: Error Response (0x01) len 4
        Exchange MTU Request (0x02)
        Handle: 0x0000
        Error: Invalid PDU (0x04)

Change-Id: I149dc20421690e63250d3e2ec388407a5600e089
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
2016-02-05 20:14:34 -05:00
Szymon Janc
668e161e4a Bluetooth: SMP: Add support for Pairing Failed PDU
If remote sends Pairing Failed any subsequent pairing procedure should
be restarted from Feature Exchange phase.

Change-Id: Ieccb4e64525e82092b8b0928bd3715f46eded9a2
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
cefc8ea55c net: tools: Removing tunslip6 binary
This binary file should not be here so removing it.

Change-Id: I00d4b2de353f1b7ed75e9480252ea5f3f4b0c3a4
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Szymon Janc
4cd3cbf16a Bluetooth: SMP: Add strict checks for allowed PDUs
Specification clearly defines when each PDU is allowed to be send.
With this patch unexpected PDUs are rejected. This allows for better
resilience when remote device misbehaves. Another benefit is that
PDUs handlers doesn't have to do additional checks for unexpected
sequence or missing PDUs.

Specification is not clear on reject policy though. It could be
responding with Pairing Failed, disconnect link or just drop unexpected
data. This patch implements last option. Dropping unexpected data is
also present in other widely used implementations and proved to be
sufficient.

Change-Id: I9a28a0b7bea71775e656300f71172e60b2df3d9c
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:34 -05:00
Szymon Janc
5f36dbf0bb Bluetooth: SMP: Distribute keys in correct order when master
Master should distribute keys only after slave distributed own keys.

Change-Id: Ibd339bd18699fe054bf2443103a4dc5785f494ab
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:34 -05:00
Szymon Janc
bf8bcbdb01 Bluetooth: SMP: Factor out key distribution
This is in preparation for distributing keys in correct order when
acting as a master.

Change-Id: I3054f167dfd5c7514ab1efaecab7854a24d8f11a
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:34 -05:00
Mariusz Skamra
7ba400c321 Bluetooth: Fix bt_conn_lookup_state
If address stored in conn structure is BT_ADDR_LE_ANY, it means
that this slot has been already freed up, and the data is invalid.
bt_addr_le_cmp(peer, &conns[i].dst) returns True if both arguments
are BT_ADDR_LE_ANY, so invalid conn with address BT_ADDR_LE_ANY
can be returned.

Change-Id: I78ecafe0f9d6e1bbca4c7bf2c44eaec858787247
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:14:34 -05:00
Szymon Janc
50d9860509 Bluetooth: SMP: Fix key distribution for master
In Pairing Response is locally distributed keys are Initiator
Key Distribution.

Change-Id: Ic1032d0d08c4d88fd8b133d0d087935f065912d1
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:34 -05:00
Arkadiusz Lichwa
71252551e3 Bluetooth: Tweak cancelling LE connection
Some LE controllers returns in LE event connection complete zeroed
LE address on action cancelling pending outgoing connection.
To catch up such case don't transit state to DISCONNECT in cancel LE
connection HCI command routine and then based on lookup by state
routine for CONNECT state instead of lookup by address, filter out
such case in LE connection complete handler.
Lookup by state when sets to pickup connection object in CONNECT state
in LE connection complete handler doesn't breaks normal outgoing and
incoming connections handling.

Change-Id: I225b5f4786192309a28b886df6ee151ab27e8a24
Signed-off-by: Arkadiusz Lichwa <arkadiusz.lichwa@tieto.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
98cd803dd9 net: uip: Disable duplicate IPv6 address detection
This will disable DAD for now in order to simplify the
IPv6 address assignment. This needs to be re-enabled
at some point.

Change-Id: I9d0ba58ef27df5fb8202863ccf6e33c5e29b6e14
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:34 -05:00
Jukka Rissanen
10c0a16776 net: uip: Comment out neighbor discovery support when needed
If UIP_ND6_SEND_NA is not defined, then input_na() and input_ns()
functions are not needed and should be commented out.

Change-Id: I6849c7a7dba1a4cf60b8b26806df871b5f7801bf
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Jukka Rissanen
d1f320c3ca net: uip: Allow UDP packet sender to know the sending status
Return the send status (sent ok or sending failed) to the caller.
Needed so that the caller can figure out whether it needs to
release the net_buf or not.

Change-Id: I7a0617cbb625d6ffcaf503dffc55d474b8f337a7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Jukka Rissanen
4a21035141 net: uip: Traverse only through valid UDP connections
The uip6.c:uip_process() was not checking the upper bound of
the UDP connection list when traversing the connection list.
Now the code checks the upper bound of the array (UIP_UDP_CONNS)
and will not go beyond the max number of items in the array.

Change-Id: I417ffd2bbb54922ae071f2f382f7e9470516ce55
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Jukka Rissanen
682eee9306 net: uip: Set the proper link address length
We need to be able to configure link address length (6 or 8 bytes)
depending on what kind of transport we are using.

Change-Id: I9677e40a76f22e4656bcae7c9a667c0e76b0d996
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Jukka Rissanen
62852f0ea7 net: Allow 6 byte link addresses
Need to define link address length for ethernet MAC addresses.
This is needed when connecting to host from qemu using slip
and when bluetooth connectivity will be used (in the future).

Change-Id: I3881e970cec52017fd4120a48ff7a99cc5559a0a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-02-05 20:14:33 -05:00
Anas Nashif
ea0d0b220c doxygen: change comment style to match javadoc
The change replaces multiple asterisks to ** at
the beginning of comments and adds a space before
the asterisks at the beginning of lines.

Change-Id: I7656bde3bf4d9a31e38941e43b580520432dabc1
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-02-05 20:14:32 -05:00
Szymon Janc
c5759f18a8 Bluetooth: SMP: Fix key type in security request
Required key is LTK not IRK.

Change-Id: Ibbb27b08867d88e74b30ccb592994f169b455bf9
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:32 -05:00
Szymon Janc
3f8e289402 Bluetooth: SMP: Handle security request from slave
If sufficently strong key exists enable encryption. If no key is
present or key doesn't meet auth requirements start pairing.

Change-Id: I50be66f895d02dbbce49290c21bbc445ab734b4b
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:32 -05:00
Szymon Janc
18c1b9d0a9 Bluetooth: Add suport for enabling encryption
If LTK for connection is stored use it to start encryption instead
of initiating pairing.

Change-Id: Ia1322b028c1ed132c3678c4ff1b4cba1ada7f50d
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:32 -05:00
Szymon Janc
a3dabad67b Bluetooth: SMP: Handle pairing master identification request
Store EDIV and Rand received in pairing master identification request.

Change-Id: Id495934a04470f098da7d36e933e74fb4f052415
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:31 -05:00
Szymon Janc
64426dbbdd Bluetooth: SMP: Handle pairing encrypt request
Store LTK received in pairing ecnrypt request.

Change-Id: I8e19addae67d310905d262df0fc44ff415839560
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:31 -05:00
Szymon Janc
fd79c5f913 Bluetooth: Add support for storing LTK
This allows to store LTK used in further connections encryption
when acting as a master.

Change-Id: I5711d7a9ec5f36add66fbf07e546ebd64ecb3c8b
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:31 -05:00
Szymon Janc
f145d3384d Bluetooth: SMP: Start encryption with STK
If received confirm is valid and we are master start encryption with
generated STK.

Change-Id: I874b3081b6e4b0b9711ba20ee4b99ff5bfcb5bd4
Signed-off-by: Szymon Janc <szymon.janc@tieto.com>
2016-02-05 20:14:31 -05:00
Johan Hedberg
87a5eacdf6 Bluetooth: Fix coding style (indentation)
Change-Id: I25597decd6c44c5c26617b40eeec0f4319645cf8
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-05 20:14:31 -05:00
Mariusz Skamra
30b50a3227 Bluetooth: Cancel pending connection
Adds HCI routine to cancel creation of outgoing connection.
bt_disconnect is called to cancel connection or disconnect based on current
connection state.

Change-Id: I462a61308a580bb24aa9a6c398eb7e443b995655
Signed-off-by: Mariusz Skamra <mariusz.skamra@tieto.com>
2016-02-05 20:14:31 -05:00
Johan Hedberg
a2241a55fd Bluetooth: Add config option for security keys handling
This makes sure that keys.c doesn't always have its BT_DBG logs
enabled.

Change-Id: Ia97149f08a448f55a15c3282f72afb23c495b715
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-05 20:14:31 -05:00
Johan Hedberg
0fdf33c734 Bluetooth: Move L2CAP connection notification earlier
We need to notify and initialize internal code before going ahead and
notifying external code of a new connection. Also, in principle the
L2ACP APIs for a connection should only be used after L2CAP has been
told the connection exists.

Change-Id: I0c8386b39ca86290da03ed68ad01c007b1c41c10
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-05 20:14:31 -05:00
Johan Hedberg
4bfbbce870 Bluetooth: Remove unnecessary comment
Change-Id: I80827d4692da5e3b0ac4fcc1b75146746c8bf987
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-05 20:14:31 -05:00
Johan Hedberg
44fa50b975 Bluetooth: Fix minor coding style issue
Change-Id: I54e952c10d51bb322daae053889dcfdb188223e1
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-02-05 20:14:31 -05:00