fib_node结构

struct fib_node {struct hlist_node     fn_hash;struct list_head       fn_alias;u32                fn_key;
};

这个结构实际上代表一个路由节点,fn_key是这个路由节点的IP地址或者网络号(对于本地接收路由,它就是代表本地网络设备接口的IP地址,如 172.16.48.2,对于子网单播,它就是子网号,比如172.16.48.0)。对于子网号172.16.48.0,其子网掩码就是 255.255.255.0,该路由项的目的地址长度就是24。而对于本地接收和广播路由,其掩码是255.255.255.255,目的地址长度是 32,同一目的地址长度的路由节点被维护在同一个路由域fn_zone中

struct list_head       fn_alias;

//指向fib_alias结构的链表

相同的子网可以共享一个fib_node,fib_alias结构用以标明不同的路由信息,127.10.0.1和127.0.0.1两个A类地址,可以共享一个路由节点(fib_node),但是他们的fib_alias有所不同

一个典型的路由节点示例:

fn_alias{fa_info{.fib_protocol   = RTPROT_KERNEL;.fib_nhs        = 1;.fib_flags      = 0;.fib_prefsrc    = 172.16.48.2;struct fib_nh{.nh_oif     = indexof(eth0);.nh_flags   = 0;.nh_weight  = 1;.nh_scope   = RT_SCOPE_HOST;.nh_dev     = eth0;}}.fa_tos = 0;.fa_type = RTN_UNICAST;.fa_scope = RT_SCOPE_LINK;.fa_state = 0;}.fn_key = 172.16.48.0;}

这个路由节点的目的地址长度是24(子网掩码是255.255.255.0),所以它被放到fz_order的值为24的路由域fz_zone中去

linux路由内核实现分析(二)---FIB相关数据结构(3)相关推荐

  1. linux路由内核实现分析(二)---FIB相关数据结构(1)

    ------------------------------------------------------------------------------------------ 以下是我根据 li ...

  2. linux路由内核实现分析 四,linux路由内核实现分析(二)---FIB相关数据结构(4)

    fib_info结构 struct fib_info { struct hlist_node fib_hash; struct hlist_node fib_lhash; int fib_treere ...

  3. linux路由内核实现分析(二)---FIB相关数据结构(4)

    fib_info结构 struct fib_info {struct hlist_node fib_hash;struct hlist_node fib_lhash;int fib_treeref;a ...

  4. linux路由内核实现分析(二)---FIB相关数据结构(2)

    fn_zone结构 struct fn_zone {struct fn_zone *fz_next;struct hlist_head *fz_hash; int fz_nent; int fz_di ...

  5. linux路由内核实现分析(一)----邻居子节点(1)

    ------------------------------------------------------------------------------------------ 以下是我根据 li ...

  6. linux路由内核实现分析(四)---路由缓存机制(4)

    ip_route_input函数   int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr, u8 tos, struc ...

  7. linux路由内核实现分析(三)---路由查找过程

    ------------------------------------------------------------------------------------------ 以下是我根据 li ...

  8. linux路由内核实现分析(四)---路由缓存机制(1)

    ------------------------------------------------------------------------------------------ 以下是我根据 li ...

  9. linux路由内核实现分析(一)----邻居子节点(2)

    邻居节点相关的操作:   查找到路由后,会调用arp_bind_neighbour绑定一个邻居项 int arp_bind_neighbour(struct dst_entry *dst) { str ...

最新文章

  1. HDU - 5875 2016 ACM/ICPC 大连网络赛 H题 暴力
  2. 谈一次单元测试驱动代码重构
  3. docker启动远程管理接口
  4. unity3d v5.1.1 ugui 带垂直滚动条的文本框
  5. WIN32 _WIN32 _WIN64宏定义
  6. java 链接为分布式 hbase,hbase学习记录(一):hbase伪分布式安装
  7. 互联网1分钟 |1205
  8. 前端学习(1553):复习2
  9. 慌的一批!新手妹子一个命令把公司服务器数据删没了...
  10. 编写超级可读代码的15个最佳实践
  11. 来看看Python炫酷的颜色输出与进度条打印
  12. 攻克难题最忌讳的就是投机取巧自作聪明
  13. mfcs100ud.lib(dllmodul.obj):error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
  14. hadoop2.X如何将namenode与SecondaryNameNode分开配置
  15. dom4j读取配置文件
  16. 来自汽车行业的20个优秀的汽车推广网站
  17. word表格内插入某月某日星期几_Word文字技巧—如何在Word中自动生成日历
  18. web学习6-jdom
  19. mac上彻底删除 搜狗输入法 鼠须管输入法
  20. 抖音康辉机器人_新闻联播主持康辉玩抖音,卖萌耍宝样样精通,观众为其点赞...

热门文章

  1. Java 算法 P1003
  2. linux管理防火墙开放端口
  3. scrapy导入配置文件setting.py,防止运行时找不到文件
  4. 解决使用sudo没问题,但是使用su会报错 su: Authentication failure 的问题
  5. php实现ssh客户端,php无阻塞SSH客户端实例
  6. oracle游标多线程,多线程jdbc游标分页查询原理 oracle和mysql分页
  7. core控制器属性注入的用处_asp.net-core – 如何使用Autofac和ASP.NET Core在控制器上启用属性注入?...
  8. 【前端必备】七、页面性能优化
  9. DBMS_PIPE包
  10. beego2---入门