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 ---