From e0242146459dd5a643064f59a7b61d114841842f Mon Sep 17 00:00:00 2001 From: Denys Fedoryshchenko Date: Fri, 13 Mar 2009 16:02:07 -0700 Subject: [PATCH] --- yaml --- r: 135182 b: refs/heads/master c: 73ce7b01b4496a5fbf9caf63033c874be692333f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/ipv4/arp.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 409f8c8341ed..0cb6deb741d9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1f8ae0a21d83f43006d7f6d2862e921dbf2eeddd +refs/heads/master: 73ce7b01b4496a5fbf9caf63033c874be692333f diff --git a/trunk/net/ipv4/arp.c b/trunk/net/ipv4/arp.c index 9c220323f353..f11931c18381 100644 --- a/trunk/net/ipv4/arp.c +++ b/trunk/net/ipv4/arp.c @@ -801,8 +801,11 @@ static int arp_process(struct sk_buff *skb) * cache. */ - /* Special case: IPv4 duplicate address detection packet (RFC2131) */ - if (sip == 0) { + /* + * Special case: IPv4 duplicate address detection packet (RFC2131) + * and Gratuitous ARP/ARP Announce. (RFC3927, Section 2.4) + */ + if (sip == 0 || tip == sip) { if (arp->ar_op == htons(ARPOP_REQUEST) && inet_addr_type(net, tip) == RTN_LOCAL && !arp_ignore(in_dev, sip, tip))