linux路由内核实现分析(二)---FIB相关数据结构(3)
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)相关推荐
- 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相关数据结构(2)
fn_zone结构 struct fn_zone {struct fn_zone *fz_next;struct hlist_head *fz_hash; int fz_nent; int fz_di ...
- 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 ...
最新文章
- HDU - 5875 2016 ACM/ICPC 大连网络赛 H题 暴力
- 谈一次单元测试驱动代码重构
- docker启动远程管理接口
- unity3d v5.1.1 ugui 带垂直滚动条的文本框
- WIN32 _WIN32 _WIN64宏定义
- java 链接为分布式 hbase,hbase学习记录(一):hbase伪分布式安装
- 互联网1分钟 |1205
- 前端学习(1553):复习2
- 慌的一批!新手妹子一个命令把公司服务器数据删没了...
- 编写超级可读代码的15个最佳实践
- 来看看Python炫酷的颜色输出与进度条打印
- 攻克难题最忌讳的就是投机取巧自作聪明
- mfcs100ud.lib(dllmodul.obj):error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
- hadoop2.X如何将namenode与SecondaryNameNode分开配置
- dom4j读取配置文件
- 来自汽车行业的20个优秀的汽车推广网站
- word表格内插入某月某日星期几_Word文字技巧—如何在Word中自动生成日历
- web学习6-jdom
- mac上彻底删除 搜狗输入法 鼠须管输入法
- 抖音康辉机器人_新闻联播主持康辉玩抖音,卖萌耍宝样样精通,观众为其点赞...
热门文章
- Java 算法 P1003
- linux管理防火墙开放端口
- scrapy导入配置文件setting.py,防止运行时找不到文件
- 解决使用sudo没问题,但是使用su会报错 su: Authentication failure 的问题
- php实现ssh客户端,php无阻塞SSH客户端实例
- oracle游标多线程,多线程jdbc游标分页查询原理 oracle和mysql分页
- core控制器属性注入的用处_asp.net-core – 如何使用Autofac和ASP.NET Core在控制器上启用属性注入?...
- 【前端必备】七、页面性能优化
- DBMS_PIPE包
- beego2---入门