1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-24 05:53:49 +01:00

4994 Commits

Author SHA1 Message Date
benpicco
f67055c3b2
Merge pull request #19668 from benpicco/ieee802154_symbol_time_on_demand
ieee802154/submac: calculate symbol time on demand
2025-02-20 12:04:10 +00:00
Benjamin Valentin
73e45dd6ca ieee802154/submac: implement MR-FSK timings 2025-02-20 12:00:00 +01:00
Marian Buschsieweke
546b87a2e8
sys/net/nanocoap: fix dereferencing a null pointer
`coap_request_ctx_get_local()` may return `NULL` depending on module
selection. If it does, we cannot pass `NULL` to
`sock_udp_ep_is_multicast()`.

This changes the code assume the request is not received via multicast
when module `sock_aux_local` is not in use.

When the user binds the CoAP server to multiple endpoints (as needed
for using multicast), it is required that `sock_aux_local` is in use
anyway, as otherwise the server may not respond using the endpoint it
received the request on. (That in turn would render the client unable to
correlate the response to the request.)
2025-02-19 11:05:46 +01:00
Mikolai Gütschow
ca5fe72bf8
treewide: fix example references in docs
adapt to folder structure from #21135
2025-02-14 19:14:22 +01:00
Benjamin Valentin
a886adf611 ieee802154/submac: implement MR-OFDM timings 2025-02-10 14:56:14 +01:00
mguetschow
57993ef263
Merge pull request #21159 from Vjorald/cord-doc
sys/cord/doc.txt: Update additional references to RFC 9176
2025-01-29 14:57:08 +00:00
Vjorald
d2658e21d0 sys/cord/doc: Update additional references to RFC 9176 2025-01-29 15:14:03 +01:00
Marian Buschsieweke
9fa2661621
sys/net/nanocoap: align request handling with spec
- Do not reply with a reset message to a reset or an ACK message
- Reply with a reset message when not able to process a CON/NON message
  (not even a suitable error reply)
2025-01-24 22:42:47 +01:00
Marian Buschsieweke
feeb68470f
sys/net/nanocoap: implement observe
This adds the new `nanocoap_server_observe` module that implements the
server side of the CoAP Observe option. It does require cooperation
from the resource handler to work, though.

Co-Authored-By: mguetschow <mikolai.guetschow@tu-dresden.de>
Co-authored-by: benpicco <benpicco@googlemail.com>
2025-01-23 14:25:39 +01:00
Marian Buschsieweke
1c7ba9e055
sys/net/nanocoap: improve separate response handling
This allows sending a separate response with CoAP Options and adds a
helper to detect duplicate requests, so that resource handlers can
repeat their empty ACK on duplicates.
2025-01-23 14:25:02 +01:00
Joshua DeWeese
9b2782d020
Merge pull request #21126 from maribu/sys/net/gnrc_sock/drop-timer-workaround
Revert "sock/udp: work around gnrc_sock_recv() returning early timeout"
2025-01-20 11:58:08 +00:00
Kevin "Tristate Tom" Weiss
8302223ba1
Merge pull request #21137 from benpicco/gnrc_netif_ipv6_wait_for_global_address-fix_timeout
gnrc_netif: fix timeout in `gnrc_netif_ipv6_wait_for_global_address()`
2025-01-20 10:03:17 +00:00
benpicco
cefa182d2b
Merge pull request #21080 from benpicco/gnrc_ipv6_auto_subnets_eui
gnrc/ipv6_auto_subnets: add option to derive subnet prefix from EUI
2025-01-16 17:19:54 +00:00
Benjamin Valentin
a95bd508a5 gnrc_netif: fix timeout in gnrc_netif_ipv6_wait_for_global_address() 2025-01-16 16:07:40 +01:00
benpicco
6547f144d9
Merge pull request #21125 from maribu/sys/net/gcoap/fix-api-abuse
sys/net/gcoap: get rid of API abuse
2025-01-13 18:43:16 +00:00
Benjamin Valentin
698d414733 gnrc/ipv6_auto_subnets: add gnrc_ipv6_auto_subnets_eui 2025-01-13 15:52:25 +01:00
Marian Buschsieweke
590ca5d7ff
sys/net/gcoap: get rid of API abuse
Calling `coap_get_token()` and `coap_get_token_length()` on an
(mostly) uninitialized `coap_pkt_t` did work so far due to
implementation details matching the expectations, but this is not
backed up by any API contract.

This fixes the API abuse by introducing and using a new API that does
read a token and token length from a CoAP over UDP packet out of a
buffer. This now provides the behavior expected by the caller and
commits to it via API contract.

Co-authored-by: mguetschow <mikolai.guetschow@tu-dresden.de>
Co-authored-by: benpicco <benpicco@googlemail.com>
2025-01-10 21:31:08 +01:00
Marian Buschsieweke
c562b6cbe9
Revert "sock/udp: work around gnrc_sock_recv() returning early timeout"
This reverts commit e3d00682bcad2e0f26ee15b1c73d5da022b18786, which
added a work around for two bugs:

- ztimer triggering too early (fixed in
  https://github.com/RIOT-OS/RIOT/pull/20924)
- gnrc_sock_recv() returning when an old "timeout" message is still
  in the message queue (fixed in
  https://github.com/RIOT-OS/RIOT/pull/21113)

With those bugs fixed, the work around should not longer be needed.
2025-01-10 21:25:34 +01:00
Benjamin Valentin
64c10f33a1 gnrc/ipv6_auto_subnets: unicast RA if upstream is 6lo 2025-01-10 18:56:42 +01:00
Marian Buschsieweke
ade999ab01
Merge pull request #21113 from maribu/sys/ztimer/ztimer_mbox_get_timeout
sys/ztimer: implement ztimer_mbox_get_timeout() and use it to fix race in gnrc_sock_recv()
2025-01-10 15:37:46 +00:00
Marian Buschsieweke
56ea5cd3d0
sys/net/gnrc_sock: fix race in gnrc_sock_recv()
Implement the timeout using ztimer_mbox_get_timeout() to fix a race
condition.
2025-01-10 16:19:00 +01:00
Benjamin Valentin
5869554d7a sys/net/nanocoap: flush stale responses before sending request 2025-01-06 10:40:30 +01:00
Marian Buschsieweke
ab116ec71c
sys/net/nanocoap: Fix sending bogus separate responses
When module `nanocoap_server_separate` is not used, the functions to
send separate responses are still provided, just in a broken version:
They will send the separate replies from a different endpoint than the
request was received at (even on machines with only one IP address, as
also the source port is randomized).

This changes the behavior to only provide the functions for separate
response when the do work, so that others will detect an invalid
configuration at compile time rather than at run time.

The documentation is duly updated.
2024-12-13 08:40:43 +01:00
Marian Buschsieweke
c7af4b25a6
sys/net/nanocoap: fix invalid RST messages
An RST message has no token, so don't reply with a token when sending
RST.

This also adds unit tests to ensure this this exact bug does not sneak
back in.
2024-12-12 14:28:28 +01:00
Marian Buschsieweke
7a738d0e0b
sys/net/nanocoap: fix buffer overflow in separate response handling
When RFC 8974 support (module `nanocoap_token_ext`) is in use, the
request token may be longer than the buffer in the separate response
context is large. This adds a check to not overflow the buffer.

Sadly, this is an API change: Preparing the separate response context
can actually fail, so we need to report this with a return value.

The example application has been adapted to only proceed if the separate
reply context could have been prepared, and rather directly emit a
reset message if the token exceeds the static buffer.

Co-authored-by: benpicco <benpicco@googlemail.com>
2024-12-12 14:28:28 +01:00
Benjamin Valentin
2a6b8a3fed gnrc_netif: use different error messages for can't queue packet 2024-11-22 19:50:20 +01:00
benpicco
2bce94a7c7
Merge pull request #21012 from benpicco/netdev_new_api-relax
netdev_new_api: allow `.send()` to return > 0 to signal synchronos send
2024-11-20 22:28:26 +00:00
Benjamin Valentin
a86411b81e drivers/netdev: allow .send() to return > 0 to signal synchronos send 2024-11-20 16:40:36 +01:00
Benjamin Valentin
83f5b261a8 sys/net/gnrc_pktbuf: detect use after free if canary is in metadata 2024-11-19 15:23:03 +01:00
Benjamin Valentin
ea1670ab0f sys/net/gnrc_pktbuf: move CANARY to header file 2024-11-19 15:23:03 +01:00
Benjamin Valentin
278e8f53b7 sys/net/gnrc_pktbuf: fail assertion if illegal memory was freed 2024-11-19 15:23:03 +01:00
benpicco
aee4c1ef9c
Merge pull request #20984 from benpicco/gnrc_pktsnip_t-shrink
sys/net/gnrc/pkt: use `uint8_t` for user count
2024-11-17 17:29:16 +00:00
Marian Buschsieweke
51f969d655
Merge pull request #20993 from benpicco/netdev_new_api-enhance
gnrc_netif: netdev_new_api implies TX end irq, no need to check it
2024-11-17 08:45:19 +00:00
Marian Buschsieweke
2adb4042b3
Merge pull request #20974 from benpicco/gnrc_pktbuf_static-double-free
sys/net/gnrc_pktbuf_static: add double free detection
2024-11-16 09:03:42 +00:00
Marian Buschsieweke
fbf5c66f78
Merge pull request #20983 from benpicco/gnrc_netif_netdev_new_api-leak
gnrc_netif: fix packet leak with gnrc_netif_pktq & netdev_new_api
2024-11-15 22:46:54 +00:00
Benjamin Valentin
300a936e42 gnrc: add comment about gnrc_pktbuf_hold() use 2024-11-15 16:59:08 +01:00
Benjamin Valentin
e8b3b4d3e4 gnrc_pktbuf: assert that user count does not exceed 255 2024-11-15 16:41:42 +01:00
Benjamin Valentin
f82c41e96f gnrc_netif: netdev_new_api implies TX end irq, no need to check it 2024-11-14 17:11:58 +01:00
Benjamin Valentin
8eef1c1170 sys/net/gnrc/netif: don't release snip with netdev_new_api 2024-11-14 11:57:58 +01:00
Benjamin Valentin
b9b8c4a68f gnrc_netif: fix packet leak with gnrc_netif_pktq & netdev_new_api 2024-11-13 13:40:13 +01:00
Marian Buschsieweke
2623762c16
Merge pull request #20977 from maribu/net/grnc/tcp/select-netif
sys/net/gnrc/tcp: fix gnrc_tcp_open() netif handling
2024-11-13 05:31:00 +00:00
Marian Buschsieweke
e714707b14
sys/net/gnrc/tcp: fix gnrc_tcp_open() netif handling
gnrc_tcp_open() previously would eventually fail with a timeout without
sending any data when no netif was specified and a link-local target
address was used. This fixes the behavior:

- If there is only one netif, we just pick that
- If there are multiple netifs, fail directly with `-EINVAL` rather than
  sending out nothing and waiting for a timeout.

Co-authored-by: benpicco <benpicco@googlemail.com>
2024-11-12 15:44:41 +01:00
Benjamin Valentin
0bed0c6bfe gnrc_netif: fix double free with netdev_new_api & gnrc_netif_pktq 2024-11-11 20:30:30 +01:00
Benjamin Valentin
982af61c82 sys/net/gnrc_pktbuf_static: make hexdump optional 2024-11-11 15:17:40 +01:00
Benjamin Valentin
4bd273f009 sys/net/gnrc_pktbuf_static: add double free detection 2024-11-11 15:17:40 +01:00
Marian Buschsieweke
cec85cfc88
Merge pull request #20945 from maribu/sys/net/gcoap/replace-super-insane-hack-with-less-insane-hack
sys/net/gcoap: reduce insanity of hack
2024-11-08 20:03:37 +00:00
Marian Buschsieweke
d10ab413a0
Merge pull request #20952 from benpicco/nanocoap-block_robust
nanocoap/sock: re-try if wrong block was received
2024-11-05 17:24:17 +00:00
Benjamin Valentin
9b25c033de nanocoap/sock: re-try if wrong block was received 2024-11-05 18:06:31 +01:00
Marian Buschsieweke
c70075b073
Merge pull request #20950 from maribu/sys/net/nanocoap/coap_get_response_hdr_len
sys/net/nanocoap: add and use coap_get_response_hdr_len()
2024-11-05 13:09:51 +00:00
Marian Buschsieweke
68beb52f14
sys/net/nanocoap: add and use coap_get_response_hdr_len()
Before, handlers writing blockwise transfer assumed that the response
header length will match the request header length. This is true for
UDP, but not for TCP: The CoAP over TCP header contains a Len field,
that gets extended for larger messages. Since the reply often is indeed
larger than the request, this is indeed often the case for CoAP over
TCP.

Note: Right now, no CoAP over TCP implementation is upstream. However,
      getting rid of incorrect assumptions now will make life easier
      later on.
2024-11-05 10:46:02 +01:00