若干解释:
- 判断in_dev是否存在,是通过mac地址吗?
- 源IP地址如果是multicast,broadcast,loopback地址,意味着数据报不知道从哪来的,只能把数据报废掉了。
- 目标IP地址如果是broadcast呢?这时有可能是发给自己的啊,所以这时要处理的。
- 源IP可能是0地址么?其实这种情况在网络中还是经常发生的,比如DHCP的情况。如果Linxu作为DHCP服务器,当然要处理这种情况了。这时目标IP地址就是广播地址,所以之后的处理就到brd_input。所以最关键要理解什么时候出现判断条件的情况。如果不是上述的DHCP包,源IP地址就不能为0地址。所以源,目标判断正确了之后就要进行路由查找了,也就是fib_lookup。根据结果,也就是路由类型进行分歧处理了。