卷2 第19章 选路请求和选路消息
19.1 引言
内核与进程通过选路消息交换路由信息。
19.2 rtalloc和rtalloc1函数
rtalloc
rtalloc1
- 调用rn_match
- 克隆路由(RTF_CLONING)
- 处理RTF_XRESOLVE
- 递增引用计数
19.3 RTFREE宏和rtfree函数
19.4 rtrequest函数
命令
| 命令 | 说明 |
|---|
| RTM_ADD | 添加路由 |
| RTM_DELETE | 删除路由 |
| RTM_RESOLVE | 解析克隆 |
RTM_DELETE处理
- 从树中删除
- 释放网关引用
- 调用接口请求函数
RTM_RESOLVE处理
RTM_ADD处理
- 分配rtentry
- 复制地址
- 添加到树
- 保存接口指针
19.5 rt_setgate函数
19.6 rtinit函数
19.7 rtredirect函数
19.8 选路消息的结构
rt_msghdr结构
| 成员 | 说明 |
|---|
| rtm_msglen | 消息长度 |
| rtm_version | 版本 |
| rtm_type | 消息类型 |
| rtm_flags | 标志 |
| rtm_addrs | 地址掩码 |
消息类型
| 类型 | 说明 |
|---|
| RTM_ADD | 添加路由 |
| RTM_DELETE | 删除路由 |
| RTM_CHANGE | 改变路由 |
| RTM_GET | 获取路由 |
| RTM_LOSING | 路由丢失 |
| RTM_REDIRECT | 重定向 |
| RTM_MISS | 查找失败 |
| RTM_IFINFO | 接口信息 |
| RTM_NEWADDR | 新地址 |
| RTM_DELADDR | 删除地址 |
19.9 rt_missmsg函数
19.10 rt_ifmsg函数
19.11 rt_newaddrmsg函数
- 添加/删除地址时调用
- 生成RTM_NEWADDR/RTM_DELADDR
19.12 rt_msg1函数
19.13 rt_msg2函数
19.14 sysctl_rtable函数
- 导出路由表
- NET_RT_DUMP、NET_RT_FLAGS、NET_RT_IFLIST
19.15 sysctl_dumpentry函数
19.16 sysctl_iflist函数
- 导出接口列表
- 生成RTM_IFINFO和RTM_NEWADDR
19.17 小结
选路消息提供内核与进程间的路由信息交换。sysctl可导出路由表。