NF_HOOK点自ipv4中的插入

| 2011年2月20日

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包的处理流程,还需要在深入分析一下。

看完本文有收获?请分享给更多人

关注「黑光技术」,关注大数据+微服务