335 switch (r->r_action) {/*好了,开始处理动作了*/ 336 case RTN_UNICAST:/*没有设置动作*/ 337 case RTN_NAT: /*动作nat ADDRESS*/ 338 policy = r; 339 break; 340 case RTN_UNREACHABLE: /*动作unreachable*/ 341 read_unlock(&fib_rules_lock); 342 return -ENETUNREACH; 343 default: 344 ...
我们可以看到,虽然这张表多达256项,但枚举类型rt_class_t给出的表示最常用的也就三项,在系统初始化时,由内核配置生成的路由表只有RT_TABLE_MAIN,RT_TABLE_LOCAL两张。 main表中存放的是路由类型为RTN_UNICAST的所有路由项,即网关或直接连接的路由。在myfib_add_ifaddr函数中是这样添加main表项的:对于某个网络...
合法的网关路由类型需要是单播类型(RTN_UNICAST)或者本地类型(RTN_LOCAL),否则为无效网关。如果路由查询结果的出接口为空,返回错误。最后,根据出口设备的链路状态设置下一跳结构的状态位。 err = -EINVAL; if (res.type != RTN_UNICAST && res.type != RTN_LOCAL) { NL_SET_ERR_MSG(extack, "Nexthop ha...
如果ARP数据包是发送给当前主机的(路由选择条目的rt_type为RTN_LOCAL),就接着检查一些条件(这将稍后介绍)。如果这些检查都通过了,就使用方法arp_send()发回ARP应答。 如果ARP数据包不是发送给当前主机但需要进行转发的(路由选择条目的rt_type为RTN_UNICAST),也需要检查一些条件(也将在稍后介绍)。如果这些条件都满...
// 本地规则local_rule static struct fib_rule local_rule = { r_next: &main_rule, //下一条规则是主规则 r_clntref: ATOMIC_INIT(2), r_table: RT_TABLE_LOCAL, // 指向本地路由表 r_action: RTN_UNICAST, // 动作是返回路由 }; // 主规则main_rule static struct fib_rule main_rule =...
级32766r_table:RT_TABLE_MAIN,// 指向主路由表r_action:RTN_UNICAST,// 动作是返回路由};// 默认规则default rulestaticstruct fib_rule default_rule={r_clntref:ATOMIC_INIT(2),r_preference:0x7FFF,// 默认规则的优先级32767r_table:RT_TABLE_DEFAULT,// 指默认路由表r_action:RTN_UNICAST,// 动作...
r_action: RTN_UNICAST, /*动作是返回路由*/ }; u 主规则main_rule 86 static struct fib_rule main_rule = { r_next: &default_rule,/*下一条规则是默认规则*/ r_clntref: ATOMIC_INIT(2), r_preference: 0x7FFE, /*默认规则的优先级32766*/ ...
unsigned char type;//对象类型,决定数据包处理方式,如RTN_UNICAST、RTN_LOCAL、RTN_BROADCAST、RTN_MULTICAST、RTN_UNREACHABLE. unsigned char scope; u32 tclassid; struct fib_info *fi;//指向fib_info对象,存储了下一跳的引用fib_nh struct fib_table *table;//指向用于查找的FIB表 ...
我们可以看到,虽然这张表多达256项,但枚举类型rt_class_t给出的表示最常用的也就三项,在系统初始化时,由内核配置生成的路由表只有RT_TABLE_MAIN,RT_TABLE_LOCAL两张。 main表中存放的是路由类型为RTN_UNICAST的所有路由项,即网关或直接连接的路由。
main表中存放的是路由类型为RTN_UNICAST的所有路由项,即网关或直接连接的路由。在myfib_add_ifaddr函数中是这样添加main表项的:对于某个网络设备接口的一个IP地址,如果目的地址的网络号不是零网络(网络号与子网号全为零),并且它是primary地址,同时,它不是D类地址(网络号与子网号占32位)。最后一个条件是:它不...