]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[IPV6] Fix joining all-node multicast group.
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Thu, 18 Jan 2007 15:11:56 +0000 (16:11 +0100)
committerAdrian Bunk <bunk@stusta.de>
Thu, 18 Jan 2007 15:11:56 +0000 (16:11 +0100)
Signed-off-by: Adrian Bunk <bunk@stusta.de>
net/ipv6/addrconf.c
net/ipv6/mcast.c

index c5005b23ec051578ee50647a2df96009517245ba..e8f144171880dca03e0146ad509ab4b352dbab7a 100644 (file)
@@ -321,6 +321,7 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)
 static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
 {
        struct inet6_dev *ndev;
+       struct in6_addr maddr;
 
        ASSERT_RTNL();
 
@@ -406,6 +407,9 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
                dev->ip6_ptr = ndev;
                write_unlock_bh(&addrconf_lock);
 
+               /* Join all-node multicast group */
+               ipv6_addr_all_nodes(&maddr);
+               ipv6_dev_mc_inc(dev, &maddr);
        }
        return ndev;
 }
index 807c021d64a282f5490364f0785cf407b17a7802..c75cd1c4d6b8902aef219a69da2ffdbffd29ac3f 100644 (file)
@@ -2252,8 +2252,6 @@ void ipv6_mc_up(struct inet6_dev *idev)
 
 void ipv6_mc_init_dev(struct inet6_dev *idev)
 {
-       struct in6_addr maddr;
-
        write_lock_bh(&idev->lock);
        rwlock_init(&idev->mc_lock);
        idev->mc_gq_running = 0;
@@ -2269,10 +2267,6 @@ void ipv6_mc_init_dev(struct inet6_dev *idev)
        idev->mc_maxdelay = IGMP6_UNSOLICITED_IVAL;
        idev->mc_v1_seen = 0;
        write_unlock_bh(&idev->lock);
-
-       /* Add all-nodes address. */
-       ipv6_addr_all_nodes(&maddr);
-       ipv6_dev_mc_inc(idev->dev, &maddr);
 }
 
 /*