IP路由与FIB查找详解
1. 基本概念与相关函数概述
在网络通信中,IP路由是一个核心概念。首先,当进行本地表查找时,如果源地址的路由类型不是RTN_LOCAL类型,那么该表项可能是无效的。RTN_LOCAL表示找到的地址是配置在系统本地接口上的。若本地表查找中源地址的路由类型为RTN_LOCAL,则通过调用第162行的宏FIB_RES_DEV获取net_device的引用,接着在第164行增加net_device结构体中的使用计数,最后在第168行返回net_device指针,并调用fib_res_put()函数释放fib_table中的引用。
另外,__in_dev_get()函数返回net_device结构中的void * ip_ptr元素,该元素指向in_device结构体实例。in_device结构体包含重要元素ifa_list,它是in_ifaddr结构体类型,代表一个IP地址链。这在系统中非常重要,因为每个物理net_device可能会被分配别名IP地址和标签,例如eth0:0、 <