forked from Minki/linux
[NETNS]: Pass namespace through ip_rt_ioctl.
... up to rtentry_to_fib_config Acked-by: Benjamin Thery <benjamin.thery@bull.net> Acked-by: Daniel Lezcano <dlezcano@fr.ibm.com> Signed-off-by: Denis V. Lunev <den@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4b5d47d4d3
commit
1bad118a33
@ -120,7 +120,7 @@ extern void ip_rt_send_redirect(struct sk_buff *skb);
|
||||
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);
|
||||
|
||||
|
@ -795,7 +795,7 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||
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:
|
||||
|
@ -437,7 +437,7 @@ static int rtentry_to_fib_config(struct net *net, int cmd, struct rtentry *rt,
|
||||
* 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;
|
||||
@ -453,18 +453,18 @@ int ip_rt_ioctl(unsigned int cmd, void __user *arg)
|
||||
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
|
||||
|
@ -302,7 +302,7 @@ static int __init ic_route_ioctl(unsigned int cmd, struct rtentry *arg)
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user