fuchsia.net.routes

添加次数:7

协议

RuleWatcherV4

fuchsia.net.routes/ipv4.fidl 中定义

用于更改系统的 IPv4 规则表中的观察者协议。

添加了:HEAD

观看

用于观察路由规则更改的 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 规则表中的观察者协议。

添加了:HEAD

观看

用于观察路由规则更改的 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
添加了:HEAD

请求

名称类型
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 路由状态的可观测性。

添加了:HEAD

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 路由状态的可观测性。

添加了:HEAD

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 路由状态。

添加了:HEAD

观看

用于观察路由更改的 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 路由状态。

添加了:HEAD

观看

用于观察路由更改的 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 中定义

空值的占位符。

添加了:HEAD

<EMPTY>

InstalledRuleV4

fuchsia.net.routes/ipv4.fidl 中定义

已安装的 IPv4 路由规则。

添加了:HEAD

野战类型说明默认
rule_set_priority RuleSetPriority

规则集按规则集的优先级进行排序,规则集不相交,并且它们之间没有交错规则。

无默认取景方式
rule_index RuleIndex

规则集中的规则在本地排序,与规则集优先级一起,定义所有已安装规则的全局顺序。

无默认取景方式
selector RuleSelectorV4

规则的选择器部分;如果选择器与数据包不匹配,则规则为空操作。

无默认取景方式
action RuleAction

规则的操作部分,描述当选择器与数据包匹配时要执行的操作。

无默认取景方式

InstalledRuleV6

fuchsia.net.routes/ipv6.fidl 中定义

已安装 IPv6 路由规则。

添加了:HEAD

野战类型说明默认
rule_set_priority RuleSetPriority

规则集按规则集的优先级进行排序,规则集不相交,并且它们之间没有交错规则。

无默认取景方式
rule_index RuleIndex

规则集中的规则在本地排序,与规则集优先级一起,定义所有已安装规则的全局顺序。

无默认取景方式
selector RuleSelectorV6

规则的选择器部分;如果选择器与数据包不匹配,则规则为空操作。

无默认取景方式
action RuleAction

规则的操作部分,描述当选择器与数据包匹配时要执行的操作。

无默认取景方式

已标记

fuchsia.net.routes/rules.fidl 中定义

野战类型说明默认
mask uint32

在与 between 中的范围进行比较之前要应用的掩码。

无默认取景方式
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 网络路由。

添加了:HEAD

野战类型说明默认
destination fuchsia.net/Ipv4AddressWithPrefix

路由的目标子网。在为给定数据包做出路由决策时,将选择目标构成最长匹配前缀的路由,并且按该路由的指标打断平局。

无默认取景方式
action RouteActionV4

系统将对与此路由匹配的数据包应用指定的操作。

无默认取景方式
properties RoutePropertiesV4

IPv4 路由的其他属性。

无默认取景方式

RouteV6

fuchsia.net.routes/ipv6.fidl 中定义

RouteV6 指定 IPv6 网络路由。

添加了:HEAD

野战类型说明默认
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 中定义

名称说明
1

BaseSelector

fuchsia.net.routes/rules.fidl 中定义

可应用于 IPv4 和 IPv6 数据包的通用选择器。

如果所有现有字段都与相应的属性匹配,则选择器与数据包匹配。

添加了:HEAD

序数野战类型说明
locally_generated bool

如果数据包是在本地生成的,则匹配该数据包。

bound_device fuchsia.net/InterfaceId

当且仅当套接字是使用 SO_BINDTODEVICE 绑定到设备的套接字时匹配该数据包。

mark_1_selector MarkSelector

MARK_1 网域的选择器。

mark_2_selector MarkSelector

MARK_2 网域的选择器。

目的地

fuchsia.net.routes/routes.fidl 中定义

描述网络目的地的地址和标识符集合。

Destination 是路由数据包的“下一个跃点”。

序数野战类型说明
address fuchsia.net/IpAddress

目的地的 IP 地址。

mac fuchsia.net/MacAddress

目的地的 MAC 地址。仅当目的地位于需要 MAC 地址的链路上时,才设置此字段。

interface_id fuchsia.net/InterfaceId

可通过该接口访问目的地的接口标识符。

source_address fuchsia.net/IpAddress

用于与目标通信的首选本地 IP 地址。

EffectiveRouteProperties

fuchsia.net.routes/routes.fidl 中定义

系统中安装的路线的有效属性。

添加了:HEAD

序数野战类型说明
metric fuchsia.net/RouteMetric

路由的有效指标,取决于路由的 SpecifiedRouteProperties 的值。如果 specified_metricexplicit_metric,则此值与提供的值相同;如果 specified_metricinherited_from_interface,则此值将是接口的路由指标。

InstalledRouteV4

fuchsia.net.routes/ipv4.fidl 中定义

InstalledRouteV4 指定安装在系统路由表中的 IPv4 网络路由。

添加了:HEAD

序数野战类型说明
route RouteV4

路线。

effective_properties EffectiveRouteProperties

路线的有效属性。

table_id TableId

此路由所属表的 ID。

InstalledRouteV6

fuchsia.net.routes/ipv6.fidl 中定义

InstalledRouteV6 指定安装在系统路由表中的 IPv6 网络路由。

添加了:HEAD

序数野战类型说明
route RouteV6

路线。

effective_properties EffectiveRouteProperties

路线的有效属性。

table_id TableId

此路由所属表的 ID。

RoutePropertiesV4

fuchsia.net.routes/ipv4.fidl 中定义

序数野战类型说明
specified_properties SpecifiedRouteProperties

路线的指定属性。

RoutePropertiesV6

fuchsia.net.routes/ipv6.fidl 中定义

序数野战类型说明
specified_properties SpecifiedRouteProperties

路线的指定属性。

RuleSelectorV4

fuchsia.net.routes/ipv4.fidl 中定义

规则中用于匹配数据包的选择器部分。

如果所有现有字段都与相应的属性匹配,则选择器与数据包匹配。

添加了:HEAD

序数野战类型说明
from fuchsia.net/Ipv4AddressWithPrefix

匹配数据包的来源地址是否来自子网。

base BaseSelector

IP 版本之间常用的其余选择器。

RuleSelectorV6

fuchsia.net.routes/ipv6.fidl 中定义

规则中用于匹配数据包的选择器部分。

如果所有现有字段都与相应的属性匹配,则选择器与数据包匹配。

添加了:HEAD

序数野战类型说明
from fuchsia.net/Ipv6AddressWithPrefix

匹配数据包的来源地址是否来自子网。

base BaseSelector

IP 版本之间常用的其余选择器。

RuleWatcherOptionsV4

fuchsia.net.routes/ipv4.fidl 中定义

序数野战类型说明

RuleWatcherOptionsV6

fuchsia.net.routes/ipv6.fidl 中定义

序数野战类型说明

SpecifiedRouteProperties

fuchsia.net.routes/routes.fidl 中定义

创建路由时明确指定的路由属性。

添加了:HEAD

序数野战类型说明
metric SpecifiedMetric

路由的有效指标将由下面指定的值确定。

WatcherOptionsV4

fuchsia.net.routes/ipv4.fidl 中定义

序数野战类型说明
table_id TableId

仅监控指定表中的事件。

WatcherOptionsV6

fuchsia.net.routes/ipv6.fidl 中定义

序数野战类型说明
table_id TableId

仅监控指定表中的事件。

联合

EventV4 灵活

fuchsia.net.routes/ipv4.fidl 中定义

序数变体类型说明
existing InstalledRouteV4

监控开始时已存在的路由。

idle Empty

标记值,表示不会再收到 existing 事件。

added InstalledRouteV4

在观看过程中添加的路线。

removed InstalledRouteV4

在观看过程中被移除的路线。

EventV6 灵活

fuchsia.net.routes/ipv6.fidl 中定义

序数变体类型说明
existing InstalledRouteV6

监控开始时已存在的路由。

idle Empty

标记值,表示不会再收到 existing 事件。

added InstalledRouteV6

在观看过程中添加的路线。

removed InstalledRouteV6

在观看过程中被移除的路线。

MarkSelector 灵活

fuchsia.net.routes/rules.fidl 中定义

要针对标记值使用的选择器。

添加了:HEAD
序数变体类型说明
unmarked Unmarked

此标记网域没有标记。

marked Marked

已解决严格问题

fuchsia.net.routes/routes.fidl 中定义

序数变体类型说明
direct Destination

请求的目的地可以直接访问。

gateway Destination

所请求目的地可通过网关到达,因此下一个跃点是网关。

RouteActionV4 灵活

fuchsia.net.routes/ipv4.fidl 中定义

序数变体类型说明
forward RouteTargetV4

将数据包转发到指定的目标。

RouteActionV6 灵活

fuchsia.net.routes/ipv6.fidl 中定义

序数变体类型说明
forward RouteTargetV6

将数据包转发到指定的目标。

RuleAction 灵活

fuchsia.net.routes/rules.fidl 中定义

选择器匹配时规则的操作。

添加了:HEAD
序数变体类型说明
lookup TableId

在指定的路线表中查找路线。如果目标表中没有匹配的路由,则查询将继续考虑下一条规则。

unreachable Unreachable

无法访问返回网络。这与如果 lookup 表为空或没有匹配路由相反,则此决策是最终决策,并阻止查找过程继续。

RuleEventV4 灵活

fuchsia.net.routes/ipv4.fidl 中定义

序数变体类型说明
existing InstalledRuleV4

开始观看时已存在的规则。

idle Empty

标记值,表示不会再收到 existing 事件。

added InstalledRuleV4

在观看过程中添加的规则。

removed InstalledRuleV4

在监控期间被移除的规则。

RuleEventV6 灵活

fuchsia.net.routes/ipv6.fidl 中定义

序数变体类型说明
existing InstalledRuleV6

开始观看时已存在的规则。

idle Empty

标记值,表示不会再收到 existing 事件。

added InstalledRuleV6

在观看过程中添加的规则。

removed InstalledRuleV6

在监控期间被移除的规则。

SpecifiedMetric 严格

fuchsia.net.routes/routes.fidl 中定义

序数变体类型说明
explicit_metric fuchsia.net/RouteMetric

该路由的指标将是明确指定的值。

inherited_from_interface Empty

路由的指标继承自其出站接口,并且会在该值在路由的整个生命周期内发生更改时跟踪此值。如果客户端希望将“哪个路由最佳”的责任分给系统,则可以选择此方法。

State_GetRouteTableName_Result strict

fuchsia.net.routes/routes.fidl 中定义

序数变体类型说明
response State_GetRouteTableName_Response
err State_GetRouteTableName_Error

State_Resolve_Result 严格

fuchsia.net.routes/routes.fidl 中定义

序数变体类型说明
response State_Resolve_Response
err zx/Status

常量

名称类型说明
MAX_EVENTS 512 uint16

一次调用 Watch() 可返回的事件数上限。

添加了:HEAD
MAX_TABLE_NAME_LEN 255 uint64

表名称的长度上限。

添加了:HEAD

别名

名称说明
RuleIndex uint32

提供的规则集中规则的索引。

同一 RuleSet 中的规则根据索引进行 oreder 运算。索引 0 处的规则在整个集合中最先评估。

添加了:HEAD
RuleSetPriority uint32

规则集的优先级,所有规则集在此基础上线性化。

具有较小 RuleSetPriorityRuleSet 规则将先执行具有较大 RuleSetPriorityRuleSet 规则。也就是说,优先级为 0 的 RuleSet 具有最高优先级。

添加了:HEAD
TableId uint32

路由表的 ID。

TableId 是路由表的不可重复使用的全局唯一标识符。

添加了:HEAD
TableName string[MAX_TABLE_NAME_LEN]

路由表的名称。

添加了:HEAD