From 05202707336dea740cb0cfaaaaef0dd7ecf2992e Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Tue, 24 Jun 2014 08:22:12 -0600 Subject: [PATCH] Net PKT: Suppress ARP requests for packet socket transfers --- include/net/if.h | 1 + net/arp/arp_inout.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/net/if.h b/include/net/if.h index 9c1f2a55174..eae6bcb3fc3 100644 --- a/include/net/if.h +++ b/include/net/if.h @@ -55,6 +55,7 @@ #define IFF_DOWN (1 << 0) #define IFF_UP (1 << 1) #define IFF_RUNNING (1 << 2) +#define IFF_NOARP (1 << 7) /******************************************************************************************* diff --git a/net/arp/arp_inout.c b/net/arp/arp_inout.c index 78bebae6d0f..18a1483cad9 100644 --- a/net/arp/arp_inout.c +++ b/net/arp/arp_inout.c @@ -327,6 +327,17 @@ void arp_out(struct uip_driver_s *dev) in_addr_t ipaddr; in_addr_t destipaddr; +#ifdef CONFIG_NET_PKT + /* Skip sending ARP requests when the frame to be transmitted was + * written into a packet socket. + */ + + if ((dev->d_flags & IFF_NOARP) == IFF_NOARP) + { + return; + } +#endif + /* Find the destination IP address in the ARP table and construct * the Ethernet header. If the destination IP address isn't on the * local network, we use the default router's IP address instead.