1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

199 Commits

Author SHA1 Message Date
Martine Lenders
d94ba6c7d1 gnrc_sixlowpan_iphc: use gnrc_netif_hdr_get_netif() function 2018-12-05 14:08:32 +01:00
Martine Lenders
868a856cbc gnrc_sixlowpan: use gnrc_netif_hdr_get_netif() function 2018-12-05 14:08:32 +01:00
05b6af466c sys: add missig <string.h> includes 2018-09-20 23:47:40 +02:00
Martine Lenders
a9d0f20c7e
Merge pull request #8626 from miri64/gnrc_sixlowpan_iphc/enh/clean-up-nhc
gnrc_sixlowpan_iphc: cleanup NHC encoding
2018-08-17 10:13:34 +02:00
Martine Lenders
0a9793c49b gnrc_sixlowpan_iphc: cleanup NHC encoding 2018-08-16 16:55:28 +02:00
Joakim Nohlgård
3cc088689e 6lo: Speling correction in comment 2018-08-14 10:08:52 +02:00
Joakim Nohlgård
58281e9135 6lo: Set more data flag on all but last frag 2018-08-14 10:08:17 +02:00
Martine Lenders
69d9ecc0d9 gnrc_sixlowpan_iphc: refactor reception for #8511
This refactors reception/decoding part of `gnrc_sixlowpan_iphc` to the
more layered approach modeled in #8511. Since the reception part is
already complicated enough I decided to divide send and receive up into
separate changes.
2018-07-25 18:15:09 +02:00
Cenk Gündoğan
7fef5e030a
Merge pull request #9485 from miri64/gnrc_sixlowpan_iphc/enh/i8511-send
gnrc_sixlowpan_iphc: refactor sending for #8511
2018-07-25 17:57:59 +02:00
Martine Lenders
80322cbd7d gnrc_sixlowpan_iphc: refactor sending for #8511
This refactors sending/encoding part of `gnrc_sixlowpan_iphc` to the
more layered approach modeled in #8511. Since the reception part is
already was pretty complicated to refactor, I decided to divide send
and receive up into separate changes.
2018-07-25 17:35:59 +02:00
Martine Lenders
d6b2a9ed01
Merge pull request #9483 from miri64/gnrc_sixlowpan_frag/enh/finish-frag
gnrc_sixlowpan_frag: Expose functions to finish datagram
2018-07-25 11:53:14 +02:00
Martine Lenders
64fed621d2 gnrc_sixlowpan_frag: Expose functions to finish datagram
This will be used in the IPHC refactoring to control the reassembly
buffer as a context.

I also adapted the name of `gnrc_sixlowpan_frag_gc_rbuf()` to be in
line with the rest of the newer functions.
2018-07-25 11:26:02 +02:00
Martine Lenders
8721d0b0a2 gnrc_sixlowpan_frag: add page context to reassembly buffer
While refactoring IPHC I noticed that the page actually can already be
used for fragmentation: Given @cgundogan's work on [ICN LoWPAN] we can
already assume, that the page context may (among other thing) determine
the type of the reassembled packet. This PR provides the basis for
that.

[ICN LoWPAN]: https://tools.ietf.org/html/draft-gundogan-icnrg-ccnlowpan-01
2018-07-03 14:08:14 +02:00
Cenk Gündoğan
16e1f972ab
Merge pull request #9424 from miri64/gnrc_sixlowpan_frag/enh/async-gc
gnrc_sixlowpan_frag: add asynchronous rbuf GC
2018-07-03 11:45:52 +02:00
Martine Lenders
254f16e81f gnrc_sixlowpan_frag: add asynchronous rbuf GC
While the current approach for garbage collection in the 6Lo reassembly
buffer is good for best-effort handling of
*fragmented* packets and nicely RAM saving, it has the problem that
incomplete, huge datagrams can basically DoS a node, if no further
fragmented datagram is received for a while (since the packet buffer is
full and GC is not triggered).

This change adds a asynchronous GC (utilizing the existing
functionality) to the reassembly buffer, so that even if there is no new
fragmented packet received, fragments older than `RBUF_TIMEOUT` will be
removed from the reassembly buffer, freeing up the otherwise wasted
packet buffer space.
2018-07-03 10:25:25 +02:00
Martine Lenders
68fe6682ff gnrc_sixlowpan_frag: add current_size to exposed struct
Since IPHC also manipulates the total number of bytes of a received
datagram (by decompressing it), this also needs to be exposed. I guess
I was too focused on introducing a *generic* packet buffer for a future
virtual reassembly buffer (where it isn't needed, but so isn't `pkt` to
be honest), that I totally forgot about it in #9352.
2018-06-28 12:28:51 +02:00
Martine Lenders
a2eb3c7f15 gnrc_sixlowpan_frag: adapt for #8511
This refactors the `gnrc_sixlowpan_frag` module for the API proposed
in #8511.

The `ctx` for `gnrc_sixlowpan_frag_send()` is required to be a
`gnrc_sixlowpan_msg_frag_t` object, so IPHC can later on use it to
provide the *original* datagram size (otherwise, we would need to adapt
the API just for that, which seems to me as convoluted as this
proposal).

I also provide an expose function with a future possibility to provide
more than just one `gnrc_sixlowpan_msg_frag_t` object later on (plus
having cleaner module separation in general).
2018-06-26 19:38:33 +02:00
Cenk Gündoğan
e08fd546cf
Merge pull request #9353 from miri64/gnrc_sixlowpan/opt/rm-pad
gnrc_sixlowpan: fix order of gnrc_sixlowpan_msg_frag_t
2018-06-18 10:59:27 +02:00
Martine Lenders
2c9ee62eb0 gnrc_sixlowpan: fix order of gnrc_sixlowpan_msg_frag_t
While working on #9352 I noticed that the order of members in the
`gnrc_sixlowpan_msg_frag_t` struct costs us 4 bytes in RAM due to byte
alignment. This PR fixes the order of members, so they are the most
packed.
2018-06-14 17:35:29 +02:00
Martine Lenders
86cbde2db5 gnrc_sixlowpan_frag: expose (parts of) reassembly buffer
This exposes the parts of the reassembly buffer to be usable as context
as proposed in #8511.

I only exposed *parts of* for two reasons:

1. I don't need to expose further types (like `rbuf_int_t`), that are
   not of interest outside of fragmentation.
2. This allows for an easy future extension for the virtual reassembly
   buffer as proposed in [[1]].

This makes this change a little bit more involved, because instead of
just renaming the type, I also need to add the usage of the `super`
member, but I think in the end this little preparation work will be
beneficial in the future.

[1]: https://tools.ietf.org/html/draft-watteyne-6lo-minimal-fragment-01#section-3
2018-06-14 17:22:58 +02:00
Cenk Gündoğan
18005666ac
Merge pull request #8512 from miri64/gnrc_sixlowpan/enh/gnrc-dispatch
gnrc_sixlowpan: Introduce 6Lo GNRC dispatch sub-layer
2018-03-01 15:03:03 +01:00
Martine Lenders
67d7aeab7e gnrc_sixlowpan: Introduce 6Lo GNRC dispatch sub-layer
This abstracts the sending and receiving of 6Lo packets to the new
6Lo sub-layer model introduced in #8511 and exemplifies it as well.
2018-03-01 14:15:07 +01:00
Martine Lenders
d4661af4c8 gnrc: 6Lo fixes for BLE 2018-02-05 22:34:31 +01:00
smlng
65b99c994d gnrc/sixlowpan: fix format error in debug output 2018-01-17 15:25:15 +01:00
7b72f623d2 gnrc: netif2: DEBUG fixes 2018-01-15 14:37:05 +01:00
4dba9ee6ba sys: net: adapt to compile-checked debug messages 2018-01-15 14:37:04 +01:00
smlng
b283b7784c make: fix various compile errors with Wextra
pkg, nordic_softdevice_ble: disable CFLAGS to omit compiler error
        sys, pm_layered: fix casting nonscalar to the same type
        cpu, stm32_common: fix type-limits, remove always true assert
        cpu, stm32f4: fix pointer arithmetic in periph/i2c
        drivers, at86rf2xx: fix type-limits where condition always true
        saul, gpio: fix if no gpio configured for saul
        cpu, saml21: add frequency check to periph/timer
        driver, cc110x: fix unused param and type-limts errors
        boards, wsn430-common: fix old-style-declaration
        make: fix old style definition
        drivers, sdcard_spi: fix old style typedef
        driver, at30tse: remove unnecessary check
        driver, nrf24: fix type-limit
        driver, pn532: change buffer from char to uint8_t
        tests/driver_sdcard: fix type limits
        boards, feather-m0: add missing field inits
        driver, tcs37727: fix type limits
        pkg, emb6: disable some compiler warnings
        tests/emb6: disable some compiler warings
        pkg, openthread: fix sign compare and unused params
        tests/trickle: fix struct init
        tests/pthread_cooperation: fix type limits
        board, mips-malta: remove feature periph_uart
        shell: fix var size for netif command
        gnrc, netif: fix sign-compare
        gnrc, nib: fix sign-compare
        shell: fix output in netif command
        posix: fix type-limits in pthread_cond
2017-11-28 18:31:43 +01:00
Martine Lenders
f90a9a875f
gnrc_ndp2: rename to gnrc_ndp 2017-11-17 10:41:54 +01:00
Martine Lenders
31b1ceb440
gnrc_netif2: rename to gnrc_netif 2017-11-17 10:41:54 +01:00
Martine Lenders
71a7dbf918
gnrc: remove legacy network interface structures 2017-11-17 09:20:29 +01:00
Martine Lenders
ccb8462d94
gnrc_sixlowpan_nd: adapt for NIB 2017-11-16 15:49:21 +01:00
Martine Lenders
861035f22d gnrc: integrate gnrc_netif2
Not link-able, since NDP and NC are missing (intentionally)
2017-11-07 19:08:44 +01:00
Lucas Jenss
6998ffbb14 cppcheck: Provide consistent reason formatting for all cppcheck-suppresses 2017-10-10 10:25:20 -07:00
0fcc7d3834 cleanup: apply headerguard script output 2017-05-24 17:54:02 +02:00
Oleg Hahm
45cd9ad5c4 gnrc: 6lowpan-nd: suppress wrong cppcheck warnings 2017-04-14 14:36:15 +02:00
Oleg Hahm
191797bc6b gnrc: 6lowpan-nd: removed superfluous check 2017-04-14 14:36:15 +02:00
Joakim Nohlgård
0ba9fd3456 6lo: Avoid null ptr dereference when DAC=1, DAM=00, M=1 2017-04-02 18:42:01 +02:00
Oleg Hahm
7ee7801c10 *: remove trailing underscores from header guards 2017-01-19 18:30:53 +01:00
Oleg Hahm
4f4214235b timex: unambiguous time conversion macros 2017-01-19 13:18:08 +01:00
Joakim Nohlgård
7c48c891a0 xtimer: Update xtimer usage to match API changes 2016-11-29 20:44:31 +01:00
e0164660eb Merge pull request #6064 from miri64/gnrc_sixlowpan_nhc/fix/forwarding
gnrc_sixlowpan_nhc: fix forwarding case
2016-11-09 15:56:21 +01:00
Martin Elshuber
b582e64b09 gnrc_sixlowpan_iphc.c: Updated comments some logic 2016-11-08 13:04:12 +01:00
Martin Elshuber
faa47a0e03 gnrc_sixlowpan_iphc: Fixed encoding when COMP=0
Summary:

Even ehen COMP is cleared, the algorithm always elides part of the address when a matching
context is found.

This behviour occurs because in the line

  if ((src_ctx != NULL) || ipv6_addr_is_link_local(&(ipv6_hdr->src)))

the COMP bit is not tested.

This patch fixes the problem by setting [src|dst]_ctx to NULL if the
context must not be used.
2016-11-07 19:53:04 +01:00
Martine Lenders
1605b506c9 gnrc_sixlowpan_nhc: fix forwarding case 2016-11-07 15:46:56 +01:00
Martine Lenders
dc45cd2610 gnrc: use new netreg helper functions everywhere 2016-10-25 18:47:30 +02:00
Martine Lenders
98949f5cb4 Merge pull request #5498 from kaspar030/make_msg_content_ptr_void_star
core: change msg.content.ptr type to void *
2016-06-03 13:59:25 +02:00
Peter Kietzmann
e8e9619f01 Merge pull request #5501 from Yonezawa-T2/gnrc_sixlowpan_iphc_propagate_error
gnrc_sixlowpan_iphc: propagate UDP decode error
2016-06-03 10:07:06 +02:00
Yonezawa-T2
ba4b099d93 gnrc_sixlowpan_iphc: propagate UDP decode error 2016-06-03 11:35:22 +09:00
Yonezawa-T2
a6c14dadb3 gnrc_sixlowpan_iphc: fix compile error for debug output 2016-06-03 11:33:08 +09:00
7718f114cb all: remove pointer casts for msg.content.ptr 2016-06-02 23:13:42 +02:00
Martine Lenders
84a9ddb2db gnrc_sixlowpan_iphc: fix comparison signage 2016-04-20 06:55:24 +02:00
Oleg Hahm
5d65d59b34 Merge pull request #5232 from gebart/pr/jfischer-nhc-fix
gnrc_sixlowpan_iphc.c: handle forwarded GNRC_NETTYPE_IPV6 packet
2016-04-19 14:09:11 +02:00
Cenk Gündoğan
c0790aaa52 gnrc_sixlowpan_ctx: use correct member for ctx id in debug 2016-04-11 01:26:18 +02:00
Johann Fischer
f405891b68 gnrc_sixlowpan_iphc.c: handle forwarded GNRC_NETTYPE_IPV6 packet 2016-04-02 07:52:47 +02:00
Martine Lenders
312047fa84 Merge pull request #5029 from gebart/pr/6lo-decoded-hdr-snip-ordering
gnrc_sixlowpan: Preserve order when replacing 6lowpan header by decoded IPv6 header
2016-03-16 11:53:53 +01:00
Joakim Nohlgård
d770d6ab31 gnrc_sixlowpan: Preserve order when replacing 6lowpan header by decoded IPv6 header 2016-03-12 11:36:24 +01:00
Martine Lenders
178c3169d7 gnrc_sixlowpan_frag: use IPv6 type for reassembled packet 2016-03-12 10:45:03 +01:00
Cenk Gündoğan
ba7d6230c0 Merge pull request #4935 from authmillenon/gnrc_sixlowpan_iphc_nhc/fix/frag
gnrc_sixlowpan_iphc_nhc: fix NHC UDP decoding for fragmented packets
2016-03-11 16:41:27 +01:00
Martine Lenders
ae52bf9a12 gnrc_sixlowpan_iphc_nhc: fix NHC UDP decoding for fragmented packets 2016-03-04 16:40:45 +01:00
Martine Lenders
4504e40fe0 Merge pull request #4771 from Yonezawa-T2/rbuf_gc_improvement
rbuf: does not remove oldest entry if we have entry for current fragment
2016-03-04 05:40:00 +01:00
Yonezawa-T2
31fa3404ca rbuf: does not remove oldest entry if we have entry for current fragment
If all rbuf slots are in use, `_rbuf_gc` removes the oldest entry even if the
entry for the current fragment exists. This effectively decreases usable slots
by one. This patch makes `_rbuf_gc` removes the oldest entry only if there is
no entry for the current fragment.
2016-03-03 11:19:48 +09:00
Cenk Gündoğan
10cb4d66bf Merge pull request #4870 from authmillenon/ipv6_addr/enh/opt
ipv6_addr: optimize for size
2016-03-02 22:04:32 +01:00
Martine Lenders
ac07862363 Merge pull request #4796 from gebart/pr/udp-nhc-typo
6lo: Fix typo in UDP NHC checksum elision bit define
2016-03-01 21:54:32 +01:00
Martine Lenders
0e32745b8a gnrc: replace static initializers with constants where sensible 2016-03-01 18:29:15 +01:00
Joakim Nohlgård
647c87c9a5 6lo: Fix typo in UDP NHC checksum elision bit define 2016-03-01 12:35:14 +01:00
ded39b461e sys: random: rename genrand_* to random_* 2016-02-29 21:33:17 +01:00
Yonezawa-T2
984e02a7ff rbuf: made RBUF_INT_SIZE configurable 2016-02-29 13:02:32 +09:00
Cenk Gündoğan
0ac4ee705c ipv6: rpl: add source routing header for RPL 2016-02-27 20:39:12 +01:00
Oleg Hahm
0a65d8c558 Merge pull request #4770 from Yonezawa-T2/rbuf_usec
rbuf: change arrival time unit from seconds to microseconds
2016-02-16 11:38:06 +01:00
Yonezawa-T2
d5a02b6de1 rbuf: change arrival time unit from seconds to microseconds 2016-02-16 17:22:25 +09:00
Martine Lenders
379703ae3a gnrc: use gnrc_pkt_search_type instead of LL_SEARCH_SCALAR 2016-02-11 01:05:02 +01:00
Yonezawa-T2
f638d68ebb rbuf: drop overlapped fragment only if offset or size differs from previous one.
https://tools.ietf.org/html/rfc4944#section-5.3 says:

> If a link fragment that overlaps another fragment is received, as
> identified above, and differs in either the size or datagram_offset
> of the overlapped fragment, the fragment(s) already accumulated in
> the reassembly buffer SHALL be discarded.  A fresh reassembly may be
> commenced with the most recently received link fragment.
2016-02-09 11:15:22 +09:00
Oleg Hahm
250c288929 6lowpan nd: prefer NCEs over FIB entries
If an address can be found in the neighbor cache, it should be used - whatever the FIB may return.
2016-01-29 18:56:03 +01:00
Martine Lenders
da5abe1bcd gnrc_sixlowpan_nd: use gnrc_ipv6_nc_get_l2_addr() 2016-01-26 10:19:16 +01:00
Yonezawa-T2
5cb904b57e gnrc_sixlowpan_nd: fixed crash on gnrc_sixlowpan_nd_next_hop_l2addr.
When `gnrc_ndp_node_next_hop_l2addr` cannot resolve L2 address, it creates a
temporary neighbor cache entry with interface `KERNEL_PID_UNDEF` (unless the
interface is already known) to send a neighbor solicitation. When another packet
directed to the same address is going to sent before receiving a neighbor
advertisement, `gnrc_sixlowpan_nd_next_hop_l2addr` gets the temporary neighbor
cache entry and calls `gnrc_ipv6_netif_get` with `KERNEL_PID_UNDEF`, resulting
get a `NULL`. We must check `NULL` before dereference it.

FYI, both `gnrc_ndp_node_next_hop_l2addr` and
`gnrc_sixlowpan_nd_next_hop_l2addr` are enabled when
`gnrc_sixlowpan_border_router_default` module is enabled with `GNRC_NETIF_NUMOF`
is greater than 1:

gnrc_sixlowpan_border_router_default
→ gnrc_ipv6_router_default
→ gnrc_ndp_router (if GNRC_NETIF_NUMOF > 1)
→ gnrc_ndp_node
→ gnrc_ndp_node_next_hop_l2addr is called from _next_hop_l2addr

gnrc_sixlowpan_border_router_default
→ gnrc_sixlowpan_nd_border_router
→ gnrc_sixlowpan_nd_router
→ gnrc_sixlowpan_nd
→ gnrc_sixlowpan_nd_next_hop_l2addr is called from _next_hop_l2addr
2016-01-07 10:02:49 +09:00
Cenk Gündoğan
7d628514ab sixlowpan: iphc: fix dependencies for udp and nhc 2015-12-23 13:57:55 +01:00
Cenk Gündoğan
237706dd9e sixlowpan: iphc: remove dispatch and assign result to pkt 2015-12-22 20:54:39 +01:00
Martine Lenders
d342d35dd8 gnrc_sixlowpan: Fix IPHC/NHC packet order problem 2015-12-22 17:14:33 +01:00
Oleg Hahm
83649ddb59 Merge pull request #4531 from Yonezawa-T2/gnrc_avoid_infinite_loop
sixlowpan: fixed infinite loop
2015-12-22 11:11:55 +01:00
Yonezawa-T2
fe0e58dce1 gnrc_sixlowpan_nd: fixed crash when there are no routers 2015-12-22 11:29:57 +09:00
Yonezawa-T2
9108d2779d sixlowpan: fixed infinite loop
When prefix entry is resued, it may form a looped list, results in infinite loop
in gnrc_ndp_internal_send_rtr_adv.
This patch avoids looped lists.
2015-12-22 11:29:04 +09:00
Yonezawa-T2
c36766a31f OSX: fix warnings/errors thrown by clang on OS X
gnrc_ipv6_nc, gnrc_sixlowpan, gnrc_netdev2_eth, gnrc_ipv6, xbee, sixlowpan,
sc_gnrc_6ctx
2015-12-10 11:23:56 +09:00
Johann Fischer
a85d50b9d1 gnrc_sixlowpan_iphc.c: add nhc udp decoding and encoding
This patch adds UDP Header Compression and Decompression as
specified in https://tools.ietf.org/html/rfc6282#section-4.3
UDP NHC module will be included only if UDP is used.
2015-12-08 14:50:25 +01:00
Johann Fischer
199789ffbc gnrc_sixlowpan.c: fix warning if GNRC_SIXLOWPAN_FRAG module not used 2015-12-08 13:59:15 +01:00
Martine Lenders
15220b26ad Merge pull request #4381 from PeterKietzmann/sixlo_frag_unblocking
gnrc_sixlowpan_frag: Make fragmentation non-blocking
2015-12-08 13:13:48 +01:00
Hauke Petersen
41979b64cd sys: adapted to renamed THREAD FLAGS 2015-12-07 22:09:47 +01:00
PeterKietzmann
331fa34502 gnrc_sixlowpan_frag: msg based fragmentation 2015-12-07 17:49:02 +01:00
test
db7e8a7b37 sixlowpan: iphc: minor optimizations 2015-11-23 13:17:23 +01:00
Oleg Hahm
46dc908fcb gnrc 6lowpan: exclude CTX if not part of the app
This removes dependencies to 6LoWPAN context module if an application is built without support for it.

Also, includes a missing header.
2015-11-17 12:04:11 +01:00
Cenk Gündoğan
bf3a504691 nc: ndp: sixlowpan: remove timex.h include 2015-11-09 14:55:04 +01:00
Cenk Gündoğan
401e1b3814 sixlowpan: timex_t -> uint32_t 2015-11-09 14:55:04 +01:00
Cenk Gündoğan
47a02d9d07 ipv6: ndp: sixlowpan: remove vtimer includes 2015-11-02 15:02:08 +01:00
Cenk Gündoğan
3b825c2523 sixlowpan: use xtimer_now() instead of vtimer_now() 2015-10-28 21:15:11 +01:00
Cenk Gündoğan
023c0984b3 sixlowpan: switch ltimer to be an xtimer 2015-10-28 21:03:09 +01:00
Cenk Gündoğan
4297972054 nc: use xtimer for gnrc_ipv6_nc_t::nbr_sol_timer 2015-10-28 15:24:45 +01:00
Martine Lenders
493597ec1d Merge pull request #3845 from cgundogan/pr/gnrc_sixlowpan_iphc/assert
gnrc_sixlowpan_iphc: move assert to a valid position
2015-10-27 20:11:47 +01:00
Cenk Gündoğan
d587cf9cd4 netif: use xtimer for gnrc_ipv6_netif_t::rtr_sol_timer 2015-10-26 21:03:38 +01:00
Cenk Gündoğan
40e504de65 nc: use xtimer for gnrc_ipv6_nc_t::type_timeout 2015-10-22 15:55:46 +02:00
Cenk Gündoğan
beb3321132 nc: remove unused rtr_sol_timer 2015-10-20 19:05:42 +02:00
Martine Lenders
891450d29d gnrc_netapi: recover from message send errors 2015-09-29 16:58:08 +02:00