Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc7 /net/ipv4/ipmr.c

Filename:/net/ipv4/ipmr.c
Lines Added:19
Lines Deleted:16
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3  2.6.25-rc2  2.6.25-rc1 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25  2.6.25-git2  2.6.25-git3  2.6.25-git4 

Location
[  2.6.25-rc7
  [  net
    [  ipv4
       o  ipmr.c

Patch

diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index 37bb497..a94f52c 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -141,7 +141,7 @@ struct net_device *ipmr_new_tunnel(struct vifctl *v)
       p.iph.ihl = 5;
       p.iph.protocol = IPPROTO_IPIP;
       sprintf(p.name, "dvmrp%d", v->vifc_vifi);
-      ifr.ifr_ifru.ifru_data = (void*)&p;
+      ifr.ifr_ifru.ifru_data = (__force void __user *)&p;
 
       oldfs = get_fs(); set_fs(KERNEL_DS);
       err = dev->do_ioctl(dev, &ifr, SIOCADDTUNNEL);
@@ -321,7 +321,7 @@ static void ipmr_destroy_unres(struct mfc_cache *c)
          e->error = -ETIMEDOUT;
          memset(&e->msg, 0, sizeof(e->msg));
 
-         rtnl_unicast(skb, NETLINK_CB(skb).pid);
+         rtnl_unicast(skb, &init_net, NETLINK_CB(skb).pid);
       } else
          kfree_skb(skb);
    }
@@ -423,7 +423,7 @@ static int vif_add(struct vifctl *vifc, int mrtsock)
          return -ENOBUFS;
       break;
    case 0:
-      dev = ip_dev_find(vifc->vifc_lcl_addr.s_addr);
+      dev = ip_dev_find(&init_net, vifc->vifc_lcl_addr.s_addr);
       if (!dev)
          return -EADDRNOTAVAIL;
       dev_put(dev);
@@ -533,7 +533,7 @@ static void ipmr_cache_resolve(struct mfc_cache *uc, struct mfc_cache *c)
             memset(&e->msg, 0, sizeof(e->msg));
          }
 
-         rtnl_unicast(skb, NETLINK_CB(skb).pid);
+         rtnl_unicast(skb, &init_net, NETLINK_CB(skb).pid);
       } else
          ip_mr_forward(skb, c, 0);
    }
@@ -749,7 +749,7 @@ static int ipmr_mfc_add(struct mfcctl *mfc, int mrtsock)
       return 0;
    }
 
-   if (!MULTICAST(mfc->mfcc_mcastgrp.s_addr))
+   if (!ipv4_is_multicast(mfc->mfcc_mcastgrp.s_addr))
       return -EINVAL;
 
    c=ipmr_cache_alloc();
@@ -849,7 +849,7 @@ static void mrtsock_destruct(struct sock *sk)
 {
    rtnl_lock();
    if (sk == mroute_socket) {
-      IPV4_DEVCONF_ALL(MC_FORWARDING)--;
+      IPV4_DEVCONF_ALL(sk->sk_net, MC_FORWARDING)--;
 
       write_lock_bh(&mrt_lock);
       mroute_socket=NULL;
@@ -898,7 +898,7 @@ int ip_mroute_setsockopt(struct sock *sk,int optname,char __user *optval,int opt
          mroute_socket=sk;
          write_unlock_bh(&mrt_lock);
 
-         IPV4_DEVCONF_ALL(MC_FORWARDING)++;
+         IPV4_DEVCONF_ALL(sk->sk_net, MC_FORWARDING)++;
       }
       rtnl_unlock();
       return ret;
@@ -954,10 +954,12 @@ int ip_mroute_setsockopt(struct sock *sk,int optname,char __user *optval,int opt
 #ifdef CONFIG_IP_PIMSM
    case MRT_PIM:
    {
-      int v, ret;
+      int v;
+
       if (get_user(v,(int __user *)optval))
          return -EFAULT;
-      v = (v)?1:0;
+      v = (v) ? 1 : 0;
+
       rtnl_lock();
       ret = 0;
       if (v != mroute_do_pim) {
@@ -1183,7 +1185,7 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
                   .saddr = vif->local,
                   .tos = RT_TOS(iph->tos) } },
                 .proto = IPPROTO_IPIP };
-      if (ip_route_output_key(&rt, &fl))
+      if (ip_route_output_key(&init_net, &rt, &fl))
          goto out_free;
       encap = sizeof(struct iphdr);
    } else {
@@ -1192,7 +1194,7 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
                      { .daddr = iph->daddr,
                   .tos = RT_TOS(iph->tos) } },
                 .proto = IPPROTO_IPIP };
-      if (ip_route_output_key(&rt, &fl))
+      if (ip_route_output_key(&init_net, &rt, &fl))
          goto out_free;
    }
 
@@ -1245,7 +1247,7 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
     * not mrouter) cannot join to more than one interface - it will
     * result in receiving multiple packets.
     */
-   NF_HOOK(PF_INET, NF_IP_FORWARD, skb, skb->dev, dev,
+   NF_HOOK(PF_INET, NF_INET_FORWARD, skb, skb->dev, dev,
       ipmr_forward_finish);
    return;
 
@@ -1461,7 +1463,7 @@ int pim_rcv_v1(struct sk_buff * skb)
       b. packet is not a NULL-REGISTER
       c. packet is not truncated
     */
-   if (!MULTICAST(encap->daddr) ||
+   if (!ipv4_is_multicast(encap->daddr) ||
        encap->tot_len == 0 ||
        ntohs(encap->tot_len) + sizeof(*pim) > skb->len)
       goto drop;
@@ -1517,7 +1519,7 @@ static int pim_rcv(struct sk_buff * skb)
    /* check if the inner packet is destined to mcast group */
    encap = (struct iphdr *)(skb_transport_header(skb) +
              sizeof(struct pimreghdr));
-   if (!MULTICAST(encap->daddr) ||
+   if (!ipv4_is_multicast(encap->daddr) ||
        encap->tot_len == 0 ||
        ntohs(encap->tot_len) + sizeof(*pim) > skb->len)
       goto drop;
@@ -1659,6 +1661,7 @@ static struct vif_device *ipmr_vif_seq_idx(struct ipmr_vif_iter *iter,
 }
 
 static void *ipmr_vif_seq_start(struct seq_file *seq, loff_t *pos)
+   __acquires(mrt_lock)
 {
    read_lock(&mrt_lock);
    return *pos ? ipmr_vif_seq_idx(seq->private, *pos - 1)
@@ -1682,6 +1685,7 @@ static void *ipmr_vif_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 }
 
 static void ipmr_vif_seq_stop(struct seq_file *seq, void *v)
+   __releases(mrt_lock)
 {
    read_unlock(&mrt_lock);
 }
@@ -1889,8 +1893,7 @@ void __init ip_mr_init(void)
                    sizeof(struct mfc_cache),
                    0, SLAB_HWCACHE_ALIGN|SLAB_PANIC,
                    NULL);
-   init_timer(&ipmr_expire_timer);
-   ipmr_expire_timer.function=ipmr_expire_process;
+   setup_timer(&ipmr_expire_timer, ipmr_expire_process, 0);
    register_netdevice_notifier(&ip_mr_notifier);
 #ifdef CONFIG_PROC_FS
    proc_net_fops_create(&init_net, "ip_mr_vif", 0, &ipmr_vif_fops);


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.