现在的位置: 首页 > 综合 > 正文

proto_register 作用

2014年02月15日 ⁄ 综合 ⁄ 共 817字 ⁄ 字号 评论关闭
在af_inet.c inet_init()中
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文件中输出当前系统所支持的所有协议。

看来我多想了.

==================================================================================

抱歉!评论已关闭.