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>
This bug was spotted by GCC 14.1.0:
In file included from /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-internal.h:27,
from /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.h:33,
from /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.h:30,
from /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c:28:
In function 'bf_isset',
inlined from '_build_ext_opts' at /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c:256:17,
inlined from '_snd_ra' at /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c:368:20,
inlined from '_snd_rtr_advs' at /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c:99:9:
/home/maribu/Repos/software/RIOT/master/sys/include/bitfield.h:130:18: error: array subscript 0 is outside array bounds of 'uint8_t[0]' {aka 'unsigned char[]'} [-Werror=array-bounds=]
130 | return (field[idx / 8] & (1u << (7 - (idx % 8))));
| ~~~~~^~~~~~~~~
In function '_snd_rtr_advs':
cc1: note: source object is likely at address zero
cc1: all warnings being treated as errors
If a server has e.g. multiple global IPv6 addresses, it might
respond with a different address that the one it received the request on.
This is against the CoAP spec, but that doesn't stop existing implementations
from doing it.
The function gomach_vtdma_end is nearly identical to _no_vtdma_after_cp
expect the first few lines. This commit replaces the duplicating code
in gomach_vtdma_end by a call to _no_vtdma_after_cp.
Signed-off-by: Francois Berder <fberder@outlook.fr>
Both _rx_management_failed and _rx_management_success functions
attempt to sleep after handling the packet reception
failure/success. This commit extracts the sleep attempt in a
new _rx_management_attempt_sleep function.
Signed-off-by: Francois Berder <fberder@outlook.fr>