在af_inet.c inet_init()中
rc = proto_register(&tcp_prot, 1);
rc = proto_register(&tcp_prot, 1);
里面就是把prot加到一个prot_list中, 请问这个prot_list有什么作用(在哪个地方有应用)
ps:我感觉没有也没有关系嘛
==================================================================================
譬如你注册了TCP的协议,当ip层接收完数据,就会根据IP包头的协议号从这个prot_list中找到对应的TCP的项目,然后就把数据包交给了TCP项目注册的接受数据包函数,2.6中应该是tcp_v4_recv吧
==================================================================================
看了一下代码,这个注册的好像是为上层提socket通信服务的吧。你看一下注册的那些函数。譬如新建一个TCP的socket,传递到内核之后应该会调用TCP注册的这些函数。
我是大致看了一下,这样理解的。
==================================================================================
那本书把那几行代码省略了 汗..
似乎这个表不是很重要, 刚才google下, 有个解释:
到proto_list链表中。proto_list是一个全局的静态链表,inet域支持的所有协议全部在这个链表中,但这个链表在协议栈中并没有太大用途,它只是用于在/proc/net/protocols文件中输出当前系统所支持的所有协议。
看来我多想了.
==================================================================================