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

2551 Commits

Author SHA1 Message Date
Hauke Petersen
ad20c4f1cc net: add Asymcute (asynchronous MQTT-SN client) 2018-07-05 15:44:16 +02:00
Hauke Petersen
bf8f8dfa67 net/sock_udp: add sock_udp_ep_equal() 2018-07-05 15:13:01 +02:00
Martine Lenders
5361c4cfff sock_dns: return error if DNS server is not set 2018-07-05 11:09:34 +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
fbf216f864 gnrc_sock_dns: Move DNS server end point to implementation 2018-07-05 11:01:22 +02:00
Hauke Petersen
1bfb3c8534 net/emcute: adapted to changes byteorder functions 2018-07-04 17:41:04 +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
Cenk Gündoğan
bf33941819
Merge pull request #9434 from miri64/gnrc_pktbuf_static/fix/alignment-race
gnrc_pktbuf_static: fix alignment issue / leaks
2018-07-02 16:32:13 +02:00
Cenk Gündoğan
32e823acb2
Merge pull request #9447 from miri64/gnrc_sixlowpan_frag/enh/add-cur-size
gnrc_sixlowpan_frag: add current_size to exposed struct
2018-07-02 14:05:40 +02:00
Joakim Nohlgård
bbf4f1e453 gnrc_netif: Enable RX and TX complete events after netdev init 2018-06-29 21:53:23 +02:00
Martine Lenders
cb74063573 gnrc_sock_udp: use sock's local end-point for listening
Without this fix the listener doesn't actually listen on the
(potentially) ephemeral port introduced in #9382, but on port 0 which is
wrong.
2018-06-28 17:25:26 +02:00
Martine Lenders
68fe6682ff gnrc_sixlowpan_frag: add current_size to exposed struct
Since IPHC also manipulates the total number of bytes of a received
datagram (by decompressing it), this also needs to be exposed. I guess
I was too focused on introducing a *generic* packet buffer for a future
virtual reassembly buffer (where it isn't needed, but so isn't `pkt` to
be honest), that I totally forgot about it in #9352.
2018-06-28 12:28:51 +02:00
Martine Lenders
acfe57a52b gnrc_pktbuf_static: reduce checks to be in line with new alignment 2018-06-27 17:19:34 +02:00
Martine Lenders
8a75d8d189 gnrc_pktbuf_static: fix alignment issue / leaks
This fixes an alignment issue I encountered in the static version of
the packet buffer.

The bug is caused by a race-condition where a certain order of
operations leads to a chunk being released according to the
byte-alignment of the platform, but overlapping potential space for
a future `_unused_t` struct e.g. (x mark allocated regions):

                    Future leak of size sizeof(_unused_t)       Time
                    v                                            |
    +------------+-----+--------------------+                    |
    |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|                    +
    +------------+-----+--------------------+                    |
                                                                 |
    +------------+--+--+--------------------+                    |
    |               |xxxxxxxxxxxxxxxxxxxxxxx|                    +
    +------------+--+--+--------------------+                    |
                                                                 |
    +-----+------+--+--+--------------------+                    |
    |xxxxx|         |xxxxxxxxxxxxxxxxxxxxxxx|                    +
    +-----+------+--+--+--------------------+                    |
                                                                 |
    +-----+------+-----+---------+----------+                    |
    |xxxxx|                      |xxxxxxxxxx|                    +
    +-----+------+-----+---------+----------+                    |
                                                                 |
    +-----+------+-----+--------------------+                    |
    |xxxxx|      |xxxxxxxxxxxxxxxxxxxxxxxxxx|                    +
    +-----+------+-----+--------------------+                    |
                                                                 |
    +------------+-----+--------------------+                    |
    |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|                    +
    +------------+-----+--------------------+                    |
                                                                 |
    +------------+-----+--------------------+                    |
    |xxxxxxxxxxxxxxxxxx|                    |                    +
    +------------+-----+--------------------+                    |
                                                                 |
    +------------+-----+--------------------+                    |
    |            |xxxxx|                    |                    +
    +------------+-----+--------------------+                    |
                                                                 v

Sadly, I wasn't able to create a reproducable unittest that show-cases
this corner-case, since I don't understand the order of operations that
cause this one 100%, but the bug is reproducable (but also not
reliably) by sending large (i.e. fragmented) packets to a 6Lo-enabled
host from more than 1 host simultaneously (use `gnrc_pktbuf_cmd` to
check).

By making the size of `_unused_t` the only condition for alignment,
this bug is fixed.
2018-06-27 17:18:24 +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
0c9d7aeedc gnrc_rpl: exit early if netif_hdr is NULL in send function
Without this fix RPL might crash when the packet buffer is full.
2018-06-21 14:51:47 +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
d140aa1c8e
Merge pull request #9382 from miri64/sock/enh/i9376
sock_udp: allow creation with ephemeral ports
2018-06-21 12:16:40 +02:00
Cenk Gündoğan
0c428ecb2e gnrc_rpl: remove events from the queue before memset() 2018-06-21 10:41:13 +02:00
ddfc5843bb
Merge pull request #9086 from bergzand/pr/nanocoap_sock/client_split
nanocoap_sock: split generic request function of from nanocoap_get
2018-06-20 23:31:05 +02:00
Martine Lenders
a33399edf7 gnrc_sock_udp: provide fix for error state for full port pool 2018-06-20 14:51:18 +02:00
Martine Lenders
f8524cb4c0 gnrc_sock_udp: provide port for #9376 API fix 2018-06-20 14:51:17 +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
Cenk Gündoğan
acb9e4aed2
Merge pull request #9352 from miri64/gnrc_sixlowpan_frag/enh/expose-rbuf
gnrc_sixlowpan_frag: expose (parts of) reassembly buffer
2018-06-18 10:55:13 +02:00
Ken Bannister
4f8c3b7d18
Merge pull request #9310 from miri64/gcoap/enh/clients-without-response-handlers
gcoap: don't allocate memo for clients without response handlers
2018-06-15 10:28:30 -04:00
Martine Lenders
b03aa528e8 gcoap: don't allocate memo for clients without response handlers 2018-06-15 09:46:50 +02:00
Joakim Nohlgård
8514ff5f15 gnrc/pktbuf: Const correctness on gnrc_pktbuf_add 2018-06-15 00:44:23 +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
e91e0a7807
Merge pull request #9261 from kb2ma/gcoap/refine_re-register
net/gcoap: Refine Observe re-registration
2018-06-13 16:05:40 +02:00
7d013eb2b6 sys: fix doxygen grouping 2018-06-11 19:12:02 +02:00
Martine Lenders
ec5ca98b4d
Merge pull request #9320 from brummer-simon/gnrc_tcp-set_ip_src_addr_directly
gnrc_tcp: Set src addr in outgoing packets by tcp layer.
2018-06-11 14:20:21 +02:00
Ken Bannister
43db2715cd net/nanocoap: create pkt-based request
Includes string and uint options.
2018-06-10 08:44:16 -04:00
Simon Brummer
370fe1e475 gnrc_tcp: Set src addr in outgoing packets by tcp layer. 2018-06-10 13:26:23 +02:00
Cenk Gündoğan
c135f2639e
Merge pull request #9300 from miri64/gnrc_ipv6_nib/fix/rtr-timeout-wrong-ctx
gnrc_ipv6_nib: use router instead of netif for router timeout context
2018-06-07 13:40:48 +02:00
Hauke Petersen
36ecaa6e4b net/emcute: use global byteorder functions 2018-06-07 12:10: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
Ken Bannister
2c02ed2093 net/gcoap: refine observe re-registration
Fix re-register when using the same token.
Handle edge cases when change token for a resource.
Only set observer and resource on initial registration.
Discuss re-registration in documentation.
2018-06-05 09:23:16 -04:00
BytesGalore
0c034c9220 rpl: add DIS Solicited Information option 2018-06-04 18:10:22 +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
Martine Lenders
57d3c4698c gcoap: don't drop observer on re-register
With #9209 gCoAP got the ability to re-register and OBSERVE with a new
token, sadly the `observer` variable wasn't set in that fix, so a
re-registration actually led to the deletion of the observer (because it
is still `NULL` when the old registration is overwritten in l. 317)
2018-05-30 23:05:25 +02:00
Martine Lenders
fce5c758f7
Merge pull request #8841 from miri64/netif/api/initial2
netif: Initial import of a common network interface API (second try)
2018-05-29 22:10:50 +02:00
Martine Lenders
2586b5c161
Merge pull request #9233 from brummer-simon/gnrc_tcp-handle_link_local_addr
gnrc_tcp: handle link local IPv6 addresses correctly
2018-05-29 21:50:00 +02:00
Simon Brummer
686aabaa0a gnrc_tcp: handle link local IPv6 addresses correctly 2018-05-29 21:28:32 +02:00
5be4b7f5c8
Merge pull request #9226 from miri64/gnrc_netif/enh/error-on-multicast-space
gnrc_netif: fail IPv6 address addition if no space for solicited nodes
2018-05-29 20:30:26 +02:00
Ken Bannister
341debd5e0
Merge pull request #9209 from kb2ma/gcoap/observe_change_token
net/gcoap: Observer re-register with new token
2018-05-29 18:06:07 +00:00
Martine Lenders
a082e10157 gnrc_netif: add GNRC specific implementation of netif.h 2018-05-29 19:49:29 +02:00
Martine Lenders
ea64d39e21 gnrc_netif: fail IPv6 address addition if no space for solicited nodes 2018-05-29 19:30:30 +02:00
Ken Bannister
d7dde2dded net/gcoap: observer re-register with new token 2018-05-29 13:30:05 -04:00
Martine Lenders
d3d7a49d7a gnrc_netreg: make message queue requirement more visible 2018-05-29 19:21:48 +02:00
Cenk Gündoğan
5230e7732c
Merge pull request #9188 from miri64/gnrc_pktdump/enh/print-rest
gnrc_pktdump: print rest of snip as hex if available
2018-05-29 13:32:39 +02:00
Martine Lenders
8c77cbb903 gnrc_pktdump: print rest of snip as hex if available
Currently, `gnrc_pktdump` only prints the header part of a snip.
However, if the snip wasn't parsed yet by the corresponding GNRC
module (or the module doesn't exist because the node is e.g. just a
forwarder), additional data might not be printed.

This makes it hard to analyze the data properly (sometimes you not only
want to know where the IPv6 packet is supposed to go, you also want to
know what's in it). So this just prints the rest of the snip as a hex
dump.
2018-05-29 12:33:06 +02:00
Hauke Petersen
7f2fb5e0a3 net/emcute: use correct number of retries
syncsend() is used also for the initial packet, so resending
while (retries <= EMCUTE_N_RETRY) is the correct behavior.
2018-05-28 11:41:20 +02:00
6bb8a5c145
nanocoap_sock: split request function from get
The nanocoap_get function is refactored to split of the request part
into a separate function for reuse by other modules. Support for
retransmissions when the received frame is malformed is dropped as it
was broken anyway.
2018-05-25 09:40:20 +02:00
Loïc Dauphin
260bc37958
Merge pull request #5914 from cgundogan/pr/ndn-riot_as_a_pkg
pkg: ndn-riot: initial import of ndn-riot as a package
2018-05-24 18:29:22 +02:00
smlng
1011803867 net/gnrc/rpl: fix doxygen grouping 2018-05-24 14:38:27 +02:00
Cenk Gündoğan
f64265de57 gnrc_pktdump: add hex dump for NDN 2018-05-24 10:58:26 +02:00
Sebastian Meiling
9d83b60f3b
Merge pull request #9083 from smlng/pr/gcoap/cleanup
gcoap: enhance gcoap_req_init
2018-05-23 10:40:54 +01:00
Cenk Gündoğan
441f11ea45 gnrc_rpl: shell: adapt to evtimer for RPL events 2018-05-23 09:42:12 +02:00
Cenk Gündoğan
b819ac8d35 gnrc_rpl: adapt to evtimer for RPL events 2018-05-23 09:42:12 +02:00
Cenk Gündoğan
4c9e947d43 gnrc_rpl: adjust author and copyright 2018-05-22 23:46:55 +02:00
smlng
b9ca8f466f gcoap: add asserts for path in gcoap_req_init 2018-05-22 21:28:58 +02:00
smlng
c9e9f72454 gcoap: use const path parameter 2018-05-22 21:28:58 +02:00
Bas Stottelaar
7781da7799 sys: netopt: add busy option 2018-05-21 16:37:38 +02:00
Bas Stottelaar
02395e593d sys: netopt: add checksum option 2018-05-21 16:37:38 +02:00
Gaëtan Harter
60d09e6b21
sys/icmpv6_hdr_print: replace PRIu8 by PRIu16
PRIu8 is not supported on samr21-xpro:

    type:   hu  code:   hu

After fix

    type: 133  code:   0

Found by running 'tests/gnrc_netif'
2018-05-11 17:41:25 +02:00
Martine Lenders
8a46cf611e gcoap: make message queue size configurable 2018-05-06 16:41:43 +02:00
Martine Lenders
3d821ee195 gnrc_rpl: remove route before updating it
The "new" forwarding table does not update an old route but just adds
another as long as it is not *exactly* the same. However, the RPL
adaptation missed to remove the old route so RPL got easily confused
about where it actually needed to send packets.
2018-05-04 17:46:02 +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
8475844213 sys/net/uhcpc: add missing stdio.h include 2018-04-16 23:06:15 +02:00
635e72db23
Merge pull request #8788 from kaspar030/nanocoap_add_serverside_block1
nanocoap: add serverside block1 support
2018-04-16 12:49:06 +02:00
4897222e7e nanocoap: add server-side block1 support 2018-04-16 12:31:56 +02:00
6ee4aceef1
Merge pull request #8936 from haukepetersen/opt_rdclisimple_addrconf
net/rdcli_simple: specify RD address as string
2018-04-12 15:33:33 +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
Martine Lenders
7974b12c11
Merge pull request #8797 from zhuoshuguo/gomach_add_dutycycle_display_command
gnrc_gomach: add duty-cycle display shell command.
2018-04-12 14:25:02 +02:00
Hauke Petersen
2e6ccfa13f net/rdcli_simple_standalone: fix error handling 2018-04-12 14:00:32 +02:00
Hauke Petersen
bd25cf5902 net/rdcli_simple: parse RD address from string
this makes the configuration of the RD server much simpler, as it
does not require the user to 'binary-code' the RD server's address
anymore.
2018-04-12 14:00:32 +02:00
Hauke Petersen
faab006631 net/rdcli_simple: improved doc and error handling 2018-04-12 13:48:09 +02:00
d64d38b391
Merge pull request #8909 from miri64/doc/enh/ipv6-rfc
doc: update IPv6 RFC references
2018-04-12 12:11:23 +02:00
shuguo
4e7ff0df28 gnrc_gomach: enabling duty-cycle printing 2018-04-12 11:46:40 +02:00
shuguo
ed4a80db00 gnrc_mac: add MAC duty-cycle record macro 2018-04-12 11:44:30 +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
012c016b74
Merge pull request #8772 from kaspar030/rework_nanocoap_option_handling
net/nanocoap: rework option handling
2018-04-10 21:11:18 +02:00
dee793d29f nanocoap: rework option handling 2018-04-10 20:58:06 +02:00
Martine Lenders
23bdc80e22 doc: update IPv6 RFC references
RFC 2460 was obsoleted by RFC 8200. This PR changes the references
around, so we don't reference an obsoleted RFC ;-).

Also I'm moving these references from the old-style HTML-like format
to the newer-style Markdown-like format.
2018-04-10 15:40:18 +02:00
Martine Lenders
629a19dc87
Merge pull request #8871 from miri64/gnrc_netif/fix/unspec-addr
gnrc_netif: check if input for address search is ::
2018-04-10 14:35:07 +02:00
Hauke Petersen
7dd897c6d7 net/rdcli_common: fix EP name generation 2018-04-10 10:55:03 +02:00
Hauke Petersen
108284670c net: added RD client for simplified registration 2018-04-09 10:37:10 +02:00
Hauke Petersen
f12d85d032 net/rdcli: added common rdcli module 2018-04-09 10:37:10 +02:00
Martine Lenders
3c93ebc86e
Merge pull request #7699 from nmeum/gcoap-method-not-allowed
gcoap: return Method Not Allowed if appropriate
2018-04-06 15:35:05 +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
Hauke Petersen
49bd85d00a sys/net: added Skald
Skald is a very small and simple, TX-only BLE stack that supports
sending advertisements only. It is useful for building all kinds
of BLE beacons with very minimal memory footprints.
2018-04-06 11:18:53 +02:00
Hauke Petersen
4e715e8221 drivers/netdev: added BLE adaption for netdev 2018-04-06 11:18:53 +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