|
@@ -801,11 +801,8 @@ static int arp_process(struct sk_buff *skb)
|
|
* cache.
|
|
* cache.
|
|
*/
|
|
*/
|
|
|
|
|
|
- /*
|
|
|
|
- * Special case: IPv4 duplicate address detection packet (RFC2131)
|
|
|
|
- * and Gratuitous ARP/ARP Announce. (RFC3927, Section 2.4)
|
|
|
|
- */
|
|
|
|
- if (sip == 0 || tip == sip) {
|
|
|
|
|
|
+ /* Special case: IPv4 duplicate address detection packet (RFC2131) */
|
|
|
|
+ if (sip == 0) {
|
|
if (arp->ar_op == htons(ARPOP_REQUEST) &&
|
|
if (arp->ar_op == htons(ARPOP_REQUEST) &&
|
|
inet_addr_type(net, tip) == RTN_LOCAL &&
|
|
inet_addr_type(net, tip) == RTN_LOCAL &&
|
|
!arp_ignore(in_dev, sip, tip))
|
|
!arp_ignore(in_dev, sip, tip))
|