struct rtentry结构体的详细内容
时间: 2024-05-10 17:18:44 浏览: 210
`struct rtentry` 结构体用于表示内核路由表中的一条路由记录。它的定义如下:
```c
struct rtentry {
struct sockaddr *rt_dst; /* 目标地址 */
struct sockaddr *rt_gateway; /* 下一跳地址 */
struct sockaddr *rt_genmask; /* 子网掩码 */
unsigned short int rt_flags; /* 路由标志 */
short int rt_refcnt; /* 引用计数 */
int rt_use; /* 使用次数 */
struct ifnet *rt_ifp; /* 输出网络接口 */
struct rtentry *rt_parent; /* 父路由 */
void *rt_llinfo; /* 指向链路层信息的指针 */
struct rtmetrics rt_rmx; /* 路由指标 */
};
```
- `rt_dst` :目标地址,即该路由记录所对应的目的网络地址;
- `rt_gateway`:下一跳地址,当路由表中有多条记录可以到达同一个目标网络时,使用下一跳地址确定出最终的路由记录;
- `rt_genmask` :子网掩码,用于确定网络地址和主机地址;
- `rt_flags` :路由标志,包含多个标志位,如路由是否有效、是否是静态路由、是否需要进行重定向等等;
- `rt_refcnt` :引用计数,表示该路由记录被引用的次数。当引用计数为 0 时,该路由记录将被删除;
- `rt_use` :使用次数,表示该路由记录被使用的次数。内核通过此字段来选择最优路由;
- `rt_ifp` :输出网络接口,指向该路由记录所对应的网络接口,即数据包从哪个网络接口发出;
- `rt_parent` :父路由,即该路由记录的上一跳路由记录;
- `rt_llinfo` :指向链路层信息的指针,用于存储路由记录与下一跳之间的链路层信息;
- `rt_rmx` :路由指标,包含多个指标值,如该路由记录对应的链路的最大传输单元、该路由记录的最大生存时间等等。
阅读全文