addrconf.c (e9331ee9b164d58b4dd0abc882ba7e23d2f404b3) | addrconf.c (6819a14ecbe2e089e5c5bb74edecafdde2028a00) |
---|---|
1/* 2 * IPv6 Address [auto]configuration 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> 8 * --- 4926 unchanged lines hidden (view full) --- 4935static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa) 4936{ 4937 struct sk_buff *skb; 4938 struct net *net = dev_net(ifa->idev->dev); 4939 int err = -ENOBUFS; 4940 4941 /* Don't send DELADDR notification for TENTATIVE address, 4942 * since NEWADDR notification is sent only after removing | 1/* 2 * IPv6 Address [auto]configuration 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> 8 * --- 4926 unchanged lines hidden (view full) --- 4935static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa) 4936{ 4937 struct sk_buff *skb; 4938 struct net *net = dev_net(ifa->idev->dev); 4939 int err = -ENOBUFS; 4940 4941 /* Don't send DELADDR notification for TENTATIVE address, 4942 * since NEWADDR notification is sent only after removing |
4943 * TENTATIVE flag. | 4943 * TENTATIVE flag, if DAD has not failed. |
4944 */ | 4944 */ |
4945 if (ifa->flags & IFA_F_TENTATIVE && event == RTM_DELADDR) | 4945 if (ifa->flags & IFA_F_TENTATIVE && !(ifa->flags & IFA_F_DADFAILED) && 4946 event == RTM_DELADDR) |
4946 return; 4947 4948 skb = nlmsg_new(inet6_ifaddr_msgsize(), GFP_ATOMIC); 4949 if (!skb) 4950 goto errout; 4951 4952 err = inet6_fill_ifaddr(skb, ifa, 0, 0, event, 0); 4953 if (err < 0) { --- 1677 unchanged lines hidden --- | 4947 return; 4948 4949 skb = nlmsg_new(inet6_ifaddr_msgsize(), GFP_ATOMIC); 4950 if (!skb) 4951 goto errout; 4952 4953 err = inet6_fill_ifaddr(skb, ifa, 0, 0, event, 0); 4954 if (err < 0) { --- 1677 unchanged lines hidden --- |