diff options
-rw-r--r-- | net/ipv6/ndisc.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 92f952d093db..f057ff312840 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
@@ -945,9 +945,10 @@ static void ndisc_recv_na(struct sk_buff *skb) | |||
945 | } | 945 | } |
946 | ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1); | 946 | ifp = ipv6_get_ifaddr(dev_net(dev), &msg->target, dev, 1); |
947 | if (ifp) { | 947 | if (ifp) { |
948 | if (ifp->flags & IFA_F_TENTATIVE) { | 948 | if (skb->pkt_type != PACKET_LOOPBACK |
949 | addrconf_dad_failure(ifp); | 949 | && (ifp->flags & IFA_F_TENTATIVE)) { |
950 | return; | 950 | addrconf_dad_failure(ifp); |
951 | return; | ||
951 | } | 952 | } |
952 | /* What should we make now? The advertisement | 953 | /* What should we make now? The advertisement |
953 | is invalid, but ndisc specs say nothing | 954 | is invalid, but ndisc specs say nothing |