数据报的路由信息,决定这个数据包时转发还是输入本机。 ?
ip_rcv()
文件位置:net/ipv4/ip_input.c
?
ip_rcv_finish()
文件位置:net/ipv4/ip_input.c
经过netfilter模块处理后,调用ip_rcv_finish()完成IP数据报的输入:完成的主要功能是:如果还没有为该数据报查找输入路由缓存,则调用ip_route_input()为其查找输入路由缓存。根据此输入到本地或转发,最终前者调用ip_local_deliver(),后者调用ip_forward()。 ?
ip_local_deliver() 文件位置:net/ipv4/ip_input.c
该函数由ip_rcv_finish()根据输入路由缓存调用。先判断收到的数据包是不
是分片,若分片,则将分片重组。之后输入ip_local_deliver_finish()完成数据报的本地输入。
?
ip_local_deliver_finish() 文件位置:net/ipv4/ip_input.c
? IP数据包的转发处理
(1)ip_forward()
文件位置:net/ipv4/ip_forward.c
该函数在ip_rcv_finish()中通过输入路由缓存被调用。
(2)ip_forward_finish()
完成IP数据包的转发。

