要进行策略路由,需要将路由表添加到/etc/iproute2/rt_tables
.我想知道这是如何被阅读的。它是由内核读取的,还是由 iproute2 用户空间工具读取的?
答案1
这只是iproute2
实用程序使用的平面文件,它将命令行上给出的用户友好名称转换为内核使用的整数值。只是为了保持“这个名字就是这个整数”的一致映射
答案2
不是直接由内核执行,而是由用户空间工具 iproute2 执行。用户空间工具然后通过系统调用接口与内核交互。
查看路线命令的源代码可能是一个很好的建议。实际内核路由更新的源代码可以在 src/linux/kernel_routes.c 中找到。
头文件 bits/ioctls.h 声明操作内核路由所需的 ioctl 命令,而 net/route.h 头文件则规定将路由信息传递到内核所需的数据结构。