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

1367 Commits

Author SHA1 Message Date
Martine Lenders
3d9c7ee5de gnrc_tftp: set source port for server 2019-07-01 22:56:42 +02:00
Martine Lenders
5ec0b1609a gnrc_tftp: initialize unititialized 'tftp_context_t' values to 0 2019-07-01 22:55:31 +02:00
Sören Tempel
e8d0fb7685 gnrc_tftp: Add minimum packet length check
Fixes #10927
2019-07-01 13:49:25 +02:00
Sören Tempel
a26942632a gnrc_tftp: Fix out-of-bounds memory access when comparing modes 2019-06-27 10:21:42 +02:00
Martine Lenders
3ee75c3ca9 gnrc_sixlowpan_iphc: assure ctx != NULL for dst compression
For the source address compression it was already done the same way in
12bcc46f15
2019-06-20 16:18:23 +02:00
Martine Lenders
3edb52de0c gnrc_rpl_dodag: remove new_best assignment at initialization
The variable is without usage reassigned with `dodag->parent` below.
2019-06-20 16:18:23 +02:00
Martine Lenders
fa95cc8090 gnrc_ipv6_nib: assure netif != NULL in route info callback 2019-06-20 16:18:23 +02:00
Martine Sophie Lenders
a09072c93d gnrc_ipv6_nib: add address from netif to address validation timer
The `addr` parameter of the NIB's `_handle_dad()` function can come
from anywhere (e.g. in the fallback to classic SLAAC the destination
address of the IP header is used), so putting that pointer in a timer
is not a good idea. Instead we use the version of the address that is
stored within the interface.
2019-06-18 12:05:07 +02:00
Martine Sophie Lenders
f5f8261b1c gnrc_ipv6_nib: add debug messages for DAD + 6Lo 2019-06-18 11:48:04 +02:00
Martine Sophie Lenders
484526533d gnrc_ipv6_nib/SLAAC: add debug message for address validation 2019-06-18 11:47:47 +02:00
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
e34a133428
Merge pull request #11560 from benpicco/rpl/of-api-update
RPL: API update suggestions
2019-05-29 15:44:39 +02:00
42c1da8171 gnrc_rpl: update OF API
- dodag->parents already points to the preferred parent, so give dodag to calc_rank directly
 - remove unused which_parent function
2019-05-29 15:11:18 +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
Cenk Gündoğan
650ee83e90
Merge pull request #11442 from miri64/gnrc_sixlowpan_frag/enh/aggressive-config
gnrc_sixlowpan_frag: make aggresive override configurable
2019-05-24 17:25:20 +02:00
Martine Lenders
7833141af1 gnrc_mac: rename directory in line with other modules 2019-05-09 14:46: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
Martine Lenders
3c19aa7dfc gnrc_netif_ieee802154: check if mhr_len is lesser than nread 2019-04-15 16:36:31 +02:00
Cenk Gündoğan
99fe24fcfd
Merge pull request #11298 from miri64/gnrc_netif/fix/falls-through-comment
gnrc_netif: fix fall-through comment
2019-03-28 08:10:37 +01:00
Peter Kietzmann
e9293d9192
Merge pull request #11257 from brummer-simon/gnrc_tcp-fix_packet_flood
gnrc_tcp: Fix packet-flood while probing
2019-03-28 00:37:33 +01:00
Martine Lenders
768a117ade gnrc_netif: fix fall-through comment
gcc 8.2.1 has problems with the comment being within the `#ifdef`
2019-03-27 19:45:40 +01: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
7931d66f79
Merge pull request #10895 from miri64/gnrc_rpl/enh/do-not-assert-netif
gnrc_rpl: do not assert netif on auto-init
2019-03-27 18:50:52 +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
Martine Lenders
39fe2a30e4 gnrc_netif: use l2util for some functions
The following functions can now be wrapped around the more generalized
approach:

- gnrc_netif_ipv6_iid_from_addr()
- gnrc_netif_ipv6_iid_to_addr()
- gnrc_netif_ndp_addr_len_from_l2ao()
- gnrc_netif_eui64_from_addr()
2019-03-26 21:37:20 +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
Simon Brummer
5d1ab9b34c gnrc_tcp: Fix packet-flood while probing 2019-03-26 21:05:53 +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
05bca5b2cf gnrc_netif: fix DEBUG output on error
`res` is an integer that is always negative in the given case, so using
`%u` here might be a little bit confusing.
2019-03-26 18:23:56 +01:00
Martine Lenders
116642f1de
Merge pull request #11164 from miri64/gnrc_sixlowpan_iphc/fix/check-NULL-ptr-for-compressible
gnrc_sixlowpan_iphc: check ptr != NULL in compressible check
2019-03-26 17:49:10 +01:00
Martine Lenders
06e244c963 ndp: provide define for common hop-limit 2019-03-26 12:00:52 +01:00
Martine Lenders
bcb6b921d3
Merge pull request #11255 from aabadie/pr/gnrc_netif_nrfmin_fix
net/gnrc_netif/nrfmin: put NETOPT_PROTO assert at the right place
2019-03-24 15:01:50 +01:00
5fa2528185
net/gnrc_netif/nrfmin: put NETOPT assert at the right place
NETOPT depends on GNRC_SIXLOWPAN and should be moved inside the corresponding preprocessor conditional code
2019-03-24 14:34:12 +01:00
Jose Alamos
83ba971412
gnrc_netif: add NETDEV_TYPE_LORA to L2ADDR check 2019-03-24 11:10:41 +01:00
Martine Lenders
fb5a298c1f
Merge pull request #11193 from haukepetersen/rm_pkbuf_getiovec
net/gnrc_pktbuf: rm deprecated _pktbuf_get_iovec()
2019-03-19 11:52:14 +01:00
Semjon Kerner
db589365f0
Merge pull request #11161 from miri64/gnrc_pktbuf/fix/start-write-size-0
gnrc_pktbuf: allow write-protect of size 0 snips
2019-03-15 15:10:59 +01:00
ccc09d9ed4
Merge pull request #11023 from miri64/gnrc_netif_ieee802154/enh/propagate-pend-frames
gnrc_netif_ieee802154: propagate pend. frame flag to stack
2019-03-15 12:51:50 +01:00
Hauke Petersen
9fb2f541ba net/gnrc_pktbuf: rm deprecated _pktbuf_get_iovec() 2019-03-15 10:21:22 +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
4f733840c6 gnrc_pktbuf_malloc: allow write-protect of size 0 snips
Size 0 snips are legal packet snips (empty payload e.g.) so it doesn't
make sense to issue an error in the write-protection in that case.

API documentation doesn't mention it either and the tests still pass
with the check removed.
2019-03-12 14:35:58 +01:00
Martine Lenders
efb658a67c gnrc_pktbuf_static: allow write-protect of size 0 snips
Size 0 snips are legal packet snips (empty payload e.g.) so it doesn't
make sense to issue an error in the write-protection in that case.

API documentation doesn't mention it either and the tests still pass
with the check removed.
2019-03-12 14:34:49 +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
bef475e450 gnrc_rpl_auto_init: add workaround comments 2019-02-26 20:33:07 +01:00
Martine Lenders
7d8f6abd45 gnrc_netif: check all required options on initialization
With `DEVELHELP` activated all required options required by GNRC are
now checked at interface initialization, so that developers of new
link-layer protocols or device drivers notice as soon as possible that
something is missing.
2019-02-26 16:45:21 +01:00
Martine Lenders
0f1bfad15b gnrc_netif: provide addr_len_from_l2ao for nordic_softdevice_ble 2019-02-26 15:43:39 +01:00
Martine Lenders
13030d5a35 gnrc_netif: expose message queue size configurable 2019-02-26 13:26:20 +01:00
Martine Lenders
727a843ce4
Merge pull request #10905 from maribu/packet_size_l2_pdu
net: NETOPT_MAX_{PACKET_SIZE -> PDU_SIZE}
2019-02-22 15:23:00 +01:00
Martine Lenders
998b9ed0d4 gnrc_netif_hdr: make in parameters const 2019-02-21 12:43:08 +01:00
Marian Buschsieweke
4672368d5a
sys/net: NETOPT_MAX_{PACKET_SIZE -> PDU_SIZE}
Updated code to use NETOPT_MAX_PDU_SIZE instead of deprecated
NETOPT_MAX_PACKET_SIZE.
2019-02-18 20:15:08 +01:00
Martine Lenders
eac066a1e5 gnrc_netif_ieee802154: propagate pend. frame flag to stack
This way we can re-use the flag e.g. for forwarding
2019-02-15 14:46:43 +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
Cenk Gündoğan
fa48e662a7
Merge pull request #10998 from miri64/gnrc_ipv6_nib/fix/cache-out-loop-iteration
gnrc_ipv6_nib: fix iteration conditions for cache-out
2019-02-12 14:10:15 +01:00
Peter Kietzmann
892a37351a
Merge pull request #10946 from brummer-simon/gnrc_tcp-fix_syn_rcvd_packetloss_deadlock
gnrc_tcp: syn_rcvd pkt loss fix
2019-02-12 13:51:51 +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
8eb02b6cd1
Merge pull request #10975 from miri64/gnrc_ipv6_nib/fix/rm-nib-clean
gnrc_ipv6_nib/nc: remove from _next_removable on remove
2019-02-11 17:39:29 +01:00
Peter Kietzmann
63fd8bc89b
Merge pull request #7577 from miri64/gnrc_netif2/feat/ieee802154-dup-bcast
gnrc_netif_ieee802154: drop duplicate broadcast packets (optionally)
2019-02-11 09:42:06 +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
Martine Lenders
43c2c728c9 gnrc_sixlowpan_iphc: fix _compressible()
When either `gnrc_sixlowpan_iphc_nhc` or `gnrc_udp` is not compiled
in `_compressible()` never returns `true`. This causes the
`dispatch` snip in `gnrc_sixlowpan_iphc_send()` to be of length 0,
meaning `dispatch->data` is `NULL`, causing possible crashes when
trying to send IPv6 packets over 6LoWPAN without NHC or UDP.
2019-02-05 15:22:41 +01:00
Simon Brummer
5dc3f8dc3d gnrc_tcp: syn_rcvd pkt loss fix 2019-02-04 20:57:30 +01:00
Martine Lenders
985d98073f gnrc_netif_ieee802154: drop duplicate broadcast packets (optionally) 2019-02-04 16:19:48 +01:00
Peter Kietzmann
2c5d1b013e
Merge pull request #10918 from maribu/cc110x_mtu
drivers/cc110x: Fixed MTU calculation
2019-02-04 09:44:10 +01:00
Marian Buschsieweke
dae680dcb2
sys/net: Added NETDEV_TYPE_CC110X to MTU init 2019-02-04 09:16:29 +01:00
Sebastian Meiling
734524aead gomach: fix reassign before usage error 2019-02-01 11:25:27 +02:00
smlng
6d0384f068 netstats: collect layer 2 netstats in gnrc_netif
This the first step in moving the collection of layer 2 netstats from
the low level driver to a central location, ie. gnrc_netif, to avoid
code duplication.
2019-02-01 10:35:03 +02:00
Cenk Gündoğan
b3843daeb8
Merge pull request #10817 from miri64/gnrc_netif/enh/i10723
gnrc_ipv6_nib: use generated EUI-64 for ARO build and check
2019-01-29 22:49:41 +01:00
Martine Lenders
d680aeae07 gnrc_ipv6_nib: use gnrc_netif_get_eui64() for ARO build and check 2019-01-29 21:52:53 +01:00
Martine Lenders
0fa8419c4a gnrc_netif: wrap _ipv6_iid_from_addr() around _eui64_from_addr() 2019-01-29 21:52:53 +01:00
Martine Lenders
16e7fc8336 gnrc_netif: introduce L2 address to EUI-64 conversion 2019-01-29 21:52:53 +01:00
Martine Lenders
a2b2f96fe3 gnrc_netif: rename _create_iid_from_short() to emphesize EUI-64 2019-01-29 21:52:53 +01:00
Martine Lenders
983b60dbd4 gnrc_rpl: do not assert netif on auto-init
`gnrc_networking` is unusable when compiled for boards that do not have
any network devices on-board due to an assertion in RPL's auto-init. I
think this is pretty harsh. A friendly info message is enough, as it
might not even be an error. Also, if one expects RPL to work without
network interfaces they are a fool ;-).
2019-01-29 17:56:58 +01:00
Martine Lenders
2d54069f59
Merge pull request #10869 from gschorcht/gnrc_icmpv6_echo_fix
gnrc_icmpv6_echo: avoid crashing when pktbuf full
2019-01-25 18:33:07 +01:00
b8565e492d
Merge pull request #10851 from miri64/tests/feat/gnrc_sixlowpan_frag-tests
tests: provide unittests for gnrc_sixlowpan_frag/rbuf
2019-01-25 17:55:28 +01:00
Gunar Schorcht
c88838f391 gnrc_icmpv6_echo: avoid crashing when pktbuf full
Once the packet buffer is full on heavy network load, gnrc_netif_hdr_build may return NULL. In that case, the following unchecked access to hdr->data leads to a crash.
2019-01-25 17:10:57 +01:00
Martine Lenders
7d9ef9f78c gnrc_sixlowpan_frag/rbuf: add offset assertion to rbuf_add()
`gnrc_sixlowpan_frag` internally derives the offset value directly
from the fragment header, so for normal usage within GNRC this
assertion is redundant, but to make the tests of `rbuf_add` 100%
water-tide I added it.
2019-01-25 16:57:09 +01:00
Martine Lenders
892c7a5430
Merge pull request #10866 from miri64/gnrc_sixlowpan/fix/type-finding-loop
gnrc_sixlowpan: stop type-finding loop when type is found
2019-01-25 14:38:34 +01:00
Martine Lenders
879321d68a gnrc_sixlowpan: stop type-finding loop when type is found
Currently the loop just continues to run after a viable type is found.
In #10851 this lead to a crash of the tests, when the dependency of
`gnrc_sixlowpan` to `gnrc_ipv6` was removed.
2019-01-25 12:04:30 +01:00
Martine Lenders
b0beba3c1c gnrc_ipv6_nib: release when not queuable on AR
When a new queue entry is tried to be allocated for a neighbor who's
address is currently tried to be resolved there was no error case
before. The packet that was tried to be put in the queue was thus not
released and stayed in the packet buffer for ever.
2019-01-25 00:13:21 +01:00
Martine Lenders
8c1cf53d28 gnrc_icmpv6: release when received packet too short 2019-01-24 15:50:18 +01:00
Martine Lenders
bbde73eb81 gnrc_icmpv6: release on wrong checksum 2019-01-24 14:57:36 +01:00
Martine Lenders
1370099435 gnrc_sixlowpan_frag/rbuf: provide helper functions for testing 2019-01-23 20:00:07 +01:00
Martine Lenders
4c1d1424c0 gnrc_sixlowpan_frag: release for fragment too big error case
The fragment is released for all other error cases, just not this one.
2019-01-23 18:05:37 +01:00
shuguo
4a4e552cca gnrc_lwmac: enable duty-cycle printing. 2019-01-22 21:24:00 +08:00
Martine Lenders
d3f8739a1e
Merge pull request #5949 from zhuoshuguo/add_timeout_module_to_gnrc_mac
gnrc_mac: add timeout module.
2019-01-22 10:34:30 +01:00
zhuoshuguo
79e5586d0c gnrc_mac: add timeout module.
Co-Authored-By: zhuoshuguo <zhuosgzju@gmail.com>
2019-01-21 22:46:10 +08:00
Cenk Gündoğan
82f30fd8c4
Merge pull request #10514 from miri64/pkg/enh/nordic-softdevice-ble-mac48
pkg/nordic_softdevice_ble: Use MAC48 as hardware address
2019-01-17 19:22:36 +01:00
Martine Lenders
7f7bc8fc20 pkg/nordic_softdevice_ble: Use MAC48 as hardware address
This is just a compatibility issue waiting to happen as soon as there
is support for a more standard-compliant implementation of BLE (like
e.g. NimBLE ;-)).
2019-01-17 18:08:55 +01:00
c0785df050
Merge pull request #10786 from kaspar030/fix_pktbuf_empty_memcpy
gnrc/pktbuf: avoid memcpy if size <= 0
2019-01-16 18:34:23 +01:00
Cenk Gündoğan
b24a8fbf3a
Merge pull request #10524 from miri64/gnrc_netif/enh/centralize-dev-type-functions
gnrc_netif: centralize device-type-specific functions
2019-01-16 16:44:43 +01:00
a2d679c76f gnrc/pktbuf: avoid memcpy if size <= 0 2019-01-16 16:13:14 +01:00
Martine Lenders
55b9757044 gnrc_netif: centralize function to init IPv6 MTU 2019-01-16 15:52:54 +01:00
Martine Lenders
ea9bbd72b8 gnrc_netif: centralize function to get l2addr NETOPT 2019-01-16 15:52:54 +01:00
Martine Lenders
8f763535ac gnrc_netif: centralize S/TLLAO length to address length function
The function to infer the link-layer address length from the length of
a S/TLLAO is very dependent on the IPv6 over X specification and thus
should be grouped with the other IP over X functions.
2019-01-16 15:52:53 +01:00
Martine Lenders
01370511df gnrc_sixlowpan_frag: drop received duplicates
Otherwise duplicate fragments are added to the number of already
received datagram bytes in L153 leading to possible race-conditions.
2019-01-15 20:09:49 +01:00
Cenk Gündoğan
6a4c764c95
Merge pull request #10569 from miri64/gnrc_netif/enh/rm-get-NETOPT_IPV6_IID
gnrc_netif: make _get_iid() just wrapper around _iid_from_addr()
2019-01-14 14:09:34 +01:00
Martine Lenders
7ae90564d9 gnrc_netif: make _get_iid() just wrapper around _iid_from_addr()
This way the IID generation gets much simplified and code duplication
is avoided since it removes GNRC's requirement for NETOPT_IPV6_IID.
2019-01-14 13:42:58 +01:00
Gunar Schorcht
dbb5e886e5 gnrc_netif_ieee802154: use pid member in netif header
Use the `gnrc_netif_t::pid` member instead of the pid of the current thread when generating the the `gnrc_netif_hdr` in `gnrc_netif_ieee802154::_recv` function.
2019-01-10 00:09:52 +01:00
Gunar Schorcht
3876dd4bb9 gnrc_netif_ethernet: use pid member in netif header
Use the `gnrc_netif_t::pid` member instead of the pid of the current thread when generating the the `gnrc_netif_hdr` in `gnrc_netif_ethernet::_recv` function.
2019-01-10 00:09:24 +01:00
Gunar Schorcht
fb9e25faf7
Merge pull request #10724 from miri64/gnrc_ipv6_nib/fix/mixed-mode-ABRO
gnrc_ipv6_nib: fix RA reception for non-6LN interfaces
2019-01-08 09:47:09 +01:00
Martine Lenders
7452f48c26 gnrc_sixlowpan_frag: unroll recursion
While the recursion in `gnrc_sixlowpan_frag` shouldn't be infinite we
still should avoid using recursions in general (also to be able to
statically analyze stack usage). This unrolls the recursion.
2019-01-08 09:03:22 +01:00
201cff0ada
Merge pull request #10722 from nmeum/gnrc-tcp-comment-typo
gnrc_tcp_pkt: fix typo in comment
2019-01-07 20:23:20 +01:00
Martine Lenders
1f71b30bc2 gnrc_ipv6_nib: fix RA reception for non-6LN interfaces
When having a non-6LN interface and a 6LN interface (e.g. on a border
router) the assertion can hit when a Router Advertisement is received.
This makes the check an `if` statement rather than an assertion, to
account for that case.

Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
2019-01-07 17:36:03 +01:00
Sören Tempel
45989aa60e gnrc_tcp_pkt: fix typo in comment 2019-01-07 16:15:41 +01:00
Martine Lenders
481f742c71 gnrc_netif: interface configuration for 6LoENC 2019-01-04 13:32:24 +01:00
b77c802f9b
Merge pull request #10666 from miri64/netopt/new/6lo
netopt: provide option to (de-)activate 6Lo
2019-01-03 18:50:31 +01:00
Martine Lenders
45b9dd6f50 gnrc_netif: implement get NETOPT_6LO 2019-01-03 16:21:52 +01:00
José Alamos
f14d46d935
Merge pull request #10242 from miri64/gnrc_ipv6_ext_rh/enh/icmpv6_error_msg
gnrc_ipv6_ext_rh: add ICMPv6 error message sending
2019-01-03 10:35:54 +01:00
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
Timo Rothenpieler
814e4ecbbe gnrc_netif: ESP-NOW talks 6Lo now 2018-12-29 13:15:44 +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
4878cf2119
Merge pull request #10400 from miri64/core/enh/thread_has_queue_func
core: provide function to check msg queue initialization
2018-12-19 18:41:39 +01:00
Martine Lenders
a14e33df01 gnrc_netreg: use thread_has_msg_queue() for msg queue check 2018-12-19 15:39:50 +01:00
Martine Lenders
986b9d380b gnrc_netreg: make message queue check more readable 2018-12-19 15:39:50 +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
5e03f58746
Merge pull request #10383 from miri64/gnrc_pktdump/enh/add-ipv6-ext
gnrc_pktdump: add GNRC_NETTYPE_IPV6_EXT output
2018-12-18 20:52:45 +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
José Alamos
b709e63581
Merge pull request #10234 from miri64/gnrc_ipv6/enh/iterate-out-of-ext
gnrc_ipv6: move ipv6_ext iteration out of ext_demux()
2018-12-14 10:44:00 +01:00
Martine Lenders
e06cdcdf14 gnrc_pktdump: add GNRC_NETTYPE_IPV6_EXT output 2018-12-14 01:37:53 +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
Sebastian Meiling
4f646b4efc
Merge pull request #10441 from miri64/gnrc_netapi/enh/codesize-opt
gnrc_netapi: optimize code-size
2018-12-12 09:51:02 +01:00
Martine Lenders
c16d0bc96e gnrc_netapi: use static inline for high-level wrapper functions
This reduces the overall code size of GNRC applications by a few bytes.
2018-12-11 16:15:51 +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
Hauke Petersen
ec37ff5825 gnrc/netif: use eui48_x() for IID handling 2018-12-06 22:02:01 +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
Martine Lenders
a44f7f7b38 gnrc_netif: use general IID conversion function for netif-based 2018-12-06 14:41:30 +01:00
Martine Lenders
5ca30b9b03 gnrc_netif: add general IID to/from l2addr conversion functions
They are required to make GNRC's 6Lo IPHC implementation ready for
hardware addresses other than IEEE 802.15.4's.
2018-12-06 14:41:30 +01:00
f38d9d14c6
Merge pull request #10549 from miri64/gnrc_netif/enh/submodules
gnrc_netif: make link-layer specific operations proper submodules
2018-12-05 17:44:40 +01:00
Martine Lenders
08524ca1d2 gnrc_netif_hdr: move path resolve to gnrc_netif submodule resolution
No that we introduced sub-modules to `gnrc_netif` we can move that here
as well.
2018-12-05 15:04:45 +01:00
Martine Lenders
72c5fd06b4 gnrc_netif: make link-layer specific operations proper submodules 2018-12-05 15:04:04 +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