1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 12:52:44 +01:00
Commit Graph

919 Commits

Author SHA1 Message Date
Benjamin Valentin
120b1485e0 gnrc_ipv6_nib: prevent NULL pointer dereference on nib exhaustion
If the NIB is full, `_nib_onl_get()` returns NULL.
`_reg_addr_upstream()` will then dereference the result without if
it is valid.
2020-12-08 20:41:06 +01:00
benpicco
b18cbd8c2a
Merge pull request #11068 from miri64/gnrc_sixlowpan_frag/new/minfwd
gnrc_sixlowpan_frag: initial import of minimal forwarding
2020-12-01 18:55:51 +01:00
Martine Lenders
27e123608f
gnrc_sixlowpan_iphc: forward received fragments 2020-12-01 16:25:30 +01:00
Martine Lenders
d9be79b266
gnrc_sixlowpan_iphc/minfwd: put only IPHC dispatch in first fragment
This is only the case when minfwd is compiled in.
2020-12-01 16:25:29 +01:00
Martine Lenders
7fe07e35a3
gnrc_sixlowpan_frag_rb: add VRB and use minfwd handling
When a VRB entry exists use minfwd to forward.

When a route exist for the first fragment received in reassembly create
a virtual reassembly buffer entry.
2020-12-01 16:25:29 +01:00
Martine Lenders
df1171a069
gnrc_sixlowpan_frag_rb: make rbuf pointer generic 2020-12-01 16:25:29 +01:00
Martine Lenders
4ce2d01cb9
gnrc_sixlowpan_frag: initial import of minimal forwarding
See https://tools.ietf.org/html/draft-ietf-6lo-minimal-fragment-04
2020-12-01 15:08:08 +01:00
Martine Lenders
3295c833ca
gnrc_ipv6_ext_frag: propagate error up the stack on _snd_buf_free() 2020-12-01 11:32:18 +01:00
Martine Lenders
6303d962a3
gnrc_ipv6_ext_frag: check return value of msg_try_send() 2020-11-30 15:31:59 +01:00
1d5e2e9cd9 all: remove traces of kernel_types.h
Automatically removed using:

    $ git grep -l kernel_types | xargs sed -i '/^#include .kernel_types/d'
2020-11-25 17:52:34 +01:00
0b801c4de0 all: adapt to moved sched defines 2020-11-23 16:56:34 +01:00
Bas Stottelaar
a76cb4ea2f sys/*: ENABLE_DEBUG not needed for inttypes.h 2020-11-02 21:49:39 +01:00
Bas Stottelaar
28ae0c97cd sys/*: use DEBUG_EXTRA_STACKSIZE for debug stacks 2020-11-02 21:49:39 +01:00
Bas Stottelaar
922e2ac1c9 sys/*: replace #if ENABLE_DEBUG with IS_ACTIVE 2020-11-02 21:49:39 +01:00
Bas Stottelaar
27a684aa60 sys/*: remove unneeded ENABLE_DEBUG 2020-11-02 21:34:12 +01:00
Martine Lenders
d135721ad9
gnrc_sixlowpan_rb: remove GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE
Deprecated in c7b6dc587c.
2020-10-28 11:03:15 +01:00
Bas Stottelaar
a0979b10e7 sys/*: remove unneeded ENABLE_DEBUG 2020-10-23 11:29:57 +02:00
Bas Stottelaar
1b35d06a51 sys/*: realign ENABLE_DEBUG 2020-10-23 11:27:48 +02:00
Bas Stottelaar
80d9da90df sys/*: add missing include of assert.h 2020-10-22 11:13:09 +02:00
Bas Stottelaar
47d376c5c3 sys/*: add explicit include of timex.h 2020-10-21 21:47:31 +02:00
Martine Lenders
45144fb4a4
treewide: use new gnrc_pkt API functions instead of utlist.h macros 2020-10-13 13:32:53 +02:00
11aa30625f
sys/net/gnrc: fix typos
- 'Busses' -> 'Buses'
- 'wether' -> 'whether'
- 'inferface' -> 'interface'
- 'registartion' -> 'registration'
- 'divisable' -> 'dividable'
- 'anounce' -> 'announce'
2020-10-02 08:13:18 +02:00
Martine Lenders
9631576b22
gnrc_ipv6_nib: make ARO extra status codes also available without 6LN 2020-09-29 10:45:12 +02:00
Martine Lenders
04f6e06dd4
gnrc_ipv6_nib: only multicast probe UNREACHABLE neighbor if 6LR
Non-routing 6LNs do not have to join the solicited nodes address, so
probing for a neighbor using that address may be in vain and only
spamming the LLN with unnecessary messages. RFC 6775 basically assumes
this in section 5.2:

> There is no need to join the solicited-node multicast address, since
> nobody multicasts NSs in this type of network.
2020-09-29 10:45:12 +02:00
Martine Lenders
555c62de51
gnrc_ipv6_nib: set NCE stale on incoming ARO
In accordance with RFC 6775, section 5.2 an NCE should be set STALE
when an ARO renews the address registration for the address:

> The routers SHOULD NOT garbage-collect Registered NCEs (see
> Section 3.4), since they need to retain them until the Registration
> Lifetime expires.  Similarly, if NUD on the router determines that
> the host is UNREACHABLE (based on the logic in [RFC4861]), the NCE
> SHOULD NOT be deleted but rather retained until the Registration
> Lifetime expires.  A renewed ARO should mark the cache entry as
> STALE.  Thus, for 6LoWPAN routers, the Neighbor Cache doesn't behave
> like a cache.  Instead, it behaves as a registry of all the host
> addresses that are attached to the router.
2020-09-24 13:13:43 +02:00
Francisco
cb6b65e7ff
Merge pull request #14886 from miri64/gnrc/fix/circ-deps
gnrc: remove circular module dependencies
2020-09-09 09:06:28 +02:00
Martine S. Lenders
2cf5b3c185
gnrc_ipv6_hdr: make HDR_NETTYPE dependent on nettype module
In #13994 this was introduced but overlooked here.
2020-09-08 12:53:29 +02:00
Martine S. Lenders
4fe7bb003a
gnrc_ipv6_nib: add missing header includes 2020-09-08 12:53:29 +02:00
Martine S. Lenders
91dfee7ee0
gnrc_ipv6_nib: fix duplicate handling for ARO
When `nce` is NULL on the duplicate check, the later re-fetching of the
`nce` might result in an actual NCE entry that then contains a
duplicate, so we need to re-check the EUI-64 again as well.
2020-09-07 08:42:50 +02:00
Martine S. Lenders
f9c3e5f5a4
gnrc_ipv6_nib: check return value of gnrc_netif_ipv6_addr_idx()
And acquire exclusive network interface access when necessary.

Fixes #14752.
2020-09-07 08:42:50 +02:00
Cenk Gündoğan
538155c344
Merge pull request #14904 from leandrolanzieri/pr/kconfig/change_prefix_convention
treewide: modify Kconfig symbol prefixes
2020-09-01 15:57:06 +02:00
Martine S. Lenders
3b7bab1108
gnrc_ipv6_nib_nc: error on non-link-local address without ARSM 2020-09-01 11:12:55 +02:00
Martine S. Lenders
14efa3185b
gnrc_ipv6_nib: don't add dst from PL to NC without ARSM 2020-09-01 11:12:55 +02:00
Leandro Lanzieri
d25fc243c4
treewide: change prefix for generated Kconfig symbols.
This changes the prefixes of the symbols generated from USEMODULE and
USEPKG variables. The changes are as follow:

   KCONFIG_MODULE_ => KCONFIG_USEMODULE_
   KCONFIG_PKG_ => KCONFIG_USEPKG_
   MODULE_ => USEMODULE_
   PKG_ => USEPKG_
2020-08-31 09:37:09 +02:00
Marian Buschsieweke
3b6fa61829
sys: Cleanup access to internal variables
Replace direct accesses to sched_active_thread and sched_active_pid with
the helper functions thread_getpid() and thread_get_active(). This serves
two purposes:

1. It makes accidental writes to those variable from outside core less likely.
2. Casting off the volatile qualifier is now well contained to those two
   functions
2020-08-24 20:28:11 +02:00
Hauke Petersen
05347190b9 net/gnrc/nib_ft.c: fix minor typo in comment 2020-08-21 16:06:04 +02:00
Martine Lenders
66de39a20a
gnrc_sixlowpan_frag_rb: Check possibly uninitialized pointers 2020-08-20 23:51:38 +02:00
Benjamin Valentin
2ed7f66d33 gnrc_sixlowpan_iphc: fix last byte of iphc_hdr always being 0
Coverty scan found this:

> CID 298295 (#1 of 1): Operands don't affect result (CONSTANT_EXPRESSION_RESULT) result_independent_of_operands:
> (ipv6_hdr_get_fl(ipv6_hdr) & 255) >> 8 is 0 regardless of the values of its operands.

Looking at the code, this appears to be a copy & paste error from the previous line.
2020-08-11 14:09:28 +02:00
Benjamin Valentin
a9a0671232 gnrc_sixlowpan_iphc: fix Out-of-bounds read
Coverty scan found this:

> CID 298279 (#1 of 1): Out-of-bounds read (OVERRUN)
> 21. overrun-local: Overrunning array of 16 bytes at byte offset 64 by dereferencing pointer

The original intention was probably to advance the destination pointer by 4 bytes, not
4 * the destination type size.
2020-08-11 13:31:22 +02:00
Martine Lenders
b043e1fa64
Merge pull request #14683 from miri64/gnrc_sixlowpan_frag_vrb/fix/cppcheck-warning
gnrc_sixlowpan_frag_vrb: fix cppcheck warning
2020-08-03 13:15:52 +02:00
Martine S. Lenders
5885293e9e
gnrc_sixlowpan_frag_vrb: fix cppcheck warning
... which wasn't a false positive after all.
2020-08-03 12:29:06 +02:00
Benjamin Valentin
6af92ee113 gnrc/nib: fix _idx_dsts() calculation
Using pointer difference already gives us the number of elements of
size of what the pointer is pointing to.
Dividing by size will lead to the wrong (always 0) result.
2020-08-03 11:35:54 +02:00
Gunar Schorcht
a440ae7bd9 gnrc/icmpv6: redefinition of MIN macro
Since `min(a,b)` is a very frequently used function, several libraries such as ESP8266 SDK define a `MIN` macro in their header files. Therefore the `MIN` macro should be undefined before its definition to avoid compilation errors if it is defined anywhere else before.
2020-06-25 17:31:07 +02:00
Leandro Lanzieri
375cad38df
gnrc/sixlowpan: Configure queue size with exponent
This changes the configuration macro to be the exponent of 2^n, as the
message queue size needs to be always power of 2.
2020-06-15 07:30:52 +02:00
Leandro Lanzieri
b0168f5fdd
gnrc/ipv6: Configure queue size with exponent
This changes the configuration macro to be the exponent of 2^n, as the
message queue size needs to be always power of 2.
2020-06-15 07:30:50 +02:00
benpicco
70543bba1d
Merge pull request #13275 from miri64/gnrc_ipv6_ext_opt/feat/initial
gnrc_ipv6_ext_opt: initial import
2020-05-20 14:35:58 +02:00
Martine S. Lenders
d04621fc43
gnrc_ipv6_ext_opt: initial import
This provides header parsing for IPv6 hop-by-hop and destination
options according to [RFC 8200].

[RFC 8200]: https://tools.ietf.org/html/rfc8200#section-4.2
2020-05-20 12:34:04 +02:00
Benjamin Valentin
3974a04623 gnrc/nib: add NIB event bus
Add a message bus where threads can listen for nib events.

Currently only the GNRC_IPV6_NIB_EVENT_ADDR_VALID event is
implemented which informs subscribers that an address got
valid.
2020-05-20 10:44:11 +02:00
Martine Lenders
a6fe69b0e8
Merge pull request #13740 from miri64/gnrc_ipv6_nib/fix/abr-add-pio-iface
gnrc_ipv6_nib: only add prefix of same interface to ABR
2020-05-12 15:43:45 +02:00
Martine Lenders
4e6df34576
gnrc_ipv6_nib: only add prefix of same interface to ABR
It doesn't make sense for an Authoritative Border Router to manage a
prefix that does not belong to the border router's downstream
interface.
2020-05-12 13:06:20 +02:00
8ffd34ddd0
Merge pull request #12776 from maribu/test_event_wait_timeout
tests/event_wait_timeout: Fix for 8bit platforms
2020-05-05 21:33:06 +02:00
Martine S. Lenders
cb8a6c36b0
gnrc_ipv6_nib: 6ln: use interface-specific DR for address registration
With multiple 6LoWPAN interfaces the router for the given interface
—the one the triggering RA came over—should be used to register the
address with.

Co-Authored-By: Benjamin Valentin <benpicco@googlemail.com>
2020-04-25 01:20:55 +02:00
Martine S. Lenders
245c04f368
gnrc_ipv6_nib: internal: add capability to search DR by interface
Co-Authored-By: Benjamin Valentin <benpicco@googlemail.com>
2020-04-24 17:57:09 +02:00
Marian Buschsieweke
7b67e74bed
sys/net/gnrc: Use %lu to print times 2020-04-23 21:16:57 +02:00
Leandro Lanzieri
461f40949d
gnrc/ipv6: Group IPv6 related Kconfig files 2020-04-01 14:34:13 +02:00
Leandro Lanzieri
87ac1a652d
gnrc/nib: Expose configurations to Kconfig 2020-03-31 19:02:51 +02:00
Leandro Lanzieri
64dde8f317
gnrc/nib: Move GNRC_IPV6_NIB_ABR_NUMOF to 'CONFIG_' namespace 2020-03-31 18:07:13 +02:00
Leandro Lanzieri
a77d0dd9c5
gnrc/nib: Move GNRC_IPV6_NIB_OFFL_NUMOF to 'CONFIG_' namespace 2020-03-31 18:07:13 +02:00
Leandro Lanzieri
f6ee712e98
gnrc/nib: Move GNRC_IPV6_NIB_DEFAULT_ROUTER_NUMOF to 'CONFIG_' namespace 2020-03-31 18:07:12 +02:00
Leandro Lanzieri
f2ed8b06c0
gnrc/nib: Move GNRC_IPV6_NIB_L2ADDR_MAX_LEN to 'CONFIG_' namespace 2020-03-31 18:07:12 +02:00
Leandro Lanzieri
acd789bd87
gnrc/nib: Move GNRC_IPV6_NIB_CONF_REACH_TIME_RESET to 'CONFIG_' 2020-03-31 18:07:11 +02:00
Leandro Lanzieri
07771de08f
gnrc/nib: Move GNRC_IPV6_NIB_NUMOF to 'CONFIG_' namespace 2020-03-31 18:07:11 +02:00
Leandro Lanzieri
1f20ffc150
gnrc/nib: Move GNRC_IPV6_NIB_CONF_NO_RTR_SOL to 'CONFIG_' namespace
Also evaluate using IS_ACTIVE macro.
2020-03-31 18:07:10 +02:00
Leandro Lanzieri
53a522d642
gnrc/nib: Move GNRC_IPV6_NIB_CONF_MULTIHOP_P6C to 'CONFIG_' namespace
Also evaluate using IS_ACTIVE macro.
2020-03-31 18:07:10 +02:00
Leandro Lanzieri
22b4df9537
gnrc/nib: Move GNRC_IPV6_NIB_CONF_MULTIHOP_DAD to 'CONFIG_' namespace
Also evaluate using IS_ACTIVE macro.
2020-03-31 18:07:09 +02:00
Leandro Lanzieri
3ec296400d
gnrc/nib: Move GNRC_IPV6_NIB_CONF_DC to 'CONFIG_' namespace
Also evaluate using IS_ACTIVE macro.
2020-03-31 18:07:09 +02:00
Leandro Lanzieri
219d5a1de2
gnrc/nib: Move GNRC_IPV6_NIB_CONF_REDIRECT to 'CONFIG_' namspace
Also evaluate using IS_ACTIVE macro.
2020-03-31 18:07:08 +02:00
Leandro Lanzieri
bad9abd349
gnrc/nib: Move GNRC_IPV6_NIB_CONF_DNS to 'CONFIG_' namespace
Also evaluate using IS_ACTIVE macro.
2020-03-31 18:07:07 +02:00
Leandro Lanzieri
e52b93cef0
gnrc/nib: Move GNRC_IPV6_NIB_CONF_ARSM to 'CONFIG_' namespace
Also evaluate it using IS_ACTIVE macro.
2020-03-31 18:07:07 +02:00
Leandro Lanzieri
f23267b67b
gnrc/nib: Move GNRC_IPV6_NIB_CONF_QUEUE_PKT to 'CONFIG_' namespace
Also evaluate it using IS_ACTIVE macro.
2020-03-31 18:07:06 +02:00
Leandro Lanzieri
ce931f179c
gnrc/nib: Move GNRC_IPV6_NIB_CONF_SLAAC to 'CONFIG_' namespace
Also evaluate it using IS_ACTIVE macro.
2020-03-31 18:07:05 +02:00
Leandro Lanzieri
49ec28867c
gnrc/nib: Move GNRC_IPV6_NIB_CONF_ROUTER to 'CONFIG_' namespace
Also evaluate it using IS_ACTIVE macro.
2020-03-31 18:07:05 +02:00
Leandro Lanzieri
1acfe7ae19
gnrc/nib: Move GNRC_IPV6_NIB_CONF_6LN to 'CONFIG_' namespace
Also evaluate it using IS_ACTIVE macro.
2020-03-31 18:07:04 +02:00
Leandro Lanzieri
398bb6d025
gnrc/nib: Move GNRC_IPV6_NIB_CONF_6LR to 'CONFIG_' namespace
Also evaluate it using IS_ACTIVE
2020-03-31 18:07:03 +02:00
Leandro Lanzieri
40c78f1c75
gnrc/nib: Move GNRC_IPV6_NIB_CONF_6LBR to 'CONFIG_' namespace
Also evaluate it using IS_ACTIVE macro.
2020-03-31 18:07:03 +02:00
Benjamin Valentin
a3adaa7ec0 gnrc_ipv6_nib: fix index calculation
We must divide the pointer difference (in bytes) by the size of
the individual elements to get the index of the element.
2020-03-28 00:00:16 +01:00
Benjamin Valentin
a835ad3e13 gnrc_ipv6_nib: append ext_opts when adding sixco 2020-03-27 22:52:31 +01:00
Martine Lenders
cba1a2da0c
Merge pull request #13666 from jue89/feature/evtimer_now_msec
net/gnrc/ipv6/nib: remove direct dependency to xtimer
2020-03-26 13:50:13 +01:00
benpicco
53790d1269
Merge pull request #13713 from miri64/gnrc_sixlowpan_iphc/bug/encode-zero-header
gnrc_sixlowpan_iphc: zero IPv6 header before decompressing into it
2020-03-25 16:43:17 +01:00
Martine S. Lenders
ac222521ab
gnrc_sixlowpan_iphc: zero IPv6 header before decompressing into it 2020-03-25 14:54:18 +01:00
Martine S. Lenders
4fc0251b4b
gnrc_ipv6_nib: only route to prefix list entry if on-link
In 06aa65e1ba (#10627) a new behavior was
introduced in IPv6 route resolution to try address resolution only at
interfaces that have the prefix of the address to be resolved configured
in the prefix list. This however only makes sense, if the prefix
configured is [on-link], otherwise there is small likelihood of the
address to be resolved being on that link.

For the error case presented for 06aa65e (circular routing at the border
router) this made sense, however within a 6LoWPAN, due to the prefix
being valid for the entire mesh, this leads to the nodes always trying
classic address resolution for in-network addresses instead of just
routing to the default route.
Classic address resolution however fails, as 6LoWPAN hosts typically
[don't join the solicited-node multicast address of their unicast
addresses][6LN-iface-init], resulting in in-network addresses not being
reachable.

As such, to prevent both error cases

- the fallback to address resolution by prefix list must only be used
  when the prefix is on-link,
- the prefix configured by DHCPv6/UHCP at the 6LoWPAN border router
  must be configured as on-link, but
- the prefix must not be advertised as on-link within the 6LoWPAN to
  still be [in line with RFC 6775][RFC-6775-forbidden]

With this change these cases are covered.

[on-link]: https://tools.ietf.org/html/rfc4861#page-6
[RFC 6775]: https://tools.ietf.org/html/rfc6775
[6LN-iface-init]: https://tools.ietf.org/html/rfc6775#section-5.2
[RFC-6775-forbidden]: https://tools.ietf.org/html/rfc6775#section-6.1
2020-03-25 13:13:40 +01:00
Martine Lenders
e47c8fa91c
Merge pull request #10627 from miri64/gnrc_ipv6_nib/fix/forward-to-pl
gnrc_ipv6_nib: don't ignore PL for route
2020-03-24 21:49:56 +01:00
Martine Lenders
06aa65e1ba
gnrc_ipv6_nib: don't ignore PL for route
When pinging to a prefix for which there is a prefix list entry on the
node (so no next hop) but a default route, a packet to a non-existent
address under that prefix results in the packet being forwarded to the
default route instead. This fixes it, so the node tries address
resolution on the interface the prefix list entry is associated to.
2020-03-24 18:19:18 +01:00
Juergen Fitschen
877e0a9b32 net/gnrc/ipv6/nib: fix typos 2020-03-24 13:07:20 +01:00
Juergen Fitschen
47f5cd8618 net/gnrc/ipv6/nib: make use of the evtimer system time getter
This commit removes the implication that evtimer uses xtimer as timer backend.
2020-03-24 13:07:20 +01:00
Jose Alamos
6ace7b5472 gnrc_netif: use gnrc_netif_single where possible 2020-03-17 10:54:30 +01:00
Jose Alamos
6143cd800b gnrc_netif: use gnrc_netif_send where possible 2020-03-06 15:22:58 +01:00
Martine Lenders
ebb20f2d44
Merge pull request #13305 from miri64/gnrc_ipv6_ext_frag_stats/feat/initial
gnrc_ipv6_ext_frag: initial import of statistics module
2020-02-10 20:23:13 +01:00
Martine S. Lenders
cf69e61289
gnrc_ipv6_ext_frag: initial import of statistics module 2020-02-06 13:48:42 +01:00
Martine S. Lenders
ed9f43ab3a
gnrc_sixlowpan_frag_stats: add average fragments per datagram statistic 2020-02-06 13:40:23 +01:00
Leandro Lanzieri
5e1ef498a7
Merge pull request #13245 from miri64/gnrc_sixlowpan_frag_rb/enh/doc-fix-kconfig
gnrc_sixlowpan_frag_rb: fix doc on DO_NOT_OVERRIDE
2020-02-03 13:54:37 +01:00
Martine Lenders
02c16479cf
Merge pull request #13244 from miri64/gnrc_ipv6_ext/enh/rbuf-do-not-override
gnrc_ipv6_ext_frag: add configuration option to keep oldest entry
2020-02-03 13:23:20 +01:00
Martine S. Lenders
90ed5bf4af
gnrc_sixlowpan_frag_rb: fix doc on DO_NOT_OVERRIDE 2020-02-03 12:48:19 +01:00
Martine S. Lenders
d99012561a
gnrc_ipv6_ext_frag: add configuration option to keep oldest entry 2020-02-03 12:44:15 +01:00
benpicco
c7b0483549
Merge pull request #12879 from miri64/gnrc_sixlowpan_iphc/feat/nhc-ext
gnrc_sixlowpan_iphc: add support for IPv6 extension header compression
2020-01-31 12:02:47 +01:00
Martine S. Lenders
0b3f785dfe
gnrc_sixlowpan_iphc: add extension header decoding 2020-01-30 17:59:59 +01:00
Leandro Lanzieri
fe820d8d9d Kconfig: Expose gnrc/ipv6/ext/frag configurations 2020-01-30 17:42:42 +01:00
Leandro Lanzieri
5602bd55ed gnrc/ipv6/ext/frag: Move configurations to 'CONFIG_' namespace
Macros that changed:
GNRC_IPV6_EXT_FRAG_SEND_SIZE -> CONFIG_GNRC_IPV6_EXT_FRAG_SEND_SIZE
GNRC_IPV6_EXT_FRAG_RBUF_SIZE -> CONFIG_GNRC_IPV6_EXT_FRAG_RBUF_SIZE
GNRC_IPV6_EXT_FRAG_LIMITS_POOL_SIZE -> CONFIG_GNRC_IPV6_EXT_FRAG_LIMITS_POOL_SIZE
GNRC_IPV6_EXT_FRAG_RBUF_TIMEOUT_US -> CONFIG_GNRC_IPV6_EXT_FRAG_RBUF_TIMEOUT_US
2020-01-30 17:42:41 +01:00
Leandro Lanzieri
881f17a816
Merge pull request #13123 from PeterKietzmann/pr_kconf_6lo
Kconfig: Expose gnrc/sixlowpan configurations
2020-01-20 17:41:52 +01:00
Martine S. Lenders
28ef3b6b0b
gnrc_ipv6_ext_frag: remove fragment header when n-th fragment is first
The reassembly buffer only needs (and stores) the headers *before* the
fragment header (called per-fragment headers in RFC 8200, section 4.5).
Currently, when a subsequent IPv6 fragment is received before the first
fragment the fragment header is however not removed. With this fix it
does.
2020-01-17 18:54:37 +01:00
PeterKietzmann
55282a1b1d net/gnrc/sixlowpan/frag/vrb:Move timeout macro to 'CONFIG_' namespace 2020-01-17 18:09:19 +01:00
PeterKietzmann
cc6bee4986 net/gnrc/sixlowpan/frag/vrb:Move size macro to 'CONFIG_' namespace 2020-01-17 18:09:19 +01:00
PeterKietzmann
7d2c9ef418 net/gnrc/sixlowpan/nd:Move ND time macro to 'CONFIG_' namespace 2020-01-17 18:09:19 +01:00
PeterKietzmann
582779a7a0 net/gnrc/sixlowpan/frag/rb:Move del. timer macro to 'CONFIG_' namespace 2020-01-17 18:09:19 +01:00
PeterKietzmann
811facfa15 net/gnrc/sixlowpan/frag/rb:Move timeout macro to 'CONFIG_' namespace 2020-01-17 18:09:19 +01:00
PeterKietzmann
9389d5b90f net/gnrc/sixlowpan/frag/rb:Move size macro to 'CONFIG_' namespace 2020-01-17 18:09:19 +01:00
PeterKietzmann
89af238eec net/gnrc/sixlowpan/frag/fb:Move size macro to 'CONFIG_' namespace 2020-01-17 18:09:19 +01:00
PeterKietzmann
b5ea3122e7 net/gnrc/sixlowpan:Move queue size macro to 'CONFIG_' namespace 2020-01-17 18:09:19 +01:00
PeterKietzmann
de99b99b35 Kconfig: Expose gnrc/sixlowpan configurations 2020-01-17 18:09:14 +01:00
fc45c2cc83
Merge pull request #12848 from miri64/gnrc_sixlowpan_frag_rb/fix/interval-fixes
gnrc_sixlowpan_frag_vrb: fix issues with interval marker inherited from base
2020-01-15 20:57:49 +01:00
Martine S. Lenders
d9ecc0b9bb
gnrc_sixlowpan_frag_vrb: append intervals of given base if entry exists
Otherwise the list in `base->ints` will get lost.
2020-01-15 15:00:03 +01:00
Martine S. Lenders
3082710f65
gnrc_ipv6_nib: allow for configuration of static link-local addresses
This feature was removed without replacment in 71a7dbf918, but it can
still be useful.

Co-Authored-By: smlng <s@mlng.net>
2020-01-14 15:46:18 +01:00
PeterKietzmann
9e83d12bc0 net/gnrc/netif: Move GNRC_NETIF_IPV6_ADDRS_NUMOF to 'CONFIG_' namespace 2020-01-13 12:28:37 +01:00
PeterKietzmann
b28a586702 net/gnrc/netif: Move GNRC_NETIF_DEFAULT_HL to 'CONFIG_' namespace 2020-01-13 12:28:37 +01:00
PeterKietzmann
b2f0642825 Kconfig: Expose gnrc/ipv6/configurations 2020-01-10 12:23:35 +01:00
PeterKietzmann
3f0a19a9bc net/gnrc/ipv6: Move config macros to 'CONFIG_' namespace 2020-01-07 15:36:04 +01:00
José Alamos
7d4082a6a3
Merge pull request #12922 from leandrolanzieri/pr/kconfig_migrate/gnrc/ipv6_blacklisting
Kconfig: Expose gnrc/ipv6/blacklist configurations
2019-12-20 11:32:46 +01:00
Martine S. Lenders
e1ae44b536
gnrc_sixlowpan_frag_stats: actualize pseudo-module
Having the definitions sit in the `net/gnrc/sixlowpan/frag.h` header
does not make much sense, when using Selective Fragment Forwarding
(and the fragmentation buffer already includes a
`net/gnrc/sixlowpan/frag/stats.h` header), so they are moved to their
own header. Since with this change it makes more sense to have the
statistics stored in their own sub-module, the pseudo-module is also
actualized.
2019-12-18 15:45:03 +01:00
Leandro Lanzieri
3383bae8fe Kconfig: Expose gnrc/ipv6/blacklist configurations 2019-12-11 10:51:04 +01:00
Leandro Lanzieri
56e61dac47 net/gnrc/ipv6_blacklist: Move config macros to 'CONFIG_' namespace
Macros that changed:
GNRC_IPV6_BLACKLIST_SIZE -> CONFIG_GNRC_IPV6_BLACKLIST_SIZE
2019-12-11 10:39:16 +01:00
Martine Lenders
d926810e0b
Merge pull request #12893 from leandrolanzieri/pr/kconfig_migrate/gnrc/ipv6_whitelisting
Kconfig: Expose gnrc/ipv6/whitelist configurations
2019-12-10 18:32:34 +01:00
Martine S. Lenders
3bf426e6fc
gnrc_sixlowpan_iphc: factor-out IPv6 header decoding into own function 2019-12-10 15:46:51 +01:00
Martine S. Lenders
8ce3c745c8
gnrc_sixlowpan_iphc: add extension header encoding 2019-12-10 15:31:56 +01:00
Martine S. Lenders
a0a334a491
gnrc_sixlowpan_iphc: factor-out IPv6 header encoding into own function 2019-12-10 15:29:06 +01:00
Martine S. Lenders
3273602f24
tests: provide test application for IPHC+VRB behavior 2019-12-10 13:59:41 +01:00
Martine Lenders
a689f51e9a
gnrc_sixlowpan_iphc: add rudimentary forwarding routine 2019-12-10 13:56:33 +01:00
Martine S. Lenders
e31394536b
gnrc_sixlowpan_iphc: factor encoding out of sending function 2019-12-10 13:56:05 +01:00
Martine S. Lenders
556d71a7da
gnrc_sixlowpan_iphc: create VRB entry from uncompressed header
... when VRB is available
2019-12-10 13:56:02 +01:00
Leandro Lanzieri
9a0a514fdd Kconfig: Expose gnrc/ipv6/whitelist configurations 2019-12-06 15:04:14 +01:00
Leandro Lanzieri
de2fbeb112 net/gnrc/ipv6_whitelist: Move config macros to 'CONFIG_' namespace
Macros that changed:
GNRC_IPV6_WHITELIST_SIZE -> CONFIG_GNRC_IPV6_WHITELIST_SIZE
2019-12-06 13:57:52 +01:00
Martine Lenders
159accff37 gnrc_ipv6: fix source check for loopback address
When the destination address is the loopback address (`::1`) in GNRC
the selected network interface typically is `NULL`, as with GNRC no
loopback interface de facto exists. So the assertion when checking if
the source address is valid if `netif != NULL` fails on that check.
This change fixes that issue by checking if the destination address is
the loopback address, before checking the validity of the source
address.
2019-12-05 23:38:53 +01:00
Martine S. Lenders
0251d6585e
gnrc_sixlowpan_frag_rb: error when interval buffer is full 2019-11-29 18:00:54 +01:00
Martine S. Lenders
3fe1bf59a4
gnrc_sixlowpan_frag_rb: fix memory-leak in _rm_by_datagram()
This fits with the semantics of this function which doesn't provide or
uses any state of the reassembly buffer provided by the user, but finds
the entry itself and then removes it. This gives the user no chance to
remove the packet in the reassembly buffer entry, so
`gnrc_sixlowpan_frag_rb_rm_by_datagram()` has to release the packet
(other than `gnrc_sixlowpan_frag_rb_remove()` where not releasing the
packet is desired as it might be handed up to an upper layer).
2019-11-29 15:38:13 +01:00
d4f3747705 sys/net: fix typos 2019-11-23 22:39:38 +01:00
Francois Berder
4a31f94cfc many typo fixes
Signed-off-by: Francois Berder <18538310+francois-berder@users.noreply.github.com>
2019-11-23 22:39:07 +01:00
Martine Lenders
02295ce5c7
Merge pull request #12593 from miri64/gnrc_sixlowpan_frag_rb/enh/deletion-timer
gnrc_sixlowpan_frag_rb: allow for deletion timer after completion
2019-11-12 17:54:15 +01:00
Martine S. Lenders
11669d9bdc gnrc_sixlowpan_frag_rb: add missing \n at end of DEBUG line 2019-11-12 17:06:52 +01:00
Martine S. Lenders
40138fdce8 gnrc_sixlowpan_frag_rb: allow for deletion timer after completion
This allows to set a timer between the completion of a datagram in the
reassembly buffer and the deletion of the corresponding reassembly
buffer entry. This allows to ignore potentially late incoming link-layer
duplicates of fragments of the datagram that then will have the
reassembly buffer entry be blocked.

This was noted in this [discussion] for classic 6LoWPAN reassembly (and
minimal fragment forwarding) and is recommended in the current
[selective fragment recovery draft][SFR draft].

[discussion]: https://mailarchive.ietf.org/arch/msg/6lo/Ez0tzZDqawVn6AFhYzAFWUOtJns
[SFR draft]: https://tools.ietf.org/html/draft-ietf-6lo-fragment-recovery-07#section-6
2019-11-12 17:06:52 +01:00
Martine Lenders
f092c27356 gnrc_ipv6: add missing new-line to debug message 2019-11-10 13:50:56 +01:00
Martine Lenders
ca37cde142 gnrc_sixlowpan_frag_fb: introduce function to get entry by tag 2019-11-04 20:04:39 +01:00
Martine Lenders
8c3dc66ad8 gnrc_sixlowpan_frag: factor-out and rename fragmentation buffer
The name `fragment_msg` or `frag_msg`/`msg_frag` always to me was a bit
misplaced, as it basically implements an asynchronous fragmentation
buffer and doesn't necessarily have anything to do with messages.
This change

1. changes the name to `fb` (for fragmentation buffer)
2. factors its code out to its own sub-module so it can be re-used by
   other 6LoWPAN fragmentation schemes like [Selective Fragment
   Recovery]

[Selective Fragment Recovery]: https://tools.ietf.org/html/draft-ietf-6lo-fragment-recovery-05
2019-11-04 20:04:37 +01:00
Martine Lenders
79c8fc5405
Merge pull request #12599 from miri64/gnrc_sixlowpan_frag/enh/remove-code-dup
gnrc_sixlowpan_frag: various optimizations and clean-ups on sending
2019-11-04 19:54:33 +01:00
Martine Lenders
2a1e002d6d
Merge pull request #12627 from miri64/gnrc_sixlowpan_iphc_nhc/enh/frag+iphc-payload_len
gnrc_sixlowpan_iphc_nhc: determine UDP hdr length from RB
2019-11-01 19:47:08 +01:00
Martine S. Lenders
f33111a9c2 gnrc_sixlowpan_iphc: remove duplicate gnrc_netif_hdr_get_netif()
The interface is already fetched in the beginning of the function and
doesn't change during its run, so getting the interface again at this
point is just redundant.
2019-11-01 18:29:44 +01:00
Martine S. Lenders
806f33fce4 gnrc_sixlowpan_iphc_nhc: determine UDP hdr length from RB
When decoding IPHC in a fragmented datagram, relying on the size of the
allocated space for the decoded packet is wrong when fragments are
forwarded and decoded on an intermediate node (for which the reassembly
buffer's space is used): Using the full datagram size for allocation in
this case would be wasteful, so the allocated space is only marginally
larger than the fragment's compressed form.
This in turn results in the wrong UDP payload size being chosen and
even worse being forwarded to the subsequent nodes.

This change uses the (virtual) reassembly buffer's `datagram_size`
instead of relying on the allocated space for the encoded
datagram/fragment.
2019-11-01 13:18:00 +01:00
Martine S. Lenders
dba2f9e5ea gnrc_sixlowpan_frag: remove code duplication on fragment creation 2019-10-29 15:34:24 +01:00
Martine S. Lenders
d5e21f35c3 gnrc_sixlowpan_frag: copy netif header directly 2019-10-29 15:34:24 +01:00
Martine Lenders
796d6a3167 gnrc_sixlowpan: move garbage collect msg type to reassembly buffer 2019-10-24 12:41:29 +02:00
Martine Lenders
1bdfbeaaa0
Merge pull request #12425 from miri64/gnrc_ipv6_nib/enh/mutex
gnrc_ipv6_nib: use recursive mutex instead of mutex for locking
2019-10-21 16:08:07 +02:00
Martine Lenders
05bcdba02e
Merge pull request #10499 from miri64/gnrc_netif/enh/split-6lo-6ln
gnrc_netif: introduce distinction if an interface supports 6Lo or if it performs ND according to RFC 6775
2019-10-21 11:47:30 +02:00