NF_HOOK点自ipv4中的插入

net/ipv4/af_inet.c文件中对ipv4的协议进行了初始化,
fs_initcall(inet_init);
在inet_init中进行了ipv4相关的协议进行了初始化:tcp,udp,icmp等处理方法的注册,arp,ip,tcp,udp等协议处理流程的建立,proc文件系统中相关文件的建立等处理,这个在之前就分析过了,现在主要分析的呢是,在ip协议处理流程中NF_HOOK是如何插入的,对这个流程的分析可以比较清楚的看到linux对ipv4的一个处理流程,对特殊ip的处理,对路由包的处理等等。
对NF_HOOK的插入点,在上一篇文章中已经分析了,现在要分析在那里对其进行了调用,
在inet_init中有一个ip_init()函数,主要是对ip处理流程的建立,在这个函数的内部有一个函数ip_rt_init,在ip_rt_init中rtnl_register(PF_INET, RTM_GETROUTE, inet_rtm_getroute, NULL);
这个注册中注册处理了所有的NF_HOOK点,也就是inet_rtm_getroute这个函数,对这个函数还需要进一步的分析,目前只是大体熟悉了其中对ip包的处理流程,还需要在深入分析一下。

Leave a Reply

Your email address will not be published. Required fields are marked *