--- ./include/linux/route.h.arpac Sun May 20 20:33:03 2001 +++ ./include/linux/route.h Sun May 20 20:33:03 2001 @@ -59,6 +59,7 @@ #define RTF_WINDOW 0x0080 /* per route window clamping */ #define RTF_IRTT 0x0100 /* Initial round trip time */ #define RTF_REJECT 0x0200 /* Reject route */ +#define RTF_NOARPREPLY 0x0400 /* Do not answer ARP for this route */ /* * uses RTF values >= 64k --- ./net/ipv4/arp.c.arpac Sun May 20 20:33:00 2001 +++ ./net/ipv4/arp.c Sun May 20 20:45:13 2001 @@ -779,7 +779,8 @@ if (addr_type == RTN_LOCAL) { n = neigh_event_ns(&arp_tbl, sha, &sip, dev); if (n) { - if (!arp_filter(skb, sip, tip, in_dev)) + if (!(rt->rt_flags & RTF_NOARPREPLY) && + !arp_filter(sip, tip, in_dev)) arp_send(ARPOP_REPLY,ETH_P_ARP,sip,dev,tip,sha,dev->dev_addr,sha); neigh_release(n); @@ -792,6 +793,9 @@ n = neigh_event_ns(&arp_tbl, sha, &sip, dev); if (n) neigh_release(n); + + if (rt->rt_flags & RTF_NOARPREPLY) + goto out; if (skb->stamp.tv_sec == 0 || skb->pkt_type == PACKET_HOST ||