extern unsigned                inet_addr_type(struct net *net, __be32 addr);
 extern unsigned                inet_dev_addr_type(struct net *net, const struct net_device *dev, __be32 addr);
 extern void            ip_rt_multicast_event(struct in_device *);
-extern int             ip_rt_ioctl(unsigned int cmd, void __user *arg);
+extern int             ip_rt_ioctl(struct net *, unsigned int cmd, void __user *arg);
 extern void            ip_rt_get_source(u8 *src, struct rtable *rt);
 extern int             ip_rt_dump(struct sk_buff *skb,  struct netlink_callback *cb);
 
 
                case SIOCADDRT:
                case SIOCDELRT:
                case SIOCRTMSG:
-                       err = ip_rt_ioctl(cmd, (void __user *)arg);
+                       err = ip_rt_ioctl(sk->sk_net, cmd, (void __user *)arg);
                        break;
                case SIOCDARP:
                case SIOCGARP:
 
  *     Handle IP routing ioctl calls. These are used to manipulate the routing tables
  */
 
-int ip_rt_ioctl(unsigned int cmd, void __user *arg)
+int ip_rt_ioctl(struct net *net, unsigned int cmd, void __user *arg)
 {
        struct fib_config cfg;
        struct rtentry rt;
                        return -EFAULT;
 
                rtnl_lock();
-               err = rtentry_to_fib_config(&init_net, cmd, &rt, &cfg);
+               err = rtentry_to_fib_config(net, cmd, &rt, &cfg);
                if (err == 0) {
                        struct fib_table *tb;
 
                        if (cmd == SIOCDELRT) {
-                               tb = fib_get_table(&init_net, cfg.fc_table);
+                               tb = fib_get_table(net, cfg.fc_table);
                                if (tb)
                                        err = tb->tb_delete(tb, &cfg);
                                else
                                        err = -ESRCH;
                        } else {
-                               tb = fib_new_table(&init_net, cfg.fc_table);
+                               tb = fib_new_table(net, cfg.fc_table);
                                if (tb)
                                        err = tb->tb_insert(tb, &cfg);
                                else
 
 
        mm_segment_t oldfs = get_fs();
        set_fs(get_ds());
-       res = ip_rt_ioctl(cmd, (void __user *) arg);
+       res = ip_rt_ioctl(&init_net, cmd, (void __user *) arg);
        set_fs(oldfs);
        return res;
 }