| 
		
			| [PATCH 3/9] network namespaces: playing and debugging [message #5164] | Tue, 15 August 2006 14:48  |  
			| 
				
				
					|  Andrey Savochkin Messages: 47
 Registered: December 2005
 | Member |  |  |  
	| Temporary code to play with network namespaces in the simplest way. Do
 exec 7< /proc/net/net_ns
 in your bash shell and you'll get a brand new network namespace.
 There you can, for example, do
 ip link set lo up
 ip addr list
 ip addr add 1.2.3.4 dev lo
 ping -n 1.2.3.4
 
 Signed-off-by: Andrey Savochkin <saw@swsoft.com>
 ---
 dev.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+)
 
 --- ./net/core/dev.c.vensxdbg	Tue Aug 15 13:46:44 2006
 +++ ./net/core/dev.c	Tue Aug 15 13:46:44 2006
 @@ -3597,6 +3597,8 @@ int net_ns_start(void)
 if (err)
 goto out_register;
 put_net_ns(orig_ns);
 +	printk(KERN_DEBUG "NET_NS: created new netcontext %p for %s (pid=%d)\n",
 +			ns, task->comm, task->tgid);
 return 0;
 
 out_register:
 @@ -3629,14 +3631,29 @@ static void net_ns_destroy(void *data)
 ip_fib_struct_cleanup();
 pop_net_ns(orig_ns);
 kfree(ns);
 +	printk(KERN_DEBUG "NET_NS: netcontext %p freed\n", ns);
 }
 
 void net_ns_stop(struct net_namespace *ns)
 {
 +	printk(KERN_DEBUG "NET_NS: netcontext %p scheduled for stop\n", ns);
 INIT_WORK(&ns->destroy_work, net_ns_destroy, ns);
 schedule_work(&ns->destroy_work);
 }
 EXPORT_SYMBOL(net_ns_stop);
 +
 +static int net_ns_open(struct inode *i, struct file *f)
 +{
 +	return net_ns_start();
 +}
 +static struct file_operations net_ns_fops = {
 +	.open	= net_ns_open,
 +};
 +static int net_ns_init(void)
 +{
 +	return proc_net_fops_create("net_ns", S_IRWXU, &net_ns_fops)
 +			? 0 : -ENOMEM;
 +}
 #endif
 
 /*
 @@ -3701,6 +3718,9 @@ static int __init net_dev_init(void)
 hotcpu_notifier(dev_cpu_callback, 0);
 dst_init();
 dev_mcast_init();
 +#ifdef CONFIG_NET_NS
 +	net_ns_init();
 +#endif
 rc = 0;
 out:
 return rc;
 |  
	|  |  | 
	|  | 
	|  | 
	|  | 
	|  |