ipv6: clean up anycast when an interface is destroyed
[firefly-linux-kernel-4.4.55.git] / net / ipv6 / addrconf.c
index 165cee964e75073c73dfe3180f13cd74b388ff07..adffa47475323cfed00f9ffb2e59ffefd7cb7543 100644 (file)
@@ -3155,11 +3155,13 @@ static int addrconf_ifdown(struct net_device *dev, int how)
 
        write_unlock_bh(&idev->lock);
 
-       /* Step 5: Discard multicast list */
-       if (how)
+       /* Step 5: Discard anycast and multicast list */
+       if (how) {
+               ipv6_ac_destroy_dev(idev);
                ipv6_mc_destroy_dev(idev);
-       else
+       } else {
                ipv6_mc_down(idev);
+       }
 
        idev->tstamp = jiffies;