Commit graph

41120 commits

Author SHA1 Message Date
Vinicius Costa Gomes
2d4e7b6c6e net: ipv6: Fix sending packets with invalid addresses
When the context being used is bound to a multicast address, the source
address of the IPv6 packet was the multicast address, this is wrong. See
RFC4291, Section 2.7:

"Multicast addresses must not be used as source addresses in IPv6
packets or appear in any Routing header."

If the context was bound to an address that would be invalid as an IPv6
source, we find a better alternative.

Change-Id: Ibefb4f2104e39658babfaaacf02f241c48f010cf
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
2016-12-02 12:41:02 +02:00
Jukka Rissanen
6b621831cf net: Try to send IPv6 packet even if default route is missing
We were dropping the packet too early as the neighbor cache might
have the peer address stored so the cache needs to be checked too.

Change-Id: I307162cbc0da02e802ac8bb321b7b964c7388ace
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:02 +02:00
Jukka Rissanen
3cd07ca300 net: Create a separate buffer when sending IPv6 NA
When we receive IPv6 neighbor solicitation message,
we must not re-use the RX buffer when sending the IPv6
neighbor advertisement. This was an issue for IEEE 802.15.4
technology which has a variable size link layer header.
If we use the RX buffer for sending, the size of the link
layer header can be wrong and the packet might be dropped
by the L2 layer.

Change-Id: I77aed386847b6ccb7ec0ddca873fe00b840c35fd
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:02 +02:00
Tomasz Bursztyka
f8ec175aa7 drivers: ieee802154: Fix length handling in uart-pipe
15.4 drivers are supposed to append LQI byte in the end of the buffer,
but of course there is no such thing in uart-pipe. Thus the bug, so
let's announce the proper length even if such LQI is missing.
Also align the debug output to proper length (FCS included)

Change-Id: Ib9ad86a8c22e1cf6437bc82e7fce11a489d0e761
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:02 +02:00
Tomasz Bursztyka
37ea53e023 net: 6lo: Make editor happy
Looks like auto-indentation is not working properly if editor sees 2
times a '}' as it will not interpret the #ifdef, so fixing this.

Change-Id: I848f705fa5a5e488cb43e1090ac7551140639f6d
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:01 +02:00
Tomasz Bursztyka
3cb1212ebe net: ieee802154: Let ORFD setting ACK flag through net_mgmt
Useful for testing purposes. On RFD level, net mgmt will be selected by
default and such feature will thus be available.

Change-Id: Ic4f1c75557abae6edae5344f4263a106d218ed73
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:01 +02:00
Tomasz Bursztyka
ab32634b51 net: ieee802154: Add debug output to radio strategy drivers
Change-Id: Iffd628c0ae8b472f93f2f24a187b3fc6e563c6e8
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:01 +02:00
Tomasz Bursztyka
d4b429d176 net: ieee802154: Limit MAC command frame generation to RFD
ORFD level does not need it.

Change-Id: Ie70d0df56b9c7365e265cce7cbe53807132ea4cc
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:01 +02:00
Tomasz Bursztyka
8e3750a07d net: ieee802154: MAC command frames needs a buffer from tx pool
Such frame is going to be sent.

Change-Id: Ia5dd8b1427ebb609633522e7c94933c1a0be5b61
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:01 +02:00
Tomasz Bursztyka
476d1d33dc net: ieee802154: Fix a small indentation issue
Change-Id: Ief85662c4355f0cd03b08f23bfcea535a70a101d
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:01 +02:00
Tomasz Bursztyka
3e23b2b824 samples: ieee802154: L2 debug Kconfig option has changed
Change-Id: I81e23038947e9423b38391943298b67c83a7a221
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:01 +02:00
Paul Sokolovsky
ad064e1434 eth: ksdk: Protect Ethernet frame buffer operations with IRQ lock.
As there's a single intermediate frame buffer used by both RX and TX
routines, protect operations on it with irq_lock() to avoid possibility
that it will be concurrently modified.

Change-Id: Ibbaf882a15fbb193054dbb13ae848becf9deef3f
Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
2016-12-02 12:41:01 +02:00
Sergio Rodriguez
0b56b4066f samples/mbedtls_dtlsclient: mbedTLS sample DTLS client app on Arduino 101.
This is a sample app using ECJPAKE crypto algorithm on DTLS, using mbedTLS,
native IP stack and the enc28j60 SPI Ethernet Driver

Change-Id: I658c3d9a54cfdd164a4147903125400f223c6e0a
Signed-off-by: Sergio Rodriguez <sergio.sf.rodriguez@intel.com>
2016-12-02 12:41:01 +02:00
Paul Sokolovsky
8b1769a923 eth: ksdk: Update driver for native IP stack.
This updates driver for Kinetis SDK Ethernet device (used for example
by BOARD=frdm_k64f) to work with native Zephyr IP stack driver model.
The conversion is done based on the template of eth_enc28j60.c.

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
Change-Id: Ifb0c7d3f921d663d00a2ded89ecdf2336b6e3783
2016-12-02 12:41:01 +02:00
Jukka Rissanen
750a93df40 net: Fix IPv6 address debug print
The allocated space for IPv6 string was too short by 10 chars
which meant that full IPv6 address was not printed correctly.

Change-Id: I9c7f3f118f486f88e769aaadf09d100a1d4fd6bc
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:01 +02:00
Jukka Rissanen
d6540e8517 net: rpl: Add IPv6 RPL option handling
If the RPL is not compiled in, then skip all the RPL IPv6
options that are unknown. This way it is possible to have
non-RPL device in the network even if the IPv6 packets contain
RPL options.

Change-Id: Iff24078f48cd9fe5803355974fac0beb0a7a9e15
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:01 +02:00
Jukka Rissanen
c15b467d42 net: tests: Send IPv6 hop-by-hop option to IP stack
Added a test to send HBH option to IP stack. Currently
the test will always pass, activate some more debugging
to see what the IP stack is doing with the option.

Change-Id: Id0ab1590eb8216f5f67c4d43ce2e882186334198
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:01 +02:00
Jukka Rissanen
bc5bcdd843 net: Add HBHO IPv6 extension handling support
Add IPv6 Hop-by-hop option handling.

Change-Id: Iaf28666df18f733e8f475b90e002b86cd3b4e7e4
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
010b7c8eda net: Add extra parameter to ICMPv6 error API
Some errors need extra data to be sent to peer.

Change-Id: I142e86d0b21141498148b59f285152fbb51a84ed
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
057331971c net: Add IPv6 extension option defines
Change-Id: I74c2e60e73a20c283434e94a39e2676045a23275
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
5c79f01181 net: nbuf: Add function to add stuff to IPv6 extension map
Utility function that can add option bits to IPv6 option bitmap.

Change-Id: Ia10d27c201556fb960a736590788b791a7e3c018
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
b9765cc43e net: Add more ICMPv6 option definitions
Change-Id: Iae4abd6b9ddcf6a862d772c9b58554bb5b7b2cd3
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
cd4365de9a net: Add IPv6 routing support
Route IPv6 packets properly.

Change-Id: I349d4fcbae5624baa912a77da59d6814eb2ab6b3
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
dffafbd290 net: tests: Unit tests for RPL
Change-Id: I5c2c4dd4eb8a8af77bd0d8db06b09a25871893b3
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
de43aaca54 net: rpl: Objective Function Zero support
Support for Objective Function Zero,
see RFC 6552 for details.

Change-Id: I5e976fdc7e087b3b65005884e05a28fb3e35c257
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
47b535c2ee net: rpl: MRH Objective Function support
Support for Minimum Rank with Hysteresis,
see RFC 6719 for details.

Change-Id: Ie3019e8516bba516d3bc55f6325288d738e26588
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
98404b175c net: rpl: Initial commit
RPL implementation taken from net/ip/contiki/rpl and
ported to use the new stack.

Origin: Contiki

Change-Id: I479d9dd143b763f90cb7915806fd7e9faea0300c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
13dd72a593 net: Add helpers to get network interface IPv6 addresses
Add utilities to return network interface link local and
global IPv6 addresses.

Change-Id: I54d0ec28410b9ad4ad7068a887bfa6706453159c
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
d4c910ec9f net: Add IPv6 extension header type values to net_ip.h
Change-Id: I1925d4a894675b503b033b78e7b717a8993ec331
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
fa801d5b19 net: Add helper to find default IPv6 router
Go through the router list and return the default router
where to send the network packet.

Change-Id: I87e5118b03352b7d11e1fde800d1530e5929ebab
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
865d82dfe1 net: Add helper to check if the IPv6 address is part out subnet
Helper checks if the IPv6 address belongs to one of the subnets
defined for network interfaces.

Change-Id: I0e88ebe5014a514404b589e32cc71590950a39c7
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:00 +02:00
Jukka Rissanen
29e9621c50 net: Add utility to go through all network interfaces
Change-Id: I0a9dabf3585fb3813b806238f6e5049c2646890d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
a679403888 net: Get IPv6 neighbor by using index
Add utility function to return IPv6 neighbor from
link layer index.

Change-Id: Icb3c6400c0bc115a10fec278878957d398676cb3
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
5ca1df30d2 net: Neighbor cache did not link ll address properly
If the neighbor cache already contains neighbor with the same
link layer address, then just increase ref count instead of
creating a new entry.

Change-Id: I00d9b6febc126973f658051d7aaa6036d37e9fdd
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
039bcc3d65 net: Add function to traverse through IPv6 routes
Needed in RPL.

Change-Id: Iee3fd71de5aec4f64d76ef70563708531696829b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
abca88b63f net: IPv6 neighbor debug prints enhanced
Printing now the neighbor lladdr index when applicable.

Change-Id: I9d6bd0557636fe09d7ef894cc08c793bce9ccf06
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
fa76b6a1fa net: Add multicast route API support
Change-Id: I8e05aa534f6b6d6586ffee4878217db35668adba
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
41fa0c02df net: Add func that checks if address is global multicast one
Change-Id: If40e8833f8b08c0b066650a2c680771ad0cdc252
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
8420709a7c net: route: Add function to remove route by nexthop
This net_route_del_by_nexthop_data() variant will also match
routing protocol specific data.

Change-Id: I608b27ede3a95c7048b16278209072f0b21a260d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
88ae57f5cc net: Add utility function to return neighbor by index
Added net_ipv6_get_nbr_by_index(uint8_t idx) function which
will return IPv6 neighbor entry according to given link
layer index.

Change-Id: I36d61730815d9077ae74d282d686397db1d7cc6b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
4e70771a9d net: Call context send cb when packet has been really sent
If the L2 layer discards the network packet, we call context
send callback. If the L2 accepts the packet, then this callback
should not be called yet. After the packet is really sent by
the network driver, we inform the final status to network
context handler.

Change-Id: I63c734b8506aae198b62616e8f6f0dbb430f6bcd
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
8aac3ed390 net: Add support for link cb in net_if
The other part of the stack can register a handler that is
called after the network packet has been sent. This callback
is used by RPL routing code.

Change-Id: I6b76c5f01d1f6706b0c0a56980ad50e1b85fc427
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
b6022564fa net: Moved IPv6 neighbor information struct to ipv6.h file
The IPv6 neighbor information is needed in RPL so we need to
make the neighbor struct public in order to access is from
RPL code.

Change-Id: I71c7144af912209405de2b4457f3be63ab9aea68
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
857b79f55e net: Add API to set the IPv6 reachable timer
Change-Id: I3879aff078904535f18edb7f9db32b8a9882a557
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
b145ba1e83 net: Make neighbor add function available
The neighbor add function is needed in RPL.

Change-Id: Id20a6650b838d1ac4b0c1f3572f232eff4c2f18b
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:59 +02:00
Jukka Rissanen
ade71827ff net: Add utility function to routing to return neighbor entry
We need a way to get neighbor entry (nbr) from routing entry.

Change-Id: I8438e61c7e63db26056b046bd05401beca9731e0
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:58 +02:00
Jukka Rissanen
cac9d1b3cf net: Add support for embedding extra data to routing entries
This can be used to store routing protocol specific data
into neighbor entry. By default no extra data is allocated.

Change-Id: Iabff0a1df676398a47b86adbc398c4f566dcc40a
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:58 +02:00
Jukka Rissanen
14e73e73c3 net: Make DEBUG config option naming consistent
Some of the DEBUG config options had _DEBUG string at the
end of the config option. This is inconsistent with the
rest of the networking stack debug options where the _DEBUG
is located in the middle of the option like this
CONFIG_NET_DEBUG_....

Change-Id: I8542079f9a88631e98b417fd6c62d2db48aa9bdf
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:40:58 +02:00
Andy Ross
3604b2c954 net: tcp: Properly ACK received TCP data
Parse and validate the sequence number and send the ACK synchronously
in the tcp_established() callback.  No attempt is made to unify the
packet with any queued data (which isn't queued yet, but might be
someday).

Note that this requires that an accepted context clone over the
sequence numbers from the listening context (which received them
during the SYN).

(Note also that this exposes a bug in the current SYN handling:
there's only space for one set of sequence numbers on that listening
context, so if we get two SYNs before the round trip ACK arrives we'll
"accept" the wrong connection with garbage sequence numbers and both
connections will fail).

Change-Id: I129e2a4cd926385511a1d22eea6d4f19ff185501
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2016-12-02 12:40:58 +02:00
Andy Ross
c0a48102b5 net: tcp: Fix flag goof in net_tcp_alloc()
My previous race cleanup missed the fact that the memset would end up
clearing the IN_USE flag!  So we were always allocating the same
struct net_tcp (which, because the typical use is to listen on one
socket and then transfer on an accepted socket, almost kinda worked
for a lot of stuff, making this hard to find).

Change-Id: I8ca0c7f835ebd72271df10d03004f38f8b8efbd5
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2016-12-02 12:40:58 +02:00