diff options
Diffstat (limited to 'net/ipv4/arp.c')
-rw-r--r-- | net/ipv4/arp.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index 9c220323f353..f11931c18381 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c | |||
@@ -801,8 +801,11 @@ static int arp_process(struct sk_buff *skb) | |||
801 | * cache. | 801 | * cache. |
802 | */ | 802 | */ |
803 | 803 | ||
804 | /* Special case: IPv4 duplicate address detection packet (RFC2131) */ | 804 | /* |
805 | if (sip == 0) { | 805 | * Special case: IPv4 duplicate address detection packet (RFC2131) |
806 | * and Gratuitous ARP/ARP Announce. (RFC3927, Section 2.4) | ||
807 | */ | ||
808 | if (sip == 0 || tip == sip) { | ||
806 | if (arp->ar_op == htons(ARPOP_REQUEST) && | 809 | if (arp->ar_op == htons(ARPOP_REQUEST) && |
807 | inet_addr_type(net, tip) == RTN_LOCAL && | 810 | inet_addr_type(net, tip) == RTN_LOCAL && |
808 | !arp_ignore(in_dev, sip, tip)) | 811 | !arp_ignore(in_dev, sip, tip)) |