|
@@ -945,9 +945,10 @@ static void ndisc_recv_na(struct sk_buff *skb)
|
|
|
}
|
|
|
ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1);
|
|
|
if (ifp) {
|
|
|
- if (ifp->flags & IFA_F_TENTATIVE) {
|
|
|
- addrconf_dad_failure(ifp);
|
|
|
- return;
|
|
|
+ if (skb->pkt_type != PACKET_LOOPBACK
|
|
|
+ && (ifp->flags & IFA_F_TENTATIVE)) {
|
|
|
+ addrconf_dad_failure(ifp);
|
|
|
+ return;
|
|
|
}
|
|
|
/* What should we make now? The advertisement
|
|
|
is invalid, but ndisc specs say nothing
|