fn_zone结构

struct fn_zone {struct fn_zone        *fz_next;struct hlist_head     *fz_hash;      int                  fz_nent;  int                  fz_divisor;     u32                fz_hashmask;
#define FZ_HASHMASK(fz)         ((fz)->fz_hashmask)int                  fz_order;__be32                  fz_mask;
#define FZ_MASK(fz)          ((fz)->fz_mask)
};
struct fn_zone        *fz_next;//用于联系fz_zone链表的指针。struct hlist_head     *fz_hash;//这个结构2.6版本才引入的,在2.4.x下是
struct fib_node       **fz_hash;
//
前面已经提到,2.6内核使用RCU的方式来管理双向链表,但是在2.4内核中,直接引入
一个fib_node的的链表头int                  fz_nent;
//用于记录 fib_node结构的数目int                  fz_order;
//记录了当前fz_zone结构在fz_hash中的位置通过函数inet_make_mask来经由fz_order计算出相对应的fz_mask,__u32 inet_make_mask(fz)
{return htonl(~((1<<(32-fz))-1));
}这样,如果fz_order = 0,那么fz_mask = 0x00000000,如果fz_order = 1,fz_mask = 0x80000000
正好和fz_hash中定义的子网掩码相同,fz_order=0的时候对应默认网关。

												

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

  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相关数据结构(3)

    fib_node结构 struct fib_node {struct hlist_node fn_hash;struct list_head fn_alias;u32 fn_key; }; 这个结构实 ...

  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. Sublime使用的插件和快捷键
  2. Q+会带来什么样的互联网时代?
  3. RHCS集群理论暨 最佳实践
  4. WINCE支持的波斯语的codepages
  5. Machine Learning课程 by Andrew Ng
  6. msg: ReferenceError: Can't find variable: urchinTracker
  7. 大数据实验报告总结体会_建设大数据中台架构思考与总结
  8. 【论文党福利】如何提取图像中的数据
  9. 加州大学欧文计算机工程硕士,UCI加州大学尔湾分校软件工程硕士Master of Software Engineering...
  10. 正定矩阵(positive definite matrix)
  11. 拓端tecdat|在UBUNTU虚拟机上安装R软件包
  12. Go 标准库介绍五: io
  13. 容器技术Docker K8s 28 容器服务ACK基础与进阶-弹性伸缩
  14. ArcGIS与地理加权回归GWR【二】以及MGWR软件下载
  15. 笨方法学python --习题12
  16. 计算机病毒,蠕虫,木马三者之间的区别
  17. mysql 存储过程 对象_【MYSQL笔记3】MYSQL过程式数据库对象之存储过程的调用、删除和修改...
  18. html 表格设置图片背景透明,table标签怎么实现内容不透明,背景图片透明
  19. CF909B Segments
  20. 女性电子商务服装评论

热门文章

  1. Java 算法 传球游戏
  2. pytorch使用早停策略
  3. django配置随时执行的脚本,使用运行时的manage环境执行程序
  4. python pandas使用pipe管道增强代码可读性
  5. matplotlib在图像上方添加文字、标签
  6. 解决新安装的Ubuntu18.04没有网络连接的问题
  7. python计算两个时间间隔准确的天、月、年之差
  8. python转str类型的列表为list格式
  9. pandas Dataframe表格转Markdown格式
  10. scrapy 整合 djangoitem,摆脱保存数据时SQL报错的困扰