struct rtentry具体定义
时间: 2023-07-18 20:13:25 浏览: 259
在 Linux 系统中,struct rtentry 的具体定义如下:
```
struct rtentry {
unsigned long int rt_pad1; /* 未使用 */
struct sockaddr rt_dst; /* 目的地址 */
struct sockaddr rt_gateway; /* 下一跳地址 */
struct sockaddr rt_genmask; /* 子网掩码 */
unsigned short int rt_flags; /* 路由标志 */
short int rt_pad2; /* 未使用 */
unsigned long int rt_pad3; /* 未使用 */
void *rt_pad4; /* 未使用 */
short int rt_metric; /* 路由度量值 */
char *rt_dev; /* 出口网络接口名称 */
unsigned long int rt_mtu; /* MTU */
struct rtattr *rt_attr; /* 未使用 */
};
```
其中,rt_pad1、rt_pad2、rt_pad3、rt_pad4、rt_attr 字段未使用,具体含义可以参考系统头文件中的注释。其他字段的含义如前所述。
相关问题
struct rtentry 定义
struct rtentry 是用于表示路由表中一条路由信息的数据结构,定义如下:
```
struct rtentry {
struct sockaddr *rt_dst; // 目的地址
struct sockaddr *rt_gateway; // 下一跳地址
struct sockaddr *rt_genmask; // 子网掩码
unsigned short rt_flags; // 路由标志
short rt_pad1; // 未使用
struct ifnet *rt_ifp; // 路由所在的网络接口
unsigned int rt_metric; // 路由距离
struct rtentry *rt_parent; // 父节点
unsigned int rt_refcnt; // 引用计数
long rt_use; // 使用次数
struct timeval rt_expire; // 超时时间
struct rtentry *rt_next; // 下一条路由表项
};
```
其中,rt_dst、rt_gateway、rt_genmask 分别表示目的地址、下一跳地址和子网掩码,rt_flags 表示路由标志,rt_ifp 表示路由所在的网络接口,rt_metric 表示路由距离,rt_parent 表示父节点,rt_refcnt 表示路由表项的引用计数,rt_use 表示使用次数,rt_expire 表示超时时间,rt_next 表示下一条路由表项。
struct rtentry结构体的详细内容
`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` :路由指标,包含多个指标值,如该路由记录对应的链路的最大传输单元、该路由记录的最大生存时间等等。
阅读全文