net: Introduce for_each_netdev_rcu() iterator
[safe/jmp/linux-2.6] / net / ipv6 / anycast.c
index 36e8174..2f00ca8 100644 (file)
@@ -60,7 +60,7 @@ int ipv6_sock_ac_join(struct sock *sk, int ifindex, struct in6_addr *addr)
        struct inet6_dev *idev;
        struct ipv6_ac_socklist *pac;
        struct net *net = sock_net(sk);
-       int     ishost = !ipv6_devconf.forwarding;
+       int     ishost = !net->ipv6.devconf_all->forwarding;
        int     err = 0;
 
        if (!capable(CAP_NET_ADMIN))
@@ -314,9 +314,7 @@ int ipv6_dev_ac_inc(struct net_device *dev, struct in6_addr *addr)
        idev->ac_list = aca;
        write_unlock_bh(&idev->lock);
 
-       dst_hold(&rt->u.dst);
-       if (ip6_ins_rt(rt))
-               dst_release(&rt->u.dst);
+       ip6_ins_rt(rt);
 
        addrconf_join_solict(dev, &aca->aca_addr);
 
@@ -358,10 +356,7 @@ int __ipv6_dev_ac_dec(struct inet6_dev *idev, struct in6_addr *addr)
        addrconf_leave_solict(idev, &aca->aca_addr);
 
        dst_hold(&aca->aca_rt->u.dst);
-       if (ip6_del_rt(aca->aca_rt))
-               dst_free(&aca->aca_rt->u.dst);
-       else
-               dst_release(&aca->aca_rt->u.dst);
+       ip6_del_rt(aca->aca_rt);
 
        aca_put(aca);
        return 0;
@@ -409,13 +404,13 @@ int ipv6_chk_acast_addr(struct net *net, struct net_device *dev,
 
        if (dev)
                return ipv6_chk_acast_dev(dev, addr);
-       read_lock(&dev_base_lock);
-       for_each_netdev(net, dev)
+       rcu_read_lock();
+       for_each_netdev_rcu(net, dev)
                if (ipv6_chk_acast_dev(dev, addr)) {
                        found = 1;
                        break;
                }
-       read_unlock(&dev_base_lock);
+       rcu_read_unlock();
        return found;
 }
 
@@ -517,11 +512,9 @@ static int ac6_seq_show(struct seq_file *seq, void *v)
        struct ifacaddr6 *im = (struct ifacaddr6 *)v;
        struct ac6_iter_state *state = ac6_seq_private(seq);
 
-       seq_printf(seq,
-                  "%-4d %-15s " NIP6_SEQFMT " %5d\n",
+       seq_printf(seq, "%-4d %-15s %pi6 %5d\n",
                   state->dev->ifindex, state->dev->name,
-                  NIP6(im->aca_addr),
-                  im->aca_users);
+                  &im->aca_addr, im->aca_users);
        return 0;
 }