1 diff -Nurb linux-2.6.22-592/net/core/net-sysfs.c linux-2.6.22-594/net/core/net-sysfs.c
2 --- linux-2.6.22-592/net/core/net-sysfs.c 2008-02-29 08:45:15.000000000 -0500
3 +++ linux-2.6.22-594/net/core/net-sysfs.c 2008-02-29 08:55:47.000000000 -0500
5 return netdev_store(device, attr, buf, len, change_mtu);
8 +static ssize_t show_new_ns_pid(struct class_device *cd, char *buf)
12 +static int change_new_ns_pid(struct net_device *dev, unsigned long new_ns_pid)
14 + struct task_struct *tsk;
17 + /* Look up the network namespace */
20 + tsk = find_task_by_real_pid(new_ns_pid);
25 + net = get_net(tsk->nsproxy->net_ns);
30 + /* If I found a network namespace move the device */
32 + err = dev_change_net_namespace(dev, net, NULL);
37 +static ssize_t store_new_ns_pid(struct class_device *cd, const char *buf, size_t len)
39 + return netdev_store(cd, buf, len, change_new_ns_pid);
42 NETDEVICE_SHOW(flags, fmt_hex);
44 static int change_flags(struct net_device *dev, unsigned long new_flags)
46 __ATTR(tx_queue_len, S_IRUGO | S_IWUSR, show_tx_queue_len,
48 __ATTR(weight, S_IRUGO | S_IWUSR, show_weight, store_weight),
49 + __ATTR(new_ns_pid, S_IWUSR, show_new_ns_pid, store_new_ns_pid),