linux路由内核实现分析(二)---FIB相关数据结构(2)
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)相关推荐
- linux路由内核实现分析(二)---FIB相关数据结构(1)
------------------------------------------------------------------------------------------ 以下是我根据 li ...
- linux路由内核实现分析 四,linux路由内核实现分析(二)---FIB相关数据结构(4)
fib_info结构 struct fib_info { struct hlist_node fib_hash; struct hlist_node fib_lhash; int fib_treere ...
- linux路由内核实现分析(二)---FIB相关数据结构(4)
fib_info结构 struct fib_info {struct hlist_node fib_hash;struct hlist_node fib_lhash;int fib_treeref;a ...
- linux路由内核实现分析(二)---FIB相关数据结构(3)
fib_node结构 struct fib_node {struct hlist_node fn_hash;struct list_head fn_alias;u32 fn_key; }; 这个结构实 ...
- linux路由内核实现分析(一)----邻居子节点(1)
------------------------------------------------------------------------------------------ 以下是我根据 li ...
- linux路由内核实现分析(四)---路由缓存机制(4)
ip_route_input函数 int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr, u8 tos, struc ...
- linux路由内核实现分析(三)---路由查找过程
------------------------------------------------------------------------------------------ 以下是我根据 li ...
- linux路由内核实现分析(四)---路由缓存机制(1)
------------------------------------------------------------------------------------------ 以下是我根据 li ...
- linux路由内核实现分析(一)----邻居子节点(2)
邻居节点相关的操作: 查找到路由后,会调用arp_bind_neighbour绑定一个邻居项 int arp_bind_neighbour(struct dst_entry *dst) { str ...
最新文章
- Sublime使用的插件和快捷键
- Q+会带来什么样的互联网时代?
- RHCS集群理论暨 最佳实践
- WINCE支持的波斯语的codepages
- Machine Learning课程 by Andrew Ng
- msg: ReferenceError: Can't find variable: urchinTracker
- 大数据实验报告总结体会_建设大数据中台架构思考与总结
- 【论文党福利】如何提取图像中的数据
- 加州大学欧文计算机工程硕士,UCI加州大学尔湾分校软件工程硕士Master of Software Engineering...
- 正定矩阵(positive definite matrix)
- 拓端tecdat|在UBUNTU虚拟机上安装R软件包
- Go 标准库介绍五: io
- 容器技术Docker K8s 28 容器服务ACK基础与进阶-弹性伸缩
- ArcGIS与地理加权回归GWR【二】以及MGWR软件下载
- 笨方法学python --习题12
- 计算机病毒,蠕虫,木马三者之间的区别
- mysql 存储过程 对象_【MYSQL笔记3】MYSQL过程式数据库对象之存储过程的调用、删除和修改...
- html 表格设置图片背景透明,table标签怎么实现内容不透明,背景图片透明
- CF909B Segments
- 女性电子商务服装评论