协议
RuleWatcherV4
在 fuchsia.net.routes/ipv4.fidl 中定义
用于系统 IPv4 规则表中更改的观察器协议。
观看
用于观察路由规则更改的 Hanging-Get 样式 API。
客户端一次只能有一个待处理的 Watch 调用。正在呼叫
在请求已处于待处理状态时执行 Watch,则会导致协议
关闭。
前 N 个事件始终为 existing,其中 N 是
当协议服务器端
。以下事件将 idle,表示
existing 个事件。此时,客户已经观看了
状态,并且永远不会再观察到 existing 事件。
- 响应 events最多包含MAX_EVENTS个事件的矢量。
请求
<空>
响应
| 名称 | 类型 | 
|---|---|
| events | vector<RuleEventV4>[512] | 
RuleWatcherV6
在 fuchsia.net.routes/ipv6.fidl 中定义
用于系统 IPv6 规则表中更改的观察器协议。
观看
用于观察路由规则更改的 Hanging-Get 样式 API。
客户端一次只能有一个待处理的 Watch 调用。正在呼叫
在请求已处于待处理状态时执行 Watch,则会导致协议
关闭。
前 N 个事件始终为 existing,其中 N 是
当协议服务器端
。以下事件将 idle,表示
existing 个事件。此时,客户已经观看了
状态,并且永远不会再观察到 existing 事件。
- 响应 events最多包含MAX_EVENTS个事件的矢量。
请求
<空>
响应
| 名称 | 类型 | 
|---|---|
| events | vector<RuleEventV6>[512] | 
状态
在 fuchsia.net.routes/routes.fidl 中定义
提供对系统的路由状态的访问权限。
GetRouteTableName
根据 ID 获取路由表名称。
- 向 table_id请求相关路由表的 ID。
- 响应 table_name路由表的名称(如果路由表) 无名称,则返回空字符串。
- 如果路由表不存在,则会发生 NO_TABLE错误。
请求
| 名称 | 类型 | 
|---|---|
| table_id | TableId | 
响应
| 名称 | 类型 | 
|---|---|
| payload | State_GetRouteTableName_Result | 
解决
解析到目的地的路由。
- 请求 destination作为路由解析目标的 IP 地址。如果 未指定地址(全部为零),则默认路由将 返回。destination的变体决定了 已解析路由中的 fuchsia.net/IpAddress 字段。
- 响应 result包含到destination的已解析路由。
- 如果 destination无法解析,则会发生ZX_ERR_ADDRESS_UNREACHABLE错误。
请求
| 名称 | 类型 | 
|---|---|
| destination | fuchsia.net/IpAddress | 
响应
| 名称 | 类型 | 
|---|---|
| payload | State_Resolve_Result | 
StateV4
在 fuchsia.net.routes/ipv4.fidl 中定义
提供对系统的 IPv4 路由状态的可观测性。
GetRuleWatcherV4
初始化 IPv4 规则状态的观察器。
- 请求“watcher”授予对 RuleWatcherV4协议的访问权限。
- 请求 watch_options指定RuleWatcherV4的行为。
请求
| 名称 | 类型 | 
|---|---|
| watcher | server_end<RuleWatcherV4> | 
| options | RuleWatcherOptionsV4 | 
GetWatcherV4
初始化 IPv4 路由状态的观察器。
- 请求“watcher”授予对 WatcherV4协议的访问权限。
- 请求 watch_options指定WatcherV4的行为。
请求
| 名称 | 类型 | 
|---|---|
| watcher | server_end<WatcherV4> | 
| options | WatcherOptionsV4 | 
StateV6
在 fuchsia.net.routes/ipv6.fidl 中定义
提供对系统的 IPv6 路由状态的可观测性。
GetRuleWatcherV6
初始化 IPv6 规则状态的观察器。
- 请求“watcher”授予对 RuleWatcherV6协议的访问权限。
- 请求 watch_options指定RuleWatcherV6的行为。
请求
| 名称 | 类型 | 
|---|---|
| watcher | server_end<RuleWatcherV6> | 
| options | RuleWatcherOptionsV6 | 
GetWatcherV6
初始化 IPv6 路由状态的观察器。
- 请求“watcher”授予对 WatcherV6协议的访问权限。
- 请求 watch_options指定WatcherV6的行为。
请求
| 名称 | 类型 | 
|---|---|
| watcher | server_end<WatcherV6> | 
| options | WatcherOptionsV6 | 
WatcherV4
在 fuchsia.net.routes/ipv4.fidl 中定义
用于系统 IPv4 路由状态变化的观察器协议。
观看
用于观察路由更改的 Hanging-Get 样式 API。
客户端一次只能有一个待处理的 Watch 调用。正在呼叫
在请求已处于待处理状态时执行 Watch 操作会导致协议
关闭。
前 N 个事件始终为 existing,其中 N 是
当协议服务器端
。以下事件将 idle,表示
existing 个事件。此时,客户已经观看了
状态,并且永远不会再观察到 existing 事件。
系统会最多批量返回 MAX_EVENTS 个事件。没有任何
批量大小/边界与其内容之间的相关性:
完全适合服务器拆分 existing 事件块,
进行训练。客户端应将此 API 视为
事件流,即使用批处理来减少
系统。
- 响应 events最多包含MAX_EVENTS个事件的矢量。
请求
<空>
响应
| 名称 | 类型 | 
|---|---|
| events | vector<EventV4>[512] | 
WatcherV6
在 fuchsia.net.routes/ipv6.fidl 中定义
用于系统 IPv6 路由状态变化的观察器协议。
观看
用于观察路由更改的 Hanging-Get 样式 API。
客户端一次只能有一个待处理的 Watch 调用。正在呼叫
在请求已处于待处理状态时执行 Watch,则会导致协议
关闭。
前 N 个事件始终为 existing,其中 N 是
当协议服务器端
。以下事件将 idle,表示
existing 个事件。此时,客户已经观看了
状态,并且永远不会再观察到 existing 事件。
系统会最多批量返回 MAX_EVENTS 个事件。没有任何
批量大小/边界与其内容之间的相关性:
完全适合服务器拆分 existing 事件块,
进行训练。客户端应将此 API 视为
事件流,即使用批处理来减少
系统。
- 响应 events最多包含MAX_EVENTS个事件的矢量。
请求
<空>
响应
| 名称 | 类型 | 
|---|---|
| events | vector<EventV6>[512] | 
结构体
全部
在 fuchsia.net.routes/routes.fidl 中定义
<空>
介于
在 fuchsia.net.routes/rules.fidl 中定义
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| start | uint32 | 范围的起始值(含边界值)。 | 无默认设置 | 
| end | uint32 | 范围(含边界值)的值。 | 无默认设置 | 
空白
在 fuchsia.net.routes/routes.fidl 中定义
空值的占位符。
<空>
InstalledRuleV4
在 fuchsia.net.routes/ipv4.fidl 中定义
已安装的 IPv4 路由规则。
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| rule_set_priority | RuleSetPriority | 规则集按规则集优先级排序,规则集不相交 它们之间没有交错规则 | 无默认设置 | 
| rule_index | RuleIndex | 规则集中的规则与规则集一起在本地排序 优先级,这定义了所有已安装规则的全局顺序。 | 无默认设置 | 
| selector | RuleSelectorV4 | 规则的选择器部分,如果选择器 与数据包不匹配。 | 无默认设置 | 
| action | RuleAction | 规则的操作部分,描述在发生选择器时应执行的操作部分 与数据包匹配。 | 无默认设置 | 
InstalledRuleV6
在 fuchsia.net.routes/ipv6.fidl 中定义
已安装的 IPv6 路由规则。
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| rule_set_priority | RuleSetPriority | 规则集按规则集优先级排序,规则集不相交 它们之间没有交错规则 | 无默认设置 | 
| rule_index | RuleIndex | 规则集中的规则与规则集一起在本地排序 优先级,这定义了所有已安装规则的全局顺序。 | 无默认设置 | 
| selector | RuleSelectorV6 | 规则的选择器部分,如果选择器 与数据包不匹配。 | 无默认设置 | 
| action | RuleAction | 规则的操作部分,描述在发生选择器时应执行的操作部分 与数据包匹配。 | 无默认设置 | 
主要
在 fuchsia.net.routes/routes.fidl 中定义
<空>
已标记
在 fuchsia.net.routes/rules.fidl 中定义
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| mask | uint32 | 在与  | 无默认设置 | 
| between | Between | 该标记位于指定范围之间。 | 无默认设置 | 
RouteTargetV4
在 fuchsia.net.routes/ipv4.fidl 中定义
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| outbound_interface | fuchsia.net/InterfaceId | 目标的出站接口的接口 ID。 | 无默认设置 | 
| next_hop | fuchsia.net/Ipv4Address? | 目标的可选下一个跃点。地址(如提供) 必须是单播地址。 | 无默认设置 | 
RouteTargetV6
在 fuchsia.net.routes/ipv6.fidl 中定义
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| outbound_interface | fuchsia.net/InterfaceId | 目标的出站接口的接口 ID。 | 无默认设置 | 
| next_hop | fuchsia.net/Ipv6Address? | 目标的可选下一个跃点。地址(如提供) 必须是单播地址。 | 无默认设置 | 
RouteV4
在 fuchsia.net.routes/ipv4.fidl 中定义
RouteV4 指定 IPv4 网络路由。
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| destination | fuchsia.net/Ipv4AddressWithPrefix | 路由的目标子网。制定移交决策时 对于给定数据包,其目标形成时间最长的路由 系统将选择匹配前缀,路线的 指标。 | 无默认设置 | 
| action | RouteActionV4 | 与此路由匹配的数据包将应用指定操作 。 | 无默认设置 | 
| properties | RoutePropertiesV4 | IPv4 路由的其他属性。 | 无默认设置 | 
RouteV6
在 fuchsia.net.routes/ipv6.fidl 中定义
RouteV6 指定 IPv6 网络路由。
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| destination | fuchsia.net/Ipv6AddressWithPrefix | 路由的目标子网。制定移交决策时 对于给定数据包,其目标形成时间最长的路由 系统将选择匹配前缀,路线的 指标。 | 无默认设置 | 
| action | RouteActionV6 | 与此路由匹配的数据包将应用指定操作 。 | 无默认设置 | 
| properties | RoutePropertiesV6 | IPv6 路由的其他属性。 | 无默认设置 | 
State_GetRouteTableName_Response
在 fuchsia.net.routes/routes.fidl 中定义
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| table_name | TableName | 无默认设置 | 
State_Resolve_Response
在 fuchsia.net.routes/routes.fidl 中定义
| 字段 | 类型 | 说明 | 默认 | 
|---|---|---|---|
| result | Resolved | 已解析的路由。 包含“下一个跃点”的信息或直接目标 即路线解析产生的结果。已解析的路由 在所请求目的地的上下文中有意义。 | 无默认设置 | 
已取消标记
在 fuchsia.net.routes/rules.fidl 中定义
<空>
无法连接
在 fuchsia.net.routes/rules.fidl 中定义
<空>
精英
State_GetRouteTableName_Error 严格
类型:uint32
在 fuchsia.net.routes/routes.fidl 中定义
| 名称 | 值 | 说明 | 
|---|---|---|
| NO_TABLE | 1 | 
表
BaseSelector
在 fuchsia.net.routes/rules.fidl 中定义
可同时应用于 IPv4 和 IPv6 数据包的常用选择器。
如果呈现的所有字段都与 相应的属性
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | locally_generated | bool | 当且仅当数据包是本地生成的时才匹配数据包。 | 
| 2 | bound_device | InterfaceSelector | 当且仅当数据包通过  | 
| 3 | mark_1_selector | MarkSelector | MARK_1 网域的选择器。 | 
| 4 | mark_2_selector | MarkSelector | MARK_2 网域的选择器。 | 
目的地
在 fuchsia.net.routes/routes.fidl 中定义
描述广告网络目标的地址和标识符的集合。
Destination 是“下一个跃点”用于路由数据包
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | address | fuchsia.net/IpAddress | 目的地的 IP 地址。 | 
| 2 | mac | fuchsia.net/MacAddress | 目的地的 MAC 地址。仅当目的地位于 链接。 | 
| 3 | interface_id | fuchsia.net/InterfaceId | 可访问目的地的接口标识符。 | 
| 4 | source_address | fuchsia.net/IpAddress | 用于与目标位置通信的首选本地 IP 地址。 | 
EffectiveRouteProperties
在 fuchsia.net.routes/routes.fidl 中定义
系统中安装的路线的有效属性。
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | metric | fuchsia.net/RouteMetric | 路由的有效指标,取决于路由的
SpecifiedRouteProperties。如果  | 
InstalledRouteV4
在 fuchsia.net.routes/ipv4.fidl 中定义
InstalledRouteV4 指定安装在
系统路由表
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | route | RouteV4 | 路线。 | 
| 2 | effective_properties | EffectiveRouteProperties | 路线的有效属性。 | 
| 3 | table_id | TableId | 此路由所属表的 ID。 | 
InstalledRouteV6
在 fuchsia.net.routes/ipv6.fidl 中定义
InstalledRouteV6 指定安装在
系统路由表
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | route | RouteV6 | 路线。 | 
| 2 | effective_properties | EffectiveRouteProperties | 路线的有效属性。 | 
| 3 | table_id | TableId | 此路由所属表的 ID。 | 
RoutePropertiesV4
在 fuchsia.net.routes/ipv4.fidl 中定义
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | specified_properties | SpecifiedRouteProperties | 路线的指定属性。 | 
RoutePropertiesV6
在 fuchsia.net.routes/ipv6.fidl 中定义
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | specified_properties | SpecifiedRouteProperties | 路线的指定属性。 | 
RuleSelectorV4
在 fuchsia.net.routes/ipv4.fidl 中定义
用于匹配数据包的规则的选择器部分。
如果呈现的所有字段都与 相应属性。
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | from | fuchsia.net/Ipv4AddressWithPrefix | 匹配数据包的来源地址是否来自子网。 | 
| 2 | base | BaseSelector | 其他 IP 版本通用的选择器。 | 
RuleSelectorV6
在 fuchsia.net.routes/ipv6.fidl 中定义
用于匹配数据包的规则的选择器部分。
如果呈现的所有字段都与 相应属性。
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | from | fuchsia.net/Ipv6AddressWithPrefix | 匹配数据包的来源地址是否来自子网。 | 
| 2 | base | BaseSelector | 其他 IP 版本通用的选择器。 | 
RuleWatcherOptionsV4
在 fuchsia.net.routes/ipv4.fidl 中定义
| 序数 | 字段 | 类型 | 说明 | 
|---|
RuleWatcherOptionsV6
在 fuchsia.net.routes/ipv6.fidl 中定义
| 序数 | 字段 | 类型 | 说明 | 
|---|
SpecifiedRouteProperties
在 fuchsia.net.routes/routes.fidl 中定义
在生成 路由已创建。
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | metric | SpecifiedMetric | 路由的有效指标将由下列任一值决定 。 | 
WatcherOptionsV4
在 fuchsia.net.routes/ipv4.fidl 中定义
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | table_interest | TableInterest | 过滤表上与“ 如果不存在,则解读为  | 
WatcherOptionsV6
在 fuchsia.net.routes/ipv6.fidl 中定义
| 序数 | 字段 | 类型 | 说明 | 
|---|---|---|---|
| 1 | table_interest | TableInterest | 过滤表上与“ 如果不存在,则解读为  | 
联合体
EventV4 柔性环境
在 fuchsia.net.routes/ipv4.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | existing | InstalledRouteV4 | 监控开始时已经存在的路线。 | 
| 2 | idle | Empty | 哨兵值,表明不会再有  | 
| 3 | added | InstalledRouteV4 | 在观看时添加的路线。 | 
| 4 | removed | InstalledRouteV4 | 观看时删除的路线。 | 
EventV6 柔性环境
在 fuchsia.net.routes/ipv6.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | existing | InstalledRouteV6 | 监控开始时已经存在的路线。 | 
| 2 | idle | Empty | 哨兵值,表明不会再有  | 
| 3 | added | InstalledRouteV6 | 在观看时添加的路线。 | 
| 4 | removed | InstalledRouteV6 | 观看时删除的路线。 | 
InterfaceSelector 柔性
在 fuchsia.net.routes/rules.fidl 中定义
与传出数据包的源接口匹配的选择器。
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | device_name | fuchsia.net.interfaces/Name | 当名称匹配时匹配设备。 该名称不是模式或正则表达式,而是需要与 要选择的规则 | 
MarkSelector 柔性
在 fuchsia.net.routes/rules.fidl 中定义
要用于标记值的选择器。
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | unmarked | Unmarked | 该商标域名没有标志。 | 
| 2 | marked | Marked | 
已解决严格
在 fuchsia.net.routes/routes.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | direct | Destination | 可以直接到达所请求的目的地。 | 
| 2 | gateway | Destination | 可以通过网关到达请求的目的地,因此 下一个跃点是网关 | 
RouteActionV4 柔性环境
在 fuchsia.net.routes/ipv4.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | forward | RouteTargetV4 | 将数据包转发到指定目标。 | 
RouteActionV6 柔性
在 fuchsia.net.routes/ipv6.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | forward | RouteTargetV6 | 将数据包转发到指定目标。 | 
RuleAction 灵活
在 fuchsia.net.routes/rules.fidl 中定义
在选择器匹配时,规则的操作。
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | lookup | TableId | 在指定的路由表中查找路由。如果没有匹配的 路由,查询会继续考虑 下一条规则。 | 
| 2 | unreachable | Unreachable | 无法访问返回网络。这与如果使用  | 
RuleEventV4 柔性环境
在 fuchsia.net.routes/ipv4.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | existing | InstalledRuleV4 | 观看开始时就已存在的规则。 | 
| 2 | idle | Empty | 哨兵值,表明不会再有  | 
| 3 | added | InstalledRuleV4 | 观看时添加的规则。 | 
| 4 | removed | InstalledRuleV4 | 观看时删除的规则。 | 
RuleEventV6 柔性环境
在 fuchsia.net.routes/ipv6.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | existing | InstalledRuleV6 | 观看开始时就已存在的规则。 | 
| 2 | idle | Empty | 哨兵值,表明不会再有  | 
| 3 | added | InstalledRuleV6 | 观看时添加的规则。 | 
| 6 | removed | InstalledRuleV6 | 观看时删除的规则。 | 
SpecifiedMetric
在 fuchsia.net.routes/routes.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | explicit_metric | fuchsia.net/RouteMetric | 该路由的指标将是此明确指定的值。 | 
| 2 | inherited_from_interface | Empty | 该路由的指标继承自其出站接口,并且 将跟踪该值在整个路线生命周期内的变化。 如果客户端希望分流 并负责“哪条路线最佳”发送到系统。 | 
State_GetRouteTableName_Result 严格
在 fuchsia.net.routes/routes.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | response | State_GetRouteTableName_Response | |
| 2 | err | State_GetRouteTableName_Error | 
State_Resolve_Result 严格
在 fuchsia.net.routes/routes.fidl 中定义
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | response | State_Resolve_Response | |
| 2 | err | zx/Status | 
TableInterest 柔性环境
在 fuchsia.net.routes/routes.fidl 中定义
指定观察者感兴趣的表。
| 序数 | 变体 | 类型 | 说明 | 
|---|---|---|---|
| 1 | only | TableId | 仅监控指定表中的事件。 | 
| 2 | main | Main | 在不知道表格 ID 的情况下在主表格上观看。 | 
| 3 | all | All | 监视所有路由表。 | 
常量
| 名称 | 值 | 类型 | 说明 | 
|---|---|---|---|
| MAX_EVENTS | 512 | uint16 | 一次调用  添加时间:HEAD | 
| MAX_TABLE_NAME_LEN | 255 | uint64 | 表名称的最大长度。 添加时间:HEAD | 
别名
| 名称 | 值 | 说明 | 
|---|---|---|
| RuleIndex | uint32 | 提供的规则集中规则的索引。 同一  添加时间:HEAD | 
| RuleSetPriority | uint32 | 规则集的优先级,所有规则集都会以此为基础进行线性化。 RuleSetPriority 较小的  添加时间:HEAD | 
| TableId | uint32 | 路由表的 ID。 
 添加时间:HEAD | 
| TableName | string[MAX_TABLE_NAME_LEN] | 路由表的名称。 添加时间:HEAD |