From f2d1e661d1166273326e732e47eaa47f14521256 Mon Sep 17 00:00:00 2001 From: "Martine S. Lenders" Date: Thu, 21 Nov 2019 10:48:06 +0100 Subject: [PATCH 1/2] gnrc_netapi: report errors on dispatch --- sys/net/gnrc/netapi/gnrc_netapi.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/sys/net/gnrc/netapi/gnrc_netapi.c b/sys/net/gnrc/netapi/gnrc_netapi.c index 48949dc4b7..6186bb43cb 100644 --- a/sys/net/gnrc/netapi/gnrc_netapi.c +++ b/sys/net/gnrc/netapi/gnrc_netapi.c @@ -18,6 +18,8 @@ * @} */ +#include + #include "mbox.h" #include "msg.h" #include "net/gnrc/netreg.h" @@ -91,20 +93,20 @@ int gnrc_netapi_dispatch(gnrc_nettype_t type, uint32_t demux_ctx, while (sendto) { #if defined(MODULE_GNRC_NETAPI_MBOX) || defined(MODULE_GNRC_NETAPI_CALLBACKS) - int release = 0; + uint32_t errno = 0; switch (sendto->type) { case GNRC_NETREG_TYPE_DEFAULT: if (_gnrc_netapi_send_recv(sendto->target.pid, pkt, cmd) < 1) { /* unable to dispatch packet */ - release = 1; + errno = EIO; } break; #ifdef MODULE_GNRC_NETAPI_MBOX case GNRC_NETREG_TYPE_MBOX: if (_snd_rcv_mbox(sendto->target.mbox, cmd, pkt) < 1) { /* unable to dispatch packet */ - release = 1; + errno = EIO; } break; #endif @@ -115,16 +117,16 @@ int gnrc_netapi_dispatch(gnrc_nettype_t type, uint32_t demux_ctx, #endif default: /* unknown dispatch type */ - release = 1; + errno = ECANCELED; break; } - if (release) { - gnrc_pktbuf_release(pkt); + if (errno != 0) { + gnrc_pktbuf_release_error(pkt, errno); } #else if (_gnrc_netapi_send_recv(sendto->target.pid, pkt, cmd) < 1) { /* unable to dispatch packet */ - gnrc_pktbuf_release(pkt); + gnrc_pktbuf_release_error(pkt, EIO); } #endif sendto = gnrc_netreg_getnext(sendto); From a0740ee535a8affb30a194cffdd02fc8d21a063e Mon Sep 17 00:00:00 2001 From: "Martine S. Lenders" Date: Tue, 11 Feb 2020 18:16:02 +0100 Subject: [PATCH 2/2] gnrc_netapi: report errors on dispatch --- sys/net/gnrc/netapi/gnrc_netapi.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sys/net/gnrc/netapi/gnrc_netapi.c b/sys/net/gnrc/netapi/gnrc_netapi.c index 6186bb43cb..5684e39438 100644 --- a/sys/net/gnrc/netapi/gnrc_netapi.c +++ b/sys/net/gnrc/netapi/gnrc_netapi.c @@ -93,20 +93,20 @@ int gnrc_netapi_dispatch(gnrc_nettype_t type, uint32_t demux_ctx, while (sendto) { #if defined(MODULE_GNRC_NETAPI_MBOX) || defined(MODULE_GNRC_NETAPI_CALLBACKS) - uint32_t errno = 0; + uint32_t status = 0; switch (sendto->type) { case GNRC_NETREG_TYPE_DEFAULT: if (_gnrc_netapi_send_recv(sendto->target.pid, pkt, cmd) < 1) { /* unable to dispatch packet */ - errno = EIO; + status = EIO; } break; #ifdef MODULE_GNRC_NETAPI_MBOX case GNRC_NETREG_TYPE_MBOX: if (_snd_rcv_mbox(sendto->target.mbox, cmd, pkt) < 1) { /* unable to dispatch packet */ - errno = EIO; + status = EIO; } break; #endif @@ -117,11 +117,11 @@ int gnrc_netapi_dispatch(gnrc_nettype_t type, uint32_t demux_ctx, #endif default: /* unknown dispatch type */ - errno = ECANCELED; + status = ECANCELED; break; } - if (errno != 0) { - gnrc_pktbuf_release_error(pkt, errno); + if (status != 0) { + gnrc_pktbuf_release_error(pkt, status); } #else if (_gnrc_netapi_send_recv(sendto->target.pid, pkt, cmd) < 1) {