linux网络协议栈初始化Series---(2)
时间:2010-09-14 来源:mtloveft
就知道net_ns_init是被先执行的。 它的代码如下
static int __init net_ns_init(void) |
CONFIG_NET_NS是编译配置选项,用户可以重构网络空间结构。
也就是struct net结构。Kernel主要是考虑扩展性和灵活性。
一般用户不会配置此项,kernel提供一个默认的值即init_net
在net_ns_init方法里对init_net进行初始化。
init_net的定义如下
struct net init_net; 网络命名空间定义了2个链表,pernet_list和net_namespace_list
如下
static LIST_HEAD(pernet_list);
static struct list_head *first_device = &pernet_list;
LIST_HEAD(net_namespace_list); init_net会被链接到net_namespace_list这个双向链表上。
pernet_operations结构将被链接到pernet_list这个双向链表上。 以后,如果没自定义网络命名空间的话,所有想用网络命名空间时都将利用init_net。
/* |