20.3选路控制块每当采用如下形式的调用创建一个选路插口时,socket(PF_ROUTE, SOCK_RAW, protocol);
对协议的用户请求函数(route_usrreq)
的一个对应的PRU_ATTACH请求分配一个选路控制块,并且将它链接到插口结构上。protocol参数可以将发送给这个插口上的进程的报文类型限制为一个特定族。如果将protocol参数说明为AF_INET,只有包含了Internet地址的选路报文将被发送给这个进程。protocol参数为0将使得来自内核的所有选路报文都发送给这个插口。记住我们把这些结构称为选路控制块,而不是原始控制块(raw control block),是为了避免与第32章中的原始IP控制块相混淆。
图20-3显示了rawcb结构的定义。分配了一个相同名字的全局结构,rawcb,作为这个双向链表的头。想更深入了解这些控制块的结构吗?请参考程控制块PCB的结构或者内存控制块OS_MEM的结构。
我们在图19-26中显示了sockproto的结构。它的sp_family成员变量被设置为PF_ROUTE,sp_protocol成员变量被设置为socket系统调用的第三个参数。为了进一步掌握网络路由的选路控制策略,可以查看这篇关于网络路由的选路控制策略的文章。还有相关的论文,如论文研究动静结合的循环结构选路方法.pdf可以提供更深的学术视角。
暂无评论