From d209da87848578c381300acc000421ad101bb7ce Mon Sep 17 00:00:00 2001 From: Cla Mattia Galliard Date: Fri, 21 Feb 2025 10:59:16 +0100 Subject: [PATCH] net: icmp: Send replies with timeout `K_NO_WAIT` This ensure system stays operational in icmp flood situation. Signed-off-by: Cla Mattia Galliard --- subsys/net/ip/icmp.c | 4 ++-- subsys/net/ip/icmpv4.c | 4 ++-- subsys/net/ip/icmpv6.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/subsys/net/ip/icmp.c b/subsys/net/ip/icmp.c index e8553726271e..12d2f0229128 100644 --- a/subsys/net/ip/icmp.c +++ b/subsys/net/ip/icmp.c @@ -207,7 +207,7 @@ static int send_icmpv4_echo_request(struct net_icmp_ctx *ctx, ctx->user_data = user_data; ctx->iface = iface; - if (net_send_data(pkt) >= 0) { + if (net_try_send_data(pkt, K_NO_WAIT) >= 0) { net_stats_update_icmp_sent(iface); return 0; } @@ -330,7 +330,7 @@ static int send_icmpv6_echo_request(struct net_icmp_ctx *ctx, ctx->user_data = user_data; ctx->iface = iface; - if (net_send_data(pkt) >= 0) { + if (net_try_send_data(pkt, K_NO_WAIT) >= 0) { net_stats_update_icmp_sent(iface); return 0; } diff --git a/subsys/net/ip/icmpv4.c b/subsys/net/ip/icmpv4.c index cc25e572dd4c..3d616bf15b61 100644 --- a/subsys/net/ip/icmpv4.c +++ b/subsys/net/ip/icmpv4.c @@ -493,7 +493,7 @@ static int icmpv4_handle_echo_request(struct net_icmp_ctx *ctx, net_sprint_ipv4_addr(src), net_sprint_ipv4_addr(&ip_hdr->src)); - if (net_send_data(reply) < 0) { + if (net_try_send_data(reply, K_NO_WAIT) < 0) { goto drop; } @@ -588,7 +588,7 @@ int net_icmpv4_send_error(struct net_pkt *orig, uint8_t type, uint8_t code) net_sprint_ipv4_addr(&ip_hdr->dst), net_sprint_ipv4_addr(&ip_hdr->src)); - if (net_send_data(pkt) >= 0) { + if (net_try_send_data(pkt, K_NO_WAIT) >= 0) { net_stats_update_icmp_sent(net_pkt_iface(orig)); return 0; } diff --git a/subsys/net/ip/icmpv6.c b/subsys/net/ip/icmpv6.c index 048521e1c12b..1fd712940386 100644 --- a/subsys/net/ip/icmpv6.c +++ b/subsys/net/ip/icmpv6.c @@ -169,7 +169,7 @@ static int icmpv6_handle_echo_request(struct net_icmp_ctx *ctx, net_sprint_ipv6_addr(src), net_sprint_ipv6_addr(&ip_hdr->src)); - if (net_send_data(reply) < 0) { + if (net_try_send_data(reply, K_NO_WAIT) < 0) { goto drop; } @@ -319,7 +319,7 @@ int net_icmpv6_send_error(struct net_pkt *orig, uint8_t type, uint8_t code, net_sprint_ipv6_addr(src), net_sprint_ipv6_addr(&ip_hdr->src)); - if (net_send_data(pkt) >= 0) { + if (net_try_send_data(pkt, K_NO_WAIT) >= 0) { net_stats_update_icmp_sent(net_pkt_iface(pkt)); return 0; }