Martine Lenders
731ef19970
gnrc_ipv6_ext: fix packet snip type
...
The `pkt->type` of an extension header should be
`GNRC_NETTYPE_IPV6_EXT` so it can be parsed properly as an extension
after building.
2019-06-04 10:47:02 +02:00
Cenk Gündoğan
3f4259af07
Merge pull request #11061 from miri64/gnrc_sixlowpan_frag/new/hint
...
gnrc_sixlowpan_frag: Initial import of a fragment size hint feature
2019-05-28 23:09:15 +02:00
Martine Lenders
2534cfb3fa
gnrc_sixlowpan_frag: Initial import of a fragment size hint feature
...
This allows for sending of fragments smaller than the restrictions set
by the link-layer PDU. E.g. to put some slack for IPHC into the first
fragment (see https://tools.ietf.org/html/draft-ietf-6lo-fragment-recovery-02#section-4.1 ).
2019-05-28 21:03:51 +02:00
Martine Lenders
a8c81debf8
gnrc_sixlowpan_frag: use rbuf base class whenever possible
2019-05-28 18:07:42 +02:00
Martine Lenders
5e7803d506
gnrc_sixlowpan_frag: add datagram size to base type
2019-05-28 18:07:42 +02:00
Martine Lenders
52e4247798
gnrc_sixlowpan_frag: introduce reassembly buffer base class
2019-05-28 18:07:42 +02:00
Martine Lenders
495eaa36a6
gnrc_sixlowpan_frag: remove unnecessary type indirection
...
The members of `rbuf_t` and `gnrc_sixlowpan_rbuf_t` are now identical
so we can remove the internal type.
2019-05-28 18:07:42 +02:00
Martine Lenders
8cc5d94956
gnrc_sixlowpan_frag: add arrival time to public type
...
The arrival time is also needed for the VRB's garbage collection.
2019-05-28 18:07:42 +02:00
Martine Lenders
b84e496563
gnrc_sixlowpan_frag: add intervals to public type
...
The fragment intervals are also required by the VRB, so make them part
of the public representation of a reassembly buffer.
2019-05-28 18:07:42 +02:00
Martine Lenders
a3061ab2cc
gnrc_sixlowpan_frag: expose fragment interval type
...
For the [VRB] I also need to track which the intervals of the fragments
already received (mostly for finding out when I am able to get rid of a
VRB entry, see [this conversation][VRB entry removal]), so to be able to
incorporate it into the common type for both reassembly buffer and VRB I
need to expose that type first.
[VRB]: https://tools.ietf.org/html/draft-ietf-lwig-6lowpan-virtual-reassembly-00
[VRB entry removal]: https://mailarchive.ietf.org/arch/msg/6lo/bTm2REo4PpVcMFH04mF_SlPvS_M
2019-05-28 18:07:41 +02:00
Martine Lenders
8fe12bc82c
Merge pull request #11021 from miri64/gnrc_sixlowpan_frag/enh/multiple-send
...
gnrc_sixlowpan_frag: allow send of multiple datagrams simultaneously
2019-05-27 11:54:26 +02:00
Martine Lenders
93050d29c0
gnrc_sixlowpan_frag: unify common operations
2019-05-27 10:35:31 +02:00
Martine Lenders
04472d3fbe
gnrc_sixlowpan_frag: reorder stack variables for better stack usage
2019-05-27 10:35:31 +02:00
Martine Lenders
b6f19c0bcb
gnrc_sixlowpan_frag: allow send of multiple datagrams simultaneously
2019-05-27 10:35:31 +02:00
4d052a6921
Merge pull request #11580 from miri64/gnrc_ipv6_ext/fix/nh-after-change
...
gnrc_ipv6_ext: don't read from `pkt->data` after `_demux()`
2019-05-26 00:40:37 +02:00
Martine Lenders
ea1708b402
gnrc_ipv6_ext: don't read from pkt->data after _demux()
...
`_demux()` might change `pkt->data` in all kind of ways (moving it due
to `gnrc_pktbuf_mark()`, though unlikely; releasing it, because e.g. it
starts with a fragment header that marks a fragmented packet containing
only one fragment, etc.) so accessing the pointer *after* calling
`_demux()` is somewhat playing with fire. This change avoids this by
storing the value of `ext_hdr->nh` (all we are interested in here) in a
temporary variable that then is used to set the out-parameter `nh`.
`protnum` needs to be unchanged before the call to `_demux()` as it was
set by the previous iteration and determines what extension header
actually is handled.
2019-05-24 22:11:22 +02:00
Martine Lenders
7e26a22723
gnrc_sixlowpan_frag: fix timeout config macro name
2019-05-24 17:39:35 +02:00
Martine Lenders
1cac697a62
gnrc_sixlowpan_frag: make aggresive override configurable
2019-04-25 09:37:34 +02:00
Martine Lenders
9a6473104d
Merge pull request #10483 from miri64/gnrc_ipv6_nib/fix/no-auto-config-wo-l2addr
...
gnrc_ipv6_nib: don't autoconfig IPv6 address without L2 addr
2019-04-19 08:53:25 +02:00
Martine Lenders
5732e9bd88
gnrc_ipv6_nib: don't autoconfig IPv6 address without L2 addr
...
If the interface's link-layer doesn't use link-layer addresses it
obviously doesn't make sense to auto-configure an IPv6 address from it.
Moreover, I think the address `fe80::` is actual illegal, but I
couldn't find any references for it.
2019-04-19 08:36:15 +02:00
Martine Lenders
a55320a10a
gnrc_sixlowpan_frag: expose tag progression functionality
...
The VRB also needs to be able to generate new tags for forwarding. This
exposes the tag generation.
2019-04-18 16:40:12 +02:00
Martine Lenders
43dedfcd2c
gnrc_sixlowpan_frag/rbuf: document undocumented functions
...
This adds documentation for the following undocumented functions:
- rbuf_rm()
- rbuf_entry_empty()
2019-04-18 14:19:53 +02:00
Martine Lenders
1550390adb
gnrc_sixlowpan_frag: expose reassembly buffer configuration
...
Both values are not standardized so there is no sense keeping these
values not configurable
2019-04-18 14:19:53 +02:00
Cenk Gündoğan
44e4973cab
Merge pull request #11166 from miri64/gnrc_ipv6/fix/send-empty-payload
...
gnrc_ipv6: allow sending empty IPv6 packets
2019-03-27 19:17:01 +01:00
Martine Lenders
c3efb91181
gnrc_ipv6: allow sending empty IPv6 packets
2019-03-27 18:45:04 +01:00
Martine Lenders
aa8e760e46
Merge pull request #11182 from miri64/gnrc_ipv6_nib/fix/pkt-null-on-error
...
gnrc_ipv6_nib: check if pkt is NULL on error
2019-03-27 18:38:32 +01:00
Peter Kietzmann
f6efecc3f0
Merge pull request #11063 from miri64/gnrc_sixlowpan_frag/enh/msg-send-to-6lo
...
gnrc_sixlowpan_frag: encapsulate msg_send_to_self()
2019-03-26 21:26:04 +01:00
Martine Lenders
add337cff9
Merge pull request #10769 from miri64/gnrc_ipv6/enh/ipv6-sending-debug
...
gnrc_ipv6: add sending DEBUG output
2019-03-26 21:17:16 +01:00
Martine Lenders
3f2e0e70cb
gnrc_ipv6: add sending DEBUG output
2019-03-26 20:19:35 +01:00
Martine Lenders
83b9f72f83
Merge pull request #11011 from miri64/ndp/enh/add-hop-limit-define
...
ndp: provide define for common hop-limit
2019-03-26 20:18:07 +01:00
Martine Lenders
06e244c963
ndp: provide define for common hop-limit
2019-03-26 12:00:52 +01:00
Martine Lenders
b970d00064
gnrc_ipv6_nib: check if pkt is NULL on error
...
According to the documentation of `gnrc_ipv6_nib_get_next_hop_l2addr()`
`pkt` may be `NULL`. However, whenever that function sends an error
message (the methods for that require `orig_pkt` not to be NULL) `pkt`
is not checked, which may lead to failed assertions.
2019-03-14 14:29:13 +01:00
Martine Lenders
3582dedd4e
gnrc_sixlowpan_iphc: check ptr != NULL in compressible check
...
Not only does this leave open a risk to crash the node for the check
in `_compressible()` but also is the `tmp` check below getting confused
when `ptr` is `NULL`, since `gnrc_pktbuf_start_write()` returns `NULL`
in that case.
2019-03-12 16:48:33 +01:00
Martine Lenders
931b179d14
gnrc_sixlowpan_frag: encapsulate msg_send_to_self()
...
This makes it easier to access this functionality for test cases e.g.
from the `main` thread.
2019-03-08 19:32:46 +01:00
Marian Buschsieweke
8dbd3b24d1
Merge pull request #11124 from miri64/gnrc_sixlowpan/fix/debug-pri
...
gnrc_sixlowpan: don't use PRIx8
2019-03-08 10:25:27 +01:00
Martine Lenders
449d4559a7
gnrc_sixlowpan_frag: replace printf with DEBUG
2019-03-07 18:17:07 +01:00
Martine Lenders
f6d3290507
gnrc_sixlowpan: don't use PRIx8
...
With newlib nano-specs the debug output without this change will be
6lo: dispatch 0hx ... is not supported
With this PR this will provide a correct output, e.g.
6lo: dispatch 0x3f ... is not supported
2019-03-07 12:45:27 +01:00
Martine Lenders
b27f12bc1f
gnrc_sixlowpan_frag: remove redundant PID member
...
The interface ID is actually also provided in `pkt` so providing it in
the `gnrc_sixlowpan_msg_frag_t` struct is redundant.
2019-02-15 11:23:18 +01:00
Cenk Gündoğan
3fd13b9a85
Merge pull request #10985 from miri64/gnrc_ipv6_nib/fix/delayed-na
...
gnrc_ipv6_nib: fix preparation of delayed NA
2019-02-12 20:47:42 +01:00
Gaëtan Harter
8e4b11cdd0
Merge pull request #10369 from miri64/gnrc_ipv6_nib/fix/arsm-16-bit
...
gnrc_ipv6_nib/arsm: ensure proper int width in backoff calculation
2019-02-12 17:54:52 +01:00
Martine Lenders
82001cfd79
gnrc_ipv6_nib: expose non-randomized part of NS-backoff calculation
...
This was primarily done so the backoff can be tested
2019-02-12 17:01:14 +01:00
Martine Lenders
1f4d57d608
gnrc_ipv6_nib/arsm: ensure proper int width in backoff calculation
...
Otherwise, the result might flow over on 8/16-bit platforms
2019-02-12 17:01:14 +01:00
Martine Lenders
aa953a40ea
gnrc_ipv6_nib: fix preparation of delayed NA
...
Currently the constructed NA for a delayed NA case is neither used nor
released nor does it get an IPv6 header to be used properly. This fixes
that case.
2019-02-12 14:12:59 +01:00
Martine Lenders
877217663e
gnrc_ipv6_nib: add clarification to comment in cache-out
...
When working on the previous commit I was unsure if a
garbage-collectible entry should remain in the list, so I added this
comment so I don't have to wonder about this in the future ;-).
2019-02-12 12:06:45 +01:00
Martine Lenders
7fcc2ab5d6
gnrc_ipv6_nib: fix iteration conditions for cache-out
2019-02-12 12:06:04 +01:00
Cenk Gündoğan
ea7f7c2340
Merge pull request #10978 from miri64/gnrc_ipv6_nib/fix/release-when-full
...
gnrc_ipv6_nib: release packet when NC entry can't be added
2019-02-12 10:43:32 +01:00
Marian Buschsieweke
194d340a64
net/sixlowpan: Fixed calculation of fragment size
...
Fragment size calculation previously failed for devices that are able to
transmit bigger layer 2 PDUs that 802.15.4 devices. This commit fixes the issue.
2019-02-12 09:45:31 +01:00
Martine Lenders
fd3f806e32
gnrc_ipv6_nib: release packet when NC entry can't be added
...
When the neighbor cache is full, the packet trying to resolve a
neighbor is not released.
This change fixes that.
2019-02-08 21:53:46 +01:00
Martine Lenders
660440c1c2
gnrc_ipv6_nib/nc: remove from _next_removable on remove
...
The `_next_removable` list manages the cache-out of the neighbor cache.
However, when a neighbor cache entry is removed, it is not removed
from that list, which may lead to a segmentation fault when that list is
accessed, since the whole entry (including its list pointer) is zeroed
after removal.
With this change the entry is removed from that list accordingly before
the zeroing happens.
2019-02-08 16:45:47 +01:00
cb457941db
gnrc: nib: fix DOXYGE -> DOXYGEN
2019-02-06 13:01:40 +01:00