协议
RuleWatcherV4
在 fuchsia.net.routes/ipv4.fidl 中定义
用于更改系统的 IPv4 规则表中的观察者协议。
观看
用于观察路由规则更改的 Hanging-Get 样式 API。
客户端一次只能有一个待处理的 Watch
调用。在请求已处于待处理状态时调用 Watch
会导致协议关闭。
前 N 个事件将始终为 existing
,其中 N 是初始化该协议的服务器端时已存在的 IPv4 规则的数量。以下事件将为 idle
,表明 existing
事件的结束。此时,客户端已观察到所有现有状态,并且永远不会再观察到 existing
事件。
- 响应
events
最多包含MAX_EVENTS
个事件的向量。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
events |
vector<RuleEventV4>[512]
|
RuleWatcherV6
在 fuchsia.net.routes/ipv6.fidl 中定义
用于更改系统的 IPv6 规则表中的观察者协议。
观看
用于观察路由规则更改的 Hanging-Get 样式 API。
客户端一次只能有一个待处理的 Watch
调用。在请求已处于待处理状态时调用 Watch
会导致协议关闭。
前 N 个事件始终为 existing
,其中 N 是初始化该协议的服务器端时已存在的 IPv6 规则的数量。以下事件将为 idle
,表明 existing
事件的结束。此时,客户端已观察到所有现有状态,并且永远不会再观察到 existing
事件。
- 响应
events
最多包含MAX_EVENTS
个事件的向量。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
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 是该协议的服务器端初始化时已存在的 IPv4 路由的数量。以下事件将为 idle
,表明 existing
事件的结束。此时,客户端已观察到所有现有状态,并且永远不会再观察到 existing
事件。
系统会批量返回最多 MAX_EVENTS
个事件。批次大小/边界与其内容之间没有关联:服务器将 existing
事件块拆分为多个批次是完全有效的。客户端应将此 API 视为提供事件流,其中批处理用于减少系统上的 IPC 负载。
- 响应
events
最多包含MAX_EVENTS
个事件的向量。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
events |
vector<EventV4>[512]
|
WatcherV6
在 fuchsia.net.routes/ipv6.fidl 中定义
一种观察器协议,用于更改系统的 IPv6 路由状态。
观看
用于观察路由更改的 Hanging-Get 样式 API。
客户端一次只能有一个待处理的 Watch
调用。在请求已处于待处理状态时调用 Watch
会导致协议关闭。
前 N 个事件将始终为 existing
,其中 N 是该协议的服务器端初始化时已存在的 IPv6 路由的数量。以下事件将为 idle
,表明 existing
事件的结束。此时,客户端已观察到所有现有状态,并且永远不会再观察到 existing
事件。
系统会批量返回最多 MAX_EVENTS
个事件。批次大小/边界与其内容之间没有关联:服务器将 existing
事件块拆分为多个批次是完全有效的。客户端应将此 API 视为提供事件流,其中批处理用于减少系统上的 IPC 负载。
- 响应
events
最多包含MAX_EVENTS
个事件的向量。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
events |
vector<EventV6>[512]
|
结构
介于
在 fuchsia.net.routes/rules.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
start |
uint32
|
范围起始值(含边界值)。 |
无默认取景方式 |
end |
uint32
|
范围的结束日期(含)。 |
无默认取景方式 |
空白
在 fuchsia.net.routes/routes.fidl 中定义
空值的占位符。
<EMPTY>
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/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 中定义
<EMPTY>
无法连接
在 fuchsia.net.routes/rules.fidl 中定义
<EMPTY>
枚举
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 |
fuchsia.net/InterfaceId
|
当且仅当套接字是使用 |
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 地址。仅当目的地位于需要 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
指定安装在系统路由表中的 IPv4 网络路由。
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
1 |
route |
RouteV4
|
路线。 |
2 |
effective_properties |
EffectiveRouteProperties
|
路线的有效属性。 |
3 |
table_id |
TableId
|
此路由所属表的 ID。 |
InstalledRouteV6
在 fuchsia.net.routes/ipv6.fidl 中定义
InstalledRouteV6
指定安装在系统路由表中的 IPv6 网络路由。
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
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_id |
TableId
|
仅监控指定表中的事件。 |
WatcherOptionsV6
在 fuchsia.net.routes/ipv6.fidl 中定义
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
1 |
table_id |
TableId
|
仅监控指定表中的事件。 |
联合
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
|
在观看过程中被移除的路线。 |
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 strict
在 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
|
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
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
|