The network sends an ARP REQUEST packet to determine whether there is a host with the same IP. Windows and some other hosts may send the source IP address instead of 0. When IN_DEV_ORCONF(in_dev, DROP_GRATUITOUS_ARP) is enable, the REQUEST will be dropped. When IN_DEV_ORCONF(in_dev, DROP_GRATUITOUS_ARP) is disable, The case should be added to the IP conflict handling process.
Signed-off-by: Dongxu Liu <liudong...@huawei.com> --- net/ipv4/arp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index 05eb42f..a51c921 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c @@ -801,7 +801,7 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb) GFP_ATOMIC); /* Special case: IPv4 duplicate address detection packet (RFC2131) */ - if (sip == 0) { + if (sip == 0 || sip == tip) { if (arp->ar_op == htons(ARPOP_REQUEST) && inet_addr_type_dev_table(net, dev, tip) == RTN_LOCAL && !arp_ignore(in_dev, sip, tip)) -- 2.12.3