From 711c58767a692c6da1beb64d7bc98e78a3bd4e48 Mon Sep 17 00:00:00 2001 From: zhangkai25 Date: Thu, 29 May 2025 19:23:30 +0800 Subject: [PATCH] net/arp: Skip ARP request if ip address is invalid Supports no ARP reply for invalid routing addresses in cross-segment communication Signed-off-by: zhangkai25 --- net/arp/arp_out.c | 6 ++++++ net/arp/arp_send.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/net/arp/arp_out.c b/net/arp/arp_out.c index 2c4531c530c..fa465e30922 100644 --- a/net/arp/arp_out.c +++ b/net/arp/arp_out.c @@ -224,6 +224,12 @@ void arp_out(FAR struct net_driver_s *dev) net_ipv4addr_copy(ipaddr, dev->d_draddr); #endif + + if (ipaddr == INADDR_ANY) + { + dev->d_len = 0; + return; + } } /* The destination address is on the local network. Check if it is diff --git a/net/arp/arp_send.c b/net/arp/arp_send.c index 52dfc3e7b23..34c5f1acf14 100644 --- a/net/arp/arp_send.c +++ b/net/arp/arp_send.c @@ -254,6 +254,10 @@ int arp_send(in_addr_t ipaddr) net_ipv4addr_copy(dripaddr, dev->d_draddr); #endif ipaddr = dripaddr; + if (ipaddr == INADDR_ANY) + { + return -EHOSTUNREACH; + } } /* The destination address is on the local network. Check if it is