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

732 Commits

Author SHA1 Message Date
Gunar Schorcht
d3f78a5a40
Merge pull request #10679 from miri64/gnrc_sixlowpan_frag/fix/send-check-msg-queue
gnrc_sixlowpan_frag: check if own message queue is full
2018-12-30 15:48:26 +01:00
Martine Lenders
e8da744e6d gnrc_sixlowpan_frag: release packet when frag hdr can't be marked
Otherwise, there will be leaks ;-).
2018-12-30 01:05:34 +01:00
Martine Lenders
a409603f84 gnrc_sixlowpan_frag: release packet when rbuf is full
Otherwise, there will be leaks ;-).
2018-12-30 00:59:04 +01:00
Martine Lenders
9e3cdebae1 gnrc_sixlowpan_frag: check if own message queue is full
When issueing the sending of the next fragment the current version of
`gnrc_sixlowpan_frag` doesn't check if the queue is full. This leads to
leakage of the packet buffer, since when it is full, the package never
gets released.

This change adds a checks and error exits in case the queue is full.
2018-12-29 22:54:52 +01:00
Martine Lenders
d5bbf45d32 gnrc_sixlowpan_frag: reduce code duplication in send 2018-12-29 22:54:14 +01:00
Gunar Schorcht
e07ea98bc3
Merge pull request #10536 from miri64/gnrc_ipv6_nib/bug/correct-reverse
gnrc_ipv6_nib: use correct reverse-translate for ARSM-less NCE
2018-12-27 10:44:23 +01:00
Martine Lenders
f160849e8a gnrc_ipv6_nib: use correct reverse-translate for ARSM-less NCE
The current implementation uses the assumption that the IPv6 address is
always based on an EUI-64, which it doesn't has to.
2018-12-27 10:21:31 +01:00
Martine Lenders
3ce4b7454f
Merge pull request #10379 from cgundogan/pr/sixlowpan_nonipv6
sixlowpan: minor fixes for non-ipv6 usage
2018-12-18 22:36:03 +01:00
Cenk Gündoğan
79de5ae6e6 sixlowpan: minor fixes for non-ipv6 usage 2018-12-18 21:32:54 +01:00
Martine Lenders
0a5ef011e1 gnrc_ipv6_ext_rh: add ICMPv6 error message sending 2018-12-18 19:46:27 +01:00
Martine Lenders
13e66ce3f2
Merge pull request #10238 from miri64/gnrc_ipv6_ext/cleanup/merge-handle-rh
gnrc_ipv6_ext: merge _handle_rh and gnrc_ipv6_ext_rh_process
2018-12-18 19:39:16 +01:00
Martine Lenders
8701c0f80a gnrc_ipv6_ext: merge _handle_rh and gnrc_ipv6_ext_rh_process
It's a lot cleaner and makes more sense if we merge those two.
2018-12-18 19:03:40 +01:00
Martine Lenders
2e57ea246e
Merge pull request #10584 from miri64/gnrc_ipv6/enh/use-new-pktbuf-func
gnrc_ipv6: use gnrc_pktbuf_merge() to loopback packet
2018-12-17 12:16:06 +01:00
Martine Lenders
864ce4fed2 gnrc_ipv6_ext: rename nh to protnum for clarity 2018-12-15 18:21:48 +01:00
Martine Lenders
bbcb3161ea gnrc_ipv6_ext: make single header demux function private
The function is now only called by `gnrc_ipv6_ext_process_hopopt()` and
`gnrc_ipv6_ext_process_all()`, both are part of the `gnrc_ipv6_ext`
module.
2018-12-14 19:07:16 +01:00
Martine Lenders
0580fa5852 gnrc_ipv6: dispatch ext. headers to external interested parties
This way e.g. a raw socket listening for an extension headers protocol
number also get's it.
2018-12-14 19:07:16 +01:00
Martine Lenders
e4fa14370f gnrc_ipv6: handle hop-by-hop option before forwarding 2018-12-14 19:07:15 +01:00
Martine Lenders
5c0d18b25f gnrc_ipv6: move ext. hdr handling out of general demux
They are handled separately anyway and this allows us to handle
the Hop-by-hop option *before* forwarding in a later step.
2018-12-14 19:06:00 +01:00
Martine Lenders
17eee216b6 gnrc_ipv6_ext: add missing newline to DEBUG 2018-12-14 19:05:52 +01:00
Martine Lenders
492df78f63 gnrc_ipv6: use gnrc_pktbuf_merge() to loopback packet
With `gnrc_pktbuf_merge()` introduced in
f03247e752 we can remove some code
duplication when it comes to looping back a packet.
2018-12-14 11:10:51 +01:00
Martine Lenders
b8f71c37ff gnrc_ipv6: rename should_release for clarity 2018-12-13 17:22:12 +01:00
Martine Lenders
e6df40dbde gnrc_ipv6: clean-up unrequired stuff after demux rework 2018-12-13 17:22:12 +01:00
Martine Lenders
764ed8c300 gnrc_ipv6: make next-header demuxer private
Since the recursion into `gnrc_ipv6_demux()` was removed in
`gnrc_ipv6_ext`, `gnrc_ipv6.c` is the only user of this function,
so it can be made private. It was only made public so it can be used
from `gnrc_ipv6_ext`.
2018-12-13 17:22:12 +01:00
Martine Lenders
f671a87fe2 gnrc_ipv6_ext: remove unnecessary pkt write-protection
As `pkt` isn't pre-parsed the write-protection of *the whole* packet
(except the netif-header) comes for free, when this was done in the
receive routine of IPv6.
2018-12-13 17:22:12 +01:00
Martine Lenders
02a7bc252a gnrc_ipv6: move ipv6_ext iteration out of ext_demux()
Since with #10233 we now assume IPv6 packets always to not be
pre-parsed, we can iterate over the extension headers by gradually
"eating" them away. This allows us to move the iteration over them
out of `gnrc_ipv6_ext_demux()` and into `gnrc_ipv6_demux()`.

By moving the iteration over all extension headers out of
`gnrc_ipv6_ext_demux()` we also can

1. simplify the extension header handling a lot, as it now
   just a loop inside `gnrc_ipv6_demux()`,
2. remove the recursion to `gnrc_ipv6_demux()` within
   `gnrc_ipv6_ext_demux()`.
2018-12-13 17:22:11 +01:00
José Alamos
970bec1d1b
Merge pull request #10233 from miri64/gnrc_ipv6/enh/assume-no-preparsed-pkt
gnrc_ipv6: assume no preparsed packets
2018-12-10 14:21:17 +01:00
Hauke Petersen
a24f669c4c
Merge pull request #10521 from miri64/gnrc_sixlowpan_iphc/fix/non-ieee802154-support
gnrc_sixlowpan_iphc: allow address compression for non-IEEE802.15.4
2018-12-07 14:58:13 +01:00
Martine Lenders
a7e3791f3b gnrc_sixlowpan_iphc: allow address compression for non-IEEE802.15.4 2018-12-07 13:03:40 +01:00
Martine Lenders
be7e42a888
Merge pull request #10562 from miri64/gnrc_ipv6/fix/hl0
gnrc_ipv6: fix hop-limit == 0 case
2018-12-06 18:54:53 +01:00
Martine Lenders
3fde0ef8f8 gnrc_ipv6: remove special handling for encapsulated IPv6 headers
Since the packet is now guaranteed to be preparsed, the currently
handled IPv6 header will always be in the first snip. Because of this
the packet parser can't get confused anymore which IPv6 header is the
one to be handled so we don't need to remove the more outer ones.
Because of this we can just use the normal packet dispatching (which is
already used by other `GNRC_NETTYPE_*`-known protocol numbers such as
UDP).

This also reverts d54ac38f84.
2018-12-06 16:22:32 +01:00
Martine Lenders
4befe0b5e2 gnrc_ipv6: assume no preparsed packets 2018-12-06 16:22:31 +01:00
Martine Lenders
9bb458dac1
Merge pull request #10229 from miri64/gnrc_ipv6_ext/enh/shortcut-forward
gnrc_ipv6_ext: use send for forwarding with RH
2018-12-06 16:17:50 +01:00
Hauke Petersen
92fcb4de6a
Merge pull request #10513 from miri64/gnrc_netif/enh/iid-conversion
gnrc_netif: add general IID to/from l2addr conversion functions
2018-12-06 15:57:06 +01:00
Hauke Petersen
1b1802aaf6
Merge pull request #10469 from miri64/gnrc_ndp/enh/rtr-wo-arsm
gnrc_ndp: make compilable for router without ARSM
2018-12-06 15:38:38 +01:00
Martine Lenders
bc7d083094 gnrc_ipv6: fix hop-limit == 0 case 2018-12-06 15:34:06 +01:00
Martine Lenders
b530c1bb94 gnrc_ipv6_ext: use send for forwarding with RH
Though this change might seem more complicated, it has the benefit, that
after #9484 we don't have to assume that a received packet within IPv6's
receive function can be handed to the function pre-parsed, making that
function far less complicated (will be provided in a future PR).

Also this might give the forwarding via routing header a little
performance boost, as we now don't *receive* the packet first only to
forward it later-on.
2018-12-06 14:47:46 +01:00
Martine Lenders
bc1b490086 gnrc_ipv6_nib: gnrc_netif_iid_to_addr() instead of _reverse_iid() 2018-12-06 14:41:30 +01:00
Hauke Petersen
6551d8aac0
Merge pull request #10500 from miri64/gnrc_netif_hdr/enh/conv-netif-getter
gnrc_netif_hdr: provide convenience function to get netif pointer from netif header.
2018-12-05 14:26:02 +01:00
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
Martine Lenders
b447501382 gnrc_ipv6: use gnrc_netif_hdr_get_netif() function 2018-12-05 14:08:32 +01:00
Martine Lenders
b90fff9f06 gnrc_icmpv6_error: use gnrc_netif_hdr_get_netif() function 2018-12-05 14:08:32 +01:00
Martine Lenders
6dcf8aad69 gnrc_ipv6_nib: remove ESP-Now related code-duplication 2018-11-29 15:32:29 +01:00
Martine Lenders
03b91cbcb8 esp_now: use NETDEV_TYPE_ESP_NOW as device type 2018-11-29 13:35:20 +01:00
Martine Lenders
cdfe8ad90c gnrc_ndp: make compilable for router without ARSM
While it is an edge case in our configuration it is technically
possible for a (6Lo) router not to maintain an address resolution state
machine. This fix allows for that with the `gnrc_ndp` module.
2018-11-26 15:53:21 +01:00
Martine Lenders
0bdbb68959 gnrc_ipv6: drop packets with unspecified destination
It just doesn't makes sense to handle them any further
2018-11-17 15:45:25 +01:00
Martine Lenders
ef1132384a gnrc_icmpv6_error: check IPv6 header before starting to build
Check for:

 - if it exists (critical error condition -- non-IPv6 headers should
   not trigger these functions) => assert
 - if it has a multicast source (that shouldn't really happen but
   people might try weird stuff ;-)
 - if it has an unspecified source (can't determine receiver of error
   message => don't send it, don't build it)
2018-11-17 15:45:25 +01:00
Martine Lenders
d4f425bb00 gnrc_ipv6: allow for empty IPv6 header 2018-11-17 14:49:12 +01:00
Martine Lenders
3ec37acbd1 gnrc_ipv6: fix _fill_ipv6_hdr() for pure IPv6 packets
If a packet only contains IPv6 and IPv6 extension header snips (e.g. if
the IPv6 packet has no payload or if an extension header was not
pre-parsed)
2018-11-17 14:48:49 +01:00
Martine Lenders
db2da19ea4 gnrc_ipv6: send IPv6 error messages where appropriate 2018-11-16 17:39:16 +01:00
Martine Lenders
b99e9f4185 gnrc_icmpv6_error: append IPv6 and netif header before sending 2018-11-16 17:39:16 +01:00
Martine Lenders
d161379e47 gnrc_icmpv6_error: re-order header inclusions 2018-11-16 17:39:16 +01:00
Martine Lenders
0b4230e5f6 gnrc_icmpv6_error: fix and optimize pointer search in _param_prob_build 2018-11-16 17:39:16 +01:00
Martine Lenders
335342a466 gnrc_icmpv6_error: fix build function for send and recv order 2018-11-16 17:39:16 +01:00
Martine Lenders
f0da2a0cd7 gnrc_icmpv6_error: don't include netif header into fit 2018-11-16 17:39:16 +01:00
Martine Lenders
c4175a5e52 gnrc_icmpv6_error: adapt _fit() to get MTU from netif 2018-11-16 17:39:16 +01:00
Martine Lenders
c8c8564d51 gnrc_icmpv6_error: use netapi_dispatch_send instead of netapi_send 2018-11-16 17:39:16 +01:00
Martine Lenders
ba13d8f5bf gnrc_icmpv6_error: introduce debug messages 2018-11-16 17:39:15 +01:00
Martine Lenders
a7a8227e36 gnrc_icmpv6_error: centralize send function 2018-11-16 17:39:15 +01:00
Martine Lenders
36617f3733 gnrc_icmpv6_error: make input pointers constant 2018-11-16 17:39:15 +01:00
Martine Lenders
6ec456b0fc gnrc_icmpv6_error: don't release orig_pkt on error
The stack might still wants to do something with the packet after
copying it to the error message.
2018-11-16 17:22:20 +01:00
Martine Lenders
3b56c78a3b gnrc_icmpv6_error: make build functions private 2018-11-16 17:22:20 +01:00
Martine Lenders
a30bdebc2c gnrc_icmpv6_error: remove static inline from functions 2018-11-16 17:22:20 +01:00
Martine Lenders
98f42eeea8
Merge pull request #10356 from miri64/gnrc_ipv6_nib/fix/netif_queued
gnrc_ipv6_nib: provide interface on packet queueing
2018-11-09 17:47:12 +01:00
Martine Lenders
94549d136b gnrc_ipv6_nib_pl: return early if PL entry wasn't allocated 2018-11-09 15:40:46 +01:00
Martine Lenders
6d1a3caa26 gnrc_ipv6_nib: fix NULL pointer dereference 2018-11-09 15:39:41 +01:00
Martine Lenders
ce0c46836c gnrc_ipv6_nib: provide interface on packet queueing
Without this the first packet to a new link-local address will not be
delivered in non-6Lo environments, since the interface is not provided.
With this change, if an internet was provided to the address resolver it
will be stored within an allocated `gnrc_netif_hdr_t`.

At this point [IPv6 already striped](netif strip) the packet of its
netif header, so there is no risk that there will be to, in case it was
provided and the `netif` came from its existence.
2018-11-09 12:56:20 +01:00
60a6e66f77
Merge pull request #10246 from miri64/gnrc_ipv6/fix/encaps-ipv6-recursion
gnrc_ipv6: don't recurse into receive for encapsulated IPv6
2018-11-08 12:34:40 +01:00
Martine Lenders
d54ac38f84 gnrc_ipv6: don't dispatch encapsulated IPv6 headers in central function
Otherwise, an encapsulated IPv6 packet is handled twice. Once in the
central function, once in the specialized decapsulation.
2018-11-08 11:54:05 +01:00
Martine Lenders
160ccbcf7e gnrc_ipv6: don't recurse into receive for encapsulated IPv6
`_decapsulate()` is called by callees of `_receive()` so the call to
the latter function within the first creates a recursion we don't want.
Using `gnrc_netapi` instead removes that and provides the added benefit
that other subscribers to IPv6 are also informed.
2018-11-08 11:54:05 +01:00
152a9dc325
Merge pull request #10247 from miri64/ipv6_ext_rh/cleanup/central-types
ipv6_ext_rh: define type numbers at central place
2018-11-06 20:31:27 +01:00
Martine Lenders
a5c9f959b5 gnrc_ipv6: use gnrc_pktbuf_reverse_snips() 2018-10-25 23:11:33 +02:00
Martine Lenders
274371c174 ipv6_ext_rh: switch over to generic RH type define 2018-10-25 19:21:20 +02:00
Martine Lenders
6a9adf2b59 gnrc_ipv6_ext: remove unnecessary return-value indirection
Those return values are internal anyway, and they have the same intent
as the one provided by `gnrc_ipv6_ext_rh`.
2018-10-25 11:12:14 +02:00
Martine Lenders
84a62da102 gnrc_ipv6_ext_rh: rename GNRC_IPV6_EXT_RH_OK for clarity 2018-10-25 11:11:50 +02:00
Martine Lenders
c54ba49e82 gnrc_ipv6_ext: move ipv6_ext_rh (partly) to GNRC 2018-10-25 11:10:25 +02:00
Kevin "Bear Puncher" Weiss
7187bbf8cf
Merge pull request #9426 from gschorcht/esp32
ESP32 port
2018-10-16 15:24:25 +02:00
Schorcht
3ac99877ac cpu: add esp32 2018-10-08 12:20:49 +02:00
chrysn
f07308b07d gnrc: Extend gnrc_ipv6_get_header checks, use in sock recv
gnrc_sock_recv used to duplicate functionality of gnrc_ipv6_get_header,
but additionally checked whether the IPv6 snip is large enough.

All checks are now included in gnrc_ipv6_get_header, but as most of them
stem from programming / user errors, they were moved into asserts; this
constitutes an API change.
2018-09-28 19:40:59 +02:00
05b6af466c sys: add missig <string.h> includes 2018-09-20 23:47:40 +02:00
Martine Lenders
235661668d gnrc_ipv6_nib: always configure 802.15.4 long address
Our `gnrc_minimal` example configures the link-local address from the
IEEE 802.15.4 short address since it does not include 6Lo-ND.
This causes the application to be incompatible with our other GNRC
application that do include 6Lo-ND, since it [assumes][1] the link-local
address to be based on the EUI-64 for address resolution.

This enforces long addresses (aka EUI-64) for all IEEE 802.15.4 devices
when IPv6 is compiled in so `gnrc_minimal` is compatible again to the
rest.

Fixes #9910

[1]: https://tools.ietf.org/html/rfc6775#section-5.2
2018-09-10 17:08:04 +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
4f87883ab8 gnrc_ipv6_nib: fallback to SLAAC if ARO is ignored by upstream
Linux doesn't have ARO support at the moment so this is a workaround to
try to speak 6Lo-ND while still being able to do DAD with a border
router that doesn't.
2018-08-09 10:56:36 +02:00
Martine Lenders
9720cd857d gnrc_ipv6_nib: include SLAAC debug addr_str into #ifdef 2018-08-06 14:51:34 +02:00
Martine Lenders
bdb1e80e0a gnrc_ipv6_nib: make RS emission configurable 2018-08-06 14:51:18 +02:00
Martine Lenders
f946314837 gnrc_ipv6: refactor to remove superfluous temporary variable
Since no release in this function is required anyways, we can just use
`payload` to check the return value directly.
2018-08-02 15:20:59 +02:00
Martine Lenders
cb4f6a96a8 gnrc_ipv6: correctly reset from temporary variable
While `tmp` in the loop for write-protection for the check-sum
calculation is used to check the return value of
`gnrc_pktbuf_start_write()`, it was never overwriting `payload` causing
the original snip to be used in the following iteration `prev` when
duplicated, and destroying the sanity of `ipv6`.
2018-08-02 15:17:40 +02:00
Martine Lenders
72e9b1f623 gnrc_ipv6: remove superfluous release
The packet handed to `_fill_ipv6_hdr()` is already released in the
caller (in the current version this is only `_save_fill_ipv6_hdr()`).
2018-08-02 15:16:08 +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
Cenk Gündoğan
0dc02d9a97
Merge pull request #9482 from miri64/gnrc_sixlowpan_frag/enh/pages
gnrc_sixlowpan_frag: add page context to reassembly buffer
2018-07-24 18:16:39 +02:00
Martine Lenders
d8081453f2 gnrc_ipv6: clean-up and simplify send handling
This change is a gnrc_ipv6_nib/gnrc_netif(2)-based rework of #7210.

Packet duplication
==================

Its main optimization is that it restructures `gnrc_ipv6` handling of
sent packets so that duplication for write-protection happens at the
latest possible step:

* potential `gnrc_netif` headers added by upper layers are
  write-protected before their removal
* This unifies the duplication of the IPv6 header directly after
  that
* Extension headers in-between the IPv6 header and the payload header
  are duplicated just before the check sum is duplicated

Especially the last point allows for only handing a single packet snip
to all lower functions instead of an already searched IPv6 header
(which now is always the first until it is handed to the interface) +
payload header.

Further clean-ups
=================
* Next-hop link-layer address determination was moved to the
  `_send_unicast` function, greatly simplifying the unicast case in the
  `_send` function
* Code for loopback case was added to a new function `_send_to_self`
* Removed some code duplication
2018-07-16 15:08:56 +02:00
Martine Lenders
1916c45dc0 gnrc_ipv6_nib_router: add support to send RDNSSO 2018-07-05 11:09:34 +02:00
Martine Lenders
6d1f012c9d gnrc_ipv6_nib: add support to handle RDNSSO 2018-07-05 11:09:34 +02:00
Martine Lenders
0ef62b9690 gnrc_ndp: add support for building RDNSS option 2018-07-05 11:01:22 +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
Cenk Gündoğan
315c201747
Merge pull request #9372 from miri64/gnrc_sixlowpan_frag/enh/i8511
gnrc_sixlowpan_frag: adapt for #8511
2018-06-26 19:47:25 +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
Martine Lenders
579d9d78d4
Merge pull request #8823 from miri64/gnrc_ipv6_nib/feat/slaac
gnrc_ipv6_nib: add full RFC4862 DAD support
2018-06-21 14:10:36 +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
Martine Lenders
b6ab9eb343 gnrc_ipv6_nib: use router instead of netif for router timeout context
`GNRC_IPV6_NIB_RTR_TIMEOUT` [expects a default router entry][doc] as
context, so using the `netif` here is clearly wrong. This causes the
hardfault described in #9297.

[doc]: http://doc.riot-os.org/group__net__gnrc__ipv6__nib.html#ga1c7e892ef6533f699c4e64737c2847c2
2018-06-06 11:37:51 +02:00
Martine Lenders
22ad3aa12e gnrc_ndp: only send RAs when VALID address is found
Otherwise, it may happen that `::` or a global address is chosen by
the IPv6 header fill function. Both types of addresses are
[not valid for RAs](https://tools.ietf.org/html/rfc4861#section-4.2)
2018-05-31 17:11:26 +02:00
Martine Lenders
55adbee488 gnrc_ipv6_nib: add full RFC4862 DAD support
Parts of [RFC4862] were already implemented when NDP via the NIB was
first implemented. This change just includes the DAD portion of
[RFC4862]. This should be enough to make RIOT fully RFC4862 compliant.

[RFC4862]: https://tools.ietf.org/html/rfc4862
2018-05-31 17:11:25 +02:00
Sebastian Meiling
4f97fc76fd
Merge pull request #8894 from beduino-project/fix-gnrc_ipv6_blacklist-build
gnrc: fix build of gnrc_ipv6_blacklist when ENABLE_DEBUG is disabled
2018-04-23 14:26:53 +02:00
Martine Lenders
3be4b51209
Merge pull request #8867 from miri64/gnrc_ipv6/fix/possible-null-ptr-deref
gnrc_ipv6: fix possible NULL pointer dereference
2018-04-12 14:26:22 +02:00
d2db1ba2c3
Merge pull request #8568 from miri64/gnrc_ipv6_nib/fix/abro-ignore-only-on-6lr
gnrc_ipv6_nib: only discard RAs without ABROs on 6LR
2018-04-11 22:32:33 +02:00
Sören Tempel
93f65043ce gnrc: fix build of gnrc_ipv6_blacklist when ENABLE_DEBUG is disabled
Without this commit it doesn't build because addr_str isn't defined when
ENABLE_DEBUG is not set.

This issue was introduced in: c001e14f9d
2018-04-06 14:48:32 +02:00
Robin Nehls
ad5617fb83 gnrc_ipv6: discard non-NONXT packets with 0 payload length
If the payload length is zero and the next header field is not set to
NONXT, GNRC will interpret the current header as the payload because the
first snip is always interpreted as the payload. This can lead to loops
and or crashes.
2018-04-03 18:34:48 +02:00
Robin Nehls
326be16b90 gnrc_ipv6: fix possible NULL pointer dereference
When the payload length of an encapsulated IPv6 packet is 0, the
`_receive` function of IPv6 can be given a NULL pointer, causing the
IPv6 header checker to crash because of a NULL pointer dereference.
2018-04-03 14:46:12 +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
e11550042c gnrc_ipv6_nib_6ln: only register addresses not VALID yet
With the previous fix, we only have to register addresses that are not
VALID yet on reception of router advertisements. This removes the need
for the hacky `GNRC_NETIF_FLAGS_6LO_ADDRS_REG` flag that was only
introduced to prevent unnecessary re-registration.
2018-02-19 14:39:29 +01:00
Martine Lenders
8c8b6f9494 gnrc_ipv6_nib_6ln: do not mark non-link-local directly VALID
The whole address registration looses its point if all addresses are
marked valid from the get-go. With this fix non-link-local addresses
are first marked TENTATIVE and only after successful registration
marked as VALID. Link-local addresses are assumed to always be VALID.
2018-02-19 14:38:27 +01:00
Martine Lenders
3a8695bd0c gnrc_ipv6_nib: only discard RAs without ABROs on 6LR
[RFC6775] only talks of *routers* processing router advertisements,
with regards of discarding them if they do not contain an ABRO.

Additionally, this change makes configuration of tests setups a lot
easier, where one note is a router distributing a prefix and the other
is a host to be configured with the RA. Just do the following on the
router:

```
> ifconfig <if> add <GUA>
> ifconfig <if> rtr_adv
```

e voilà! In current master both nodes would have needed to be compiled
with `GNRC_IPV6_NIB_CONF_MULTIHOP_P6C=0`.

[RFC6775]: https://tools.ietf.org/html/rfc6775#section-8.1.3
2018-02-15 14:40:33 +01:00
smlng
c2b403f4ad gnrc/netreg: remove usages of gnrc_netreg_num 2018-02-06 21:39:58 +01:00
Martine Lenders
d4661af4c8 gnrc: 6Lo fixes for BLE 2018-02-05 22:34:31 +01:00
Martine Lenders
12fad002da gnrc_icmpv6_echo: fix ping for loopback
At the moment ping is crashing if one pings the loopback address.
This was caused in #8214 when we moved interfaces from `kernel_pid_t`
ID to pointer-based handling, since loopback doesn't evaluate to such
an interface.
2018-01-31 15:46:52 +01:00
Martine Lenders
c40a05b6a8 gnrc: fix link-layer/IPv6 address conversion for XBee 2018-01-31 10:54:28 +01:00
Martine Lenders
8e80a372cb gnrc_ipv6_nib: ignore corner case when adding to PL
In #8135 the handling of corner cases for the conversion of
milliseconds to seconds, but the internal handling was not adapted.
2018-01-30 12:28:50 +01:00
Martine Lenders
763b887017 gnrc_ipv6_nib: release packages for forwarding error cases 2018-01-26 17:35:57 +01:00
Martine Lenders
70c1fb7b4e gnrc_ipv6_nib: fix final RA behavior
This fix

* assures that the periodicity of the final router advertisements is
  kept (so that no administrative change e.g. adding prefixes to the
  prefix list causes additional RAs outside the rate limitation)
* removes all administrative options (PIO, ABRO, 6CO) from final router
  advertisements (with router lifetime == 0)
2018-01-26 13:57:19 +01:00
Martine Lenders
d0140a9ec8
Merge pull request #8380 from miri64/gnrc_netif/enh/6lo-nrfmin
gnrc_netif: set-up 6Lo for NRFmin
2018-01-23 11:17:29 +01:00
Martine Lenders
6cabac3600 gnrc_ipv6_nib: add reverse-translation for NRFmin 2018-01-22 16:15:30 +01:00
Sebastian Meiling
3bb169307b
Merge pull request #8364 from smlng/osx/debug/fix_output
macOS: fix debug output
2018-01-22 15:14:48 +01:00
d27fa8efa5
Merge pull request #8214 from miri64/gnrc_ipv6/enh/simplify-netif-access
gnrc_ipv6: gnrc_icmpv6: simplify access to network interfaces
2018-01-17 17:02:55 +01:00
Martine Lenders
7c0bb427fa gnrc_ipv6: gnrc_icmpv6: simplify access to network interfaces 2018-01-17 16:48:58 +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
12d4254ae1 gnrc: nib: DEBUG fix 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
Martine Lenders
4013adcf65
Merge pull request #8277 from miri64/doc/fix/must-not-may-not-wording
doc: Fix 'must not'/'may not' wording
2018-01-10 20:34:17 +01:00
Martine Lenders
cee9a9c173 gnrc_ipv6_nib: fix nrfmin module check
The module is called `nrfmin` not `netdev_nrfmin`. As such this compile
path was never included, even if the `nrfmin` module was present.
2018-01-05 10:40:25 +01:00
17ac0fa3a7
Merge pull request #8101 from miri64/gnrc_netif2/opt/flag-checkers
gnrc_netif: assume flag settings on compile time
2017-12-19 12:10:25 +01:00
Martine Lenders
7b5a42ba58
gnrc_netif: assume flag settings on compile time 2017-12-19 12:04:36 +01:00
Martine Lenders
2e93ba1c50
doc: Fix 'must not'/'may not' wording
I applied the following terminology and changed the wording in the doc
accordingly:

* must not: If the parameter is of the value it *must not* be it either
  hits an assert or crashes the system.
* may not: The value can be that value, but the function will return an
  error.
2017-12-19 09:00:12 +01:00
Martine Lenders
2ae30cf582 gnrc_netif: rename IPv6 address "setters"
This renames the following functions

* `gnrc_netif_ipv6_addr_add()`
* `gnrc_netif_ipv6_addr_remove()`
* `gnrc_netif_ipv6_group_join()`
* `gnrc_netif_ipv6_group_leave()`

by appending the suffix `_internal`.

\## Reasoning

I'd like to provide a helper function for the *public* equivalent using
`gnrc_netapi_set()`, and those names are to nice to not be taken for
those.

\## Procedure
I used a combination of `git grep` and `sed` to do this and fixed the
alignment in the result of some cases by hand.

```sh
git grep --name-only "\<gnrc_netif_ipv6_\(addr\|group\)_\(add\|remove\|join\|leave\)\>" | \
        xargs sed -i 's/\<gnrc_netif_ipv6_\(addr\|group\)_\(add\|remove\|join\|leave\)/\0_internal/g'
```
2017-12-13 13:50:39 +01:00
Martine Lenders
5bdf3670e3
gnrc_ipv6: fix packet snip switch-up 2017-12-05 12:57:50 +01:00
Martine Lenders
7d20a80ba8
gnrc_ipv6_nib: Allow l2addr == NULL for gnrc_ipv6_nib_nc_set() 2017-11-29 17:26:45 +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
a32a2a93e1 gnrc_ipv6_nib: add interface parameter to nc_del function 2017-11-27 20:32:27 +01:00
Martine Lenders
2f8223106b
gnrc_ipv6_nib: fix ms to sec conversion for sending NDP PIOs 2017-11-24 13:52:20 +01:00
Martine Lenders
973007ad38
gnrc_ipv6_nib: fix ltime > MAX / 1000 corner case in NDP PIOs as well 2017-11-24 13:52:19 +01:00
aff7d6ecd8
Merge pull request #8097 from miri64/gnrc_ipv6_nib/fix/reduce-unreachable-backoff
gnrc_ipv6_nib: reduce backoff if neighbor UNREACHABLE and trying reach to it
2017-11-24 01:05:55 +01:00
Martine Lenders
4476d340f0
gnrc_ipv6_nib: remove trailing semicolon in ARSM macro 2017-11-21 17:21:34 +01:00
Martine Lenders
5b747e2629
gnrc_ipv6_nib: cap-off NS sent to prefent overflows 2017-11-21 17:21:34 +01:00
Martine Lenders
168228ddc9
gnrc_ipv6_nib: do not try to re-register to an unreachable router 2017-11-21 17:21:33 +01:00
Martine Lenders
61b539abf9
gnrc_ipv6_nib: reduce backoff if neighbor UNREACHABLE and trying to it
When a neighbor becomes UNREACHABLE which causes neighbor solicitations
to be send only up to every minute. If the medium is very busy this can
easily get lost, basically causing the neighbor never to be reachable
again from the perspective of the sending node. To fix this the backoff
is reduced to its start value, every time a packet is sent to that
neighbor.
2017-11-21 11:38:45 +01:00
b561e84b7f
Merge pull request #8091 from miri64/gnrc_ipv6_nib/fix/rereg-retrans-unit
gnrc_ipv6_nib: fix retransmission timeout unit for address re-registration
2017-11-20 15:42:59 +01:00
Martine Lenders
564d3c7581
gnrc_ipv6_nib: remove now duplicate join to sol. nodes 2017-11-20 14:22:55 +01:00
Martine Lenders
8c4eb43701
gnrc_ipv6_nib: fix retrans. timeout unit for address re-registration 2017-11-20 13:52:37 +01:00
Martine Lenders
12261a3e69 gnrc_ipv6_nib: Remove stray assert() in _handle_aro()
This assertion doesn't make any sense. The function is called by
_copy_and_handle_aro() on a router which causes `nce` to be NULL
(because there is no NCE known yet) and then the function called
directly after (_reg_addr_upstream()) checks if `nce` might be NULL and
creates an NCE if necessary.
2017-11-20 06:41:08 +01:00
Cenk Gündoğan
3be5c9fdf3 nib: use correct fall through hint 2017-11-20 00:35:17 +01:00
Martine Lenders
2a899c45ac gnrc_ipv6_nib: make user added default route the primary one 2017-11-19 23:36:20 +01:00
Martine Lenders
f62974207d
gnrc_ipv6_nib: add timeouts to routes 2017-11-17 13:43:18 +01:00
Martine Lenders
fb5851dde4
gnrc_ipv6_nib: actually timeout a default router
While the GNRC_IPV6_NIB_RTR_TIMEOUT is properly handled, it is actually
never fired. Moreover, the router lifetime is set, but never read.

This removes the router lifetime and switches it out for an evtimer
to does the GNRC_IPV6_NIB_RTR_TIMEOUT event.
2017-11-17 11:43:32 +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
636ef2a498
gnrc: remove legacy neighbor discovery code 2017-11-17 09:20:30 +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
319c0f9d21
gnrc_ipv6_nib: implement behavior for router discovery 2017-11-16 15:49:20 +01:00
Martine Lenders
90549108ca
gnrc_ipv6_nib: add exception in address resolution for SLIP 2017-11-15 20:03:30 +01:00
Martine Lenders
b83bc1b763
Merge pull request #7456 from miri64/gnrc_ipv6_nib/feat/port-to-gnrc_netif2
gnrc_ipv6_nib: port to gnrc_netif2
2017-11-11 19:10:14 +01:00
Martine Lenders
72db5e48f0 gnrc_ipv6_nib: fix for 'holey' NIB
When there are holes in the NIB (e.g. when entries were removed)
currently the NIB crashes the system due to a failed assertion
(`DEVELHELP` needs to be activated to test this behavior).

This fixes this behavior by making the assertion a check that is always
compiled in.
2017-11-09 15:28:56 +01:00
Martine Lenders
a7d2c65b36
gnrc_ipv6_nib: port to gnrc_netif2 2017-11-08 20:18:53 +01:00
Martine Lenders
c3141c46b6
gnrc_ndp2: port to gnrc_netif2 2017-11-08 20:18:53 +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
Martine Lenders
b1e69a776f
Merge pull request #7910 from x3ro/fix-gnrc-ipv6-nib-test-on-macos
tests/gnrc_ipv6_nib: Fix unused function error w/ clang/macOS
2017-11-07 18:16:55 +01:00
Lucas Jenss
069849f002 WIP tests/gnrc_ipv6_nib: Fix unused function error w/ clang/macOS
In the case that GNRC_IPV6_NIB_CONF_ARSM is set but
GNRC_IPV6_NIB_CONF_6LN is not, clang complains about
the function _get_l2addr_from_ipv6 never being used.
I couldn't easily figure out why this passes in Murdock,
but I'm guessing that clang is simply being smarter than
GCC. Can someone comment on whether there is a better fix
for this?

Relates to #6473
2017-11-07 17:35:42 +01:00
Lucas Jenss
4bb12ba091 tests/gnrc_ipv6_nib_6ln: Fix error w/ clang on macOS
_is_reachable is only used when GNRC_IPV6_NIB_CONF_ARSM
is enabled, and as such it must be guarded so that clang
doesn't complain about a unused function in case
GNRC_IPV6_NIB_CONF_ARSM is not set

Similar to #7910
Relates to 6473
2017-11-07 17:33:15 +01:00
Lucas Jenss
6998ffbb14 cppcheck: Provide consistent reason formatting for all cppcheck-suppresses 2017-10-10 10:25:20 -07:00
Martine Lenders
eb76e8034d
gnrc_ipv6_nib: return registration state on upstream registration
The function `_update_nce_ar_state()` was introduced during the review
of \#7424, but it's return value never used, causing faulty behavior.
2017-10-10 11:06:47 +02:00
Martine Lenders
6a7de28cd1
gnrc: integrate NIB for testing 2017-10-10 10:12:19 +02:00
Martine Lenders
1b36cdf79e
nib: implement public NIB functions up to link-local AR 2017-10-10 10:12:19 +02:00
Martine Lenders
d8acdc9d2d gnrc_ipv6_nib: add forwarding table component 2017-10-06 23:01:10 +02:00
Martine Lenders
0b2bc25ee0 gnrc_ipv6_nib: provide component to handle ABRO 2017-10-06 22:09:53 +02:00
Cenk Gündoğan
080590f587 Merge pull request #7222 from miri64/gnrc_ipv6_nib/feat/pl-component
gnrc_ipv6_nib: add prefix list component
2017-10-06 15:42:39 +02:00
Martine Lenders
3685fa02ae
gnrc_ipv6_nib: add prefix list component 2017-10-06 15:35:40 +02:00
Cenk Gündoğan
43283ef16b Merge pull request #7064 from miri64/gnrc_ndp2/api/initial
gnrc_ndp2: Provide GNRC abstraction layer for NIB for sending
2017-10-06 13:33:36 +02:00
Martine Lenders
08447ed51e
gnrc_ndp2: Provide GNRC abstraction layer for NIB for sending 2017-10-06 12:11:05 +02:00
Cenk Gündoğan
c3d3e7d024 Merge pull request #7212 from miri64/gnrc_ipv6_nib/feat/internal-offl
gnrc_ipv6_nib: provide internal implementation for off-link entries
2017-10-06 12:02:43 +02:00
Cenk Gündoğan
11baf130a3 Merge pull request #6988 from miri64/gnrc_ipv6_nib/feat/nc-component
gnrc_ipv6_nib: add neighbor cache component
2017-10-06 11:57:46 +02:00
Martine Lenders
f249c0c2a0
gnrc_ipv6_nib: provide internal implementation for off-link entries 2017-10-06 11:50:59 +02:00
Martine Lenders
4df88c89bf
gnrc_ipv6_nib: add neighbor cache component 2017-10-06 11:33:12 +02:00
Joakim Nohlgård
8415c4eebc gnrc_icmpv6: Clean up redundant conditional debug statement 2017-08-09 16:27:30 +02:00
Martine Lenders
b32200e3ad gnrc_ipv6_nib: fix caching mechanism of neighbor cache 2017-06-15 11:40:46 +02:00
Martine Lenders
e92f97cb12 gnrc_ipv6_nib: initial import of internal NIB functions 2017-06-09 21:52:37 +02:00
Cenk Gündoğan
6065be76e1 ndp: warn gcc-7 about intentional fall-through
Since gcc-7 `Wimplicit-fallthrough` is activated by using `-Wextra`.
This leads to the following problem when compiling `gnrc_networking`:

```
RIOT/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c: In function ‘gnrc_ndp_internal_set_state’:
RIOT/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c:106:15: error: this statement may fall through [-Werror=implicit-fallthrough=]
   t = ipv6_iface->reach_time;
  ~~^~~~~~~~~~~~~~~~~~~~~~~~
RIOT/sys/net/gnrc/network_layer/ndp/internal/gnrc_ndp_internal.c:109:9: note: here
case GNRC_IPV6_NC_STATE_DELAY:
         ^~~~
```

The fall-through in this code is intentional. There are several ways to
warn the comiler about such intentional fall-throughs, which include
e.g. attributed empty statements (`__attribute__ ((fallthrough));`).
I don't like tis approach however. The best way would probably be to
remove this fall-through from the code. However, to keep the diff
minimal, and since ndp will change in the future, I went for warning
the compiler using comments.

The compiler checks comments for several *fall through* regexs to
decide whether a fallthrough was intentional or not.

You can read more about this gcc option in [1]. A note about
fallthrough comment regexs is at the bottom of this article.

[1] https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/
2017-05-30 14:23:37 +02:00
0fcc7d3834 cleanup: apply headerguard script output 2017-05-24 17:54:02 +02:00
Martine Lenders
38f383c68d Merge pull request #6703 from OlegHahm/cppcheck_fixes
dist: enable cppcheck warnings for all files
2017-04-19 08:18:47 +02:00
smlng
25e62a7087 net, icmpv6: correct debug output 2017-04-18 11:57:40 +02:00
Oleg Hahm
a9cc8babba gnrc: ndp: suppress wrong cppcheck warnings 2017-04-14 14:36:15 +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
Martine Lenders
c2c2516a53 gnrc: fix cppcheck warnings 2017-04-14 14:36:14 +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
smlng
3c0a2f6953 gnrc, ipv6: add static link local ipv6 address 2017-02-28 20:09:40 +01:00
Martine Lenders
2fd69653af gnrc_ndp: do not add new neighbors as TENTATIVE on 6LR 2017-01-23 14:02:26 +01: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
Hauke Petersen
bc232a5642 Merge pull request #5524 from miri64/gnrc_netreg/api/helper-macro
gnrc_netreg: introduce helper macro/function for entry init
2016-10-25 21:21:25 +02:00
Martine Lenders
dc45cd2610 gnrc: use new netreg helper functions everywhere 2016-10-25 18:47:30 +02:00
DipSwitch
6a484d19cb ndp: fix debug in message in gnrc_ndp_internal_send_nbr_sol 2016-10-03 11:56:22 +02:00
Oleg Hahm
b428979a1d debug: add missing line breaks 2016-09-27 23:38:41 +02:00
Martine Lenders
9874a6d69a Merge pull request #5811 from makomi/gnrc
sys/net/gnrc: fix cppcheck errors/ warnings
2016-09-05 13:06:04 +02:00
Matthias Kolja Miehl
b108a57637 sys/net/gnrc: gnrc_ipv6_ext: fix variableScope 2016-09-05 02:23:59 +02:00
Martine Lenders
dd7fb1c63b Merge pull request #5228 from OlegHahm/gnrc_ipv6_hdr_get
gnrc ipv6: convenient function to get the header
2016-09-01 23:16:49 +02:00
Martine Lenders
2c5fbab3ff Merge pull request #5525 from miri64/gnrc/enh/dispatch-send
gnrc: use gnrc_netapi_dispatch_send() instead of manual iteration
2016-08-25 14:21:19 +02:00
Martine Lenders
bd230d3b63 gnrc_ipv6: gnrc_icmpv6: use dispatch_receive helper function 2016-08-18 13:25:07 +02:00
Martine Lenders
72d177074b gnrc: use gnrc_netapi_dispatch_send() instead of manual iteration 2016-08-12 14:06:58 +02:00
Martine Lenders
6d72cdb595 gnrc_ipv6: copy user flags from old netif headers
Upper layers might want to utilize the flags (e.g. to tell 6LoWPAN to elide
UDP checksums). This change allows for this by copying non-addressing related
flags to the address resolution generated netif header from the user generated
netif header.
2016-07-26 21:06:36 +02:00
Oleg Hahm
a2b9defc8b gnrc ipv6: convenient function to get the header 2016-07-22 16:34:52 +02:00
Martine Lenders
e9bbd54f58 Merge pull request #5033 from Yonezawa-T2/validate_ipv6_size
gnrc_ipv6: validates payload size
2016-06-07 17:50:28 +02:00
Yonezawa-T2
0de34c91c6 gnrc_ipv6: validates payload size 2016-06-07 10:01:23 +09: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
Oleg Hahm
6707c20b7d netstats: initial import of IPv6 netstats 2016-05-25 14:44:53 +02:00
Cenk Gündoğan
1791ef5581 gnrc_ndp: check nc_entry before using it 2016-05-17 09:52:16 +02:00
Martine Lenders
4a13324abb Merge pull request #5281 from authmillenon/gnrc_ipv6/fix/ext-fix-with-nhc
gnrc_ipv6: fix asserts for NHC
2016-04-27 08:39:39 +02:00
Martine Lenders
bf135c4750 Merge pull request #5362 from cgundogan/pr/gnrc_ipv6/remove_unnecessary_check
gnrc_ipv6: remove superfluous check for if_entry
2016-04-22 18:18:43 +02:00
Martine Lenders
82a3aae8be gnrc_ipv6: fix asserts for NHC 2016-04-22 10:11:38 +02:00
kYc0o
d071b2a23d Merge pull request #5309 from authmillenon/gnrc_ndp/fix/gua-hack
gnrc_ndp: don't let addresses timeout
2016-04-20 14:36:51 +02:00
Hauke Petersen
4ace70199e Merge pull request #5326 from authmillenon/gnrc_ipv6/fix/revert5179
gnrc_ipv6: Revert #5179
2016-04-20 14:34:07 +02:00
Martine Lenders
8968b7602f gnrc_ndp: don't let addresses timeout
This is a temporary quick-fix for #5122 to not have GUAs removed on an
interface.
It solves the issue by both not letting the registration run out on the router
and by not letting the lifetime of an auto-configured address expire.
2016-04-20 13:31:53 +02:00
Cenk Gündoğan
66507c8cfe gnrc_ipv6: remove superfluous check for if_entry 2016-04-20 09:41:45 +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
Martine Lenders
d64b922db0 Revert "gnrc ipv6: replace check by assert"
This reverts commit 856e1ee0d2.
2016-04-17 14:06:54 +02:00
592558ff33 sys: net: gnrc: fix IS_WIRED netopt call 2016-04-13 15:22:36 +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