协议
提供商
在 fuchsia.posix.socket.packet/socket.fidl 中定义
数据包套接字提供程序。
套接字
请求数据包套接字。
- request
kind:要创建的数据包套接字类型。
- 响应
socket数据包套接字。
请求
| 名称 | 类型 |
|---|---|
kind |
Kind
|
响应
| 名称 | 类型 |
|---|---|
payload |
Provider_Socket_Result
|
SocketWithOptions
请求创建具有创建选项的数据包套接字。
- request
kind:要创建的数据包套接字类型。 - 请求为套接字创建
opts选项。
- 响应
socket数据包套接字。
请求
| 名称 | 类型 |
|---|---|
kind |
Kind
|
opts |
fuchsia.posix.socket/SocketCreationOptions
|
响应
| 名称 | 类型 |
|---|---|
payload |
Provider_SocketWithOptions_Result
|
套接字
在 fuchsia.posix.socket.packet/socket.fidl 中定义
数据包套接字。
此接口本质上是 POSIX。
此类型的所有方法都是非阻塞的;其确切行为与 Linux 对应方法一致。
警告:此协议尚未准备好供客户端直接使用。 相反,客户端应使用 BSD 套接字 API 与套接字进行交互。 我们计划大幅更改此协议,直接与此协议耦合的客户端将使这些更改更加困难。
AttachBpfFilterUnsafe
附加指定的 eBPF 过滤器。过滤器应使用 2 个参数进行验证
- 指向大小为 0 的数据包的指针,即不直接访问(仅使用 cBPF 数据包加载指令)。
- 数据包大小 (BPF_LOAD)。 不支持辅助函数和映射。
请求
| 名称 | 类型 |
|---|---|
code |
vector<uint64>:4096
|
响应
| 名称 | 类型 |
|---|---|
payload |
Socket_AttachBpfFilterUnsafe_Result
|
装订
将套接字绑定到协议和/或接口。
- 请求
protocol套接字的新协议关联。 - 请求
bound_interface_id套接字的新接口绑定。
请求
| 名称 | 类型 |
|---|---|
protocol |
ProtocolAssociation?
|
bound_interface_id |
BoundInterfaceId
|
响应
| 名称 | 类型 |
|---|---|
payload |
Socket_Bind_Result
|
克隆
请求
| 名称 | 类型 |
|---|---|
request |
server_end:fuchsia.unknown/Cloneable
|
关闭
终止连接。
调用 Close 后,客户端不得发送任何其他请求。
服务器在发送状态响应后,应关闭连接,无论状态如何,且不发送墓志铭。
关闭通道的客户端端点在语义上应等同于调用 Close,而无需知道关闭何时完成或其状态。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.unknown/Closeable_Close_Result
|
描述
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
SocketDescribeResponse
|
GetAcceptConn
获取 SOL_SOCKET -> SO_ACCEPTCONN。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetAcceptConn_Result
|
GetBindToDevice
获取 SOL_SOCKET -> SO_BINDTODEVICE。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetBindToDevice_Result
|
GetBindToInterfaceIndex
获取 SOL_SOCKET -> SO_BINDTOIFINDEX。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetBindToInterfaceIndex_Result
|
GetBroadcast
获取 SOL_SOCKET -> SO_BROADCAST。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetBroadcast_Result
|
GetCookie
获取 SOL_SOCKET -> SO_COOKIE。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetCookie_Result
|
GetError
获取 SOL_SOCKET -> SO_ERROR。
如果套接字上设置了错误,则返回最后一个错误。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetError_Result
|
GetInfo
返回套接字的属性。
- 响应
kind套接字的Kind。 - 响应
protocol套接字的协议关联(如果已关联)。 - 套接字接口绑定的
bound_interface属性。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Socket_GetInfo_Result
|
GetKeepAlive
获取 SOL_SOCKET -> SO_KEEPALIVE。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetKeepAlive_Result
|
GetLinger
获取 SOL_SOCKET -> SO_LINGER。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetLinger_Result
|
GetMark
例如,SOL_SOCKET -> SO_MARK。主要区别在于,与标准 SO_MARK 不同,此 API 具有多个标记网域,并且每个标记都可以在每个网域中独立检索。
请求
| 名称 | 类型 |
|---|---|
domain |
fuchsia.net/MarkDomain
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetMark_Result
|
GetNoCheck
获取 SOL_SOCKET -> SO_NO_CHECK。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetNoCheck_Result
|
GetOutOfBandInline
获取 SOL_SOCKET -> SO_OOBINLINE。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetOutOfBandInline_Result
|
GetReceiveBuffer
获取 SOL_SOCKET -> SO_RCVBUF。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetReceiveBuffer_Result
|
GetReuseAddress
获取 SOL_SOCKET -> SO_REUSEADDR。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetReuseAddress_Result
|
GetReusePort
获取 SOL_SOCKET -> SO_REUSEPORT。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetReusePort_Result
|
GetSendBuffer
获取 SOL_SOCKET -> SO_SNDBUF。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetSendBuffer_Result
|
GetTimestamp
获取 SOL_SOCKET -> SO_TIMESTAMP 或 SO_TIMESTAMPNS。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetTimestamp_Result
|
查询
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
protocol |
vector<uint8>
|
RecvMsg
从套接字接收消息。
want_packet_info请求有关要返回的数据包的信息。- 请求
data_len响应数据缓冲区的最大允许长度。 - 请求
want_control请求返回辅助数据。 - 请求
flags标志。
- 响应
packet_info数据包的相关信息(如果请求)。 - 回复
data消息。 - 响应
control控制消息(如果请求)。 - 响应
truncated指示返回的消息是否被截断。
请求
| 名称 | 类型 |
|---|---|
want_packet_info |
bool
|
data_len |
uint32
|
want_control |
bool
|
flags |
fuchsia.posix.socket/RecvMsgFlags
|
响应
| 名称 | 类型 |
|---|---|
payload |
Socket_RecvMsg_Result
|
SendMsg
通过套接字发送消息。
- 请求有关数据包的
packet_info信息。 - 请求
data消息。 - 请求
control辅助数据。 - 请求
flags标志。
请求
| 名称 | 类型 |
|---|---|
packet_info |
PacketInfo?
|
data |
vector<uint8>
|
control |
SendControlData
|
flags |
fuchsia.posix.socket/SendMsgFlags
|
响应
| 名称 | 类型 |
|---|---|
payload |
Socket_SendMsg_Result
|
SetBindToDevice
设置 SOL_SOCKET -> SO_BINDTODEVICE。
请求
| 名称 | 类型 |
|---|---|
value |
fuchsia.net.interfaces/Name
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetBindToDevice_Result
|
SetBindToInterfaceIndex
设置 SOL_SOCKET -> SO_BINDTOIFINDEX。
如果 value 为 0,则会清除绑定的接口。
请求
| 名称 | 类型 |
|---|---|
value |
fuchsia.net/InterfaceId
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetBindToInterfaceIndex_Result
|
SetBroadcast
设置 SOL_SOCKET -> SO_BROADCAST。
请求
| 名称 | 类型 |
|---|---|
value |
bool
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetBroadcast_Result
|
SetKeepAlive
设置 SOL_SOCKET -> SO_KEEPALIVE。
请求
| 名称 | 类型 |
|---|---|
value |
bool
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetKeepAlive_Result
|
SetLinger
设置 SOL_SOCKET -> SO_LINGER。
请求
| 名称 | 类型 |
|---|---|
linger |
bool
|
length_secs |
uint32
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetLinger_Result
|
SetMark
例如,设置 SOL_SOCKET -> SO_MARK。主要区别在于,与标准 SO_MARK 不同,此 API 具有多个标记网域,并且每个标记都可以在每个网域中独立设置。
请求
| 名称 | 类型 |
|---|---|
domain |
fuchsia.net/MarkDomain
|
mark |
fuchsia.posix.socket/OptionalUint32
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetMark_Result
|
SetNoCheck
设置 SOL_SOCKET -> SO_NO_CHECK。
请求
| 名称 | 类型 |
|---|---|
value |
bool
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetNoCheck_Result
|
SetOutOfBandInline
设置 SOL_SOCKET -> SO_OOBINLINE。
请求
| 名称 | 类型 |
|---|---|
value |
bool
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetOutOfBandInline_Result
|
SetReceiveBuffer
设置 SOL_SOCKET -> SO_RCVBUF。
请求
| 名称 | 类型 |
|---|---|
value_bytes |
uint64
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetReceiveBuffer_Result
|
SetReuseAddress
设置 SOL_SOCKET -> SO_REUSEADDR。
请求
| 名称 | 类型 |
|---|---|
value |
bool
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetReuseAddress_Result
|
SetReusePort
设置 SOL_SOCKET -> SO_REUSEPORT。
请求
| 名称 | 类型 |
|---|---|
value |
fuchsia.posix.socket/ReusePortOption
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetReusePort_Result
|
SetReusePortDeprecated
请求
| 名称 | 类型 |
|---|---|
value |
bool
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetReusePortDeprecated_Result
|
SetSendBuffer
设置 SOL_SOCKET -> SO_SNDBUF。
请求
| 名称 | 类型 |
|---|---|
value_bytes |
uint64
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetSendBuffer_Result
|
SetTimestamp
设为 SOL_SOCKET -> SO_TIMESTAMP 或 SO_TIMESTAMPNS。
请求
| 名称 | 类型 |
|---|---|
value |
fuchsia.posix.socket/TimestampOption
|
响应
| 名称 | 类型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetTimestamp_Result
|
STRUCTS
空白
在 fuchsia.posix.socket.packet/socket.fidl 中定义
<EMPTY>
InterfaceProperties
在 fuchsia.posix.socket.packet/socket.fidl 中定义
接口的属性。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
id |
fuchsia.net/InterfaceId
|
接口的 ID。 |
无默认应用 |
addr |
HardwareAddress
|
接口的硬件地址。 |
无默认应用 |
type |
HardwareType
|
接口的硬件类型。 |
无默认应用 |
PacketInfo
在 fuchsia.posix.socket.packet/socket.fidl 中定义
数据包的相关信息。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
protocol |
Protocol
|
无默认应用 | |
interface_id |
fuchsia.net/InterfaceId
|
无默认应用 | |
addr |
HardwareAddress
|
无默认应用 |
Provider_SocketWithOptions_Response 资源
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
socket |
client_end:Socket
|
无默认应用 |
Provider_Socket_Response 资源
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
socket |
client_end:Socket
|
无默认应用 |
RecvPacketInfo
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
packet_info |
PacketInfo
|
无默认应用 | |
packet_type |
PacketType
|
无默认应用 | |
interface_type |
HardwareType
|
无默认应用 |
Socket_AttachBpfFilterUnsafe_Response
在 fuchsia.posix.socket.packet/socket.fidl 中定义
<EMPTY>
Socket_Bind_Response
在 fuchsia.posix.socket.packet/socket.fidl 中定义
<EMPTY>
Socket_GetInfo_Response
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
kind |
Kind
|
无默认应用 | |
protocol |
ProtocolAssociation?
|
无默认应用 | |
bound_interface |
BoundInterface
|
无默认应用 |
Socket_RecvMsg_Response
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
packet_info |
RecvPacketInfo?
|
无默认应用 | |
data |
vector<uint8>
|
无默认应用 | |
control |
RecvControlData
|
无默认应用 | |
truncated |
uint32
|
无默认应用 |
Socket_SendMsg_Response
在 fuchsia.posix.socket.packet/socket.fidl 中定义
<EMPTY>
枚举
HardwareType strict
类型:uint32
在 fuchsia.posix.socket.packet/socket.fidl 中定义
硬件的类型。
| 名称 | 值 | 说明 |
|---|---|---|
NETWORK_ONLY |
1 |
仅在网络层运行的硬件;纯 L3 接口。 此类型的硬件没有 L2 标头/寻址。 |
ETHERNET |
2 |
在基于以太网的链路上运行的硬件。 |
LOOPBACK |
3 |
用于环回数据包的硬件。 |
Kind strict
类型:uint32
在 fuchsia.posix.socket.packet/socket.fidl 中定义
一种数据包套接字。
| 名称 | 值 | 说明 |
|---|---|---|
网络 |
1 |
一种使用网络层数据包运行的数据包套接字。 |
链接 |
2 |
使用链路层数据包运行的数据包套接字。 当数据包套接字属于此类型时,数据包会在网络和客户端之间原样传递。 |
PacketType strict
类型:uint32
在 fuchsia.posix.socket.packet/socket.fidl 中定义
数据包的类型。
| 名称 | 值 | 说明 |
|---|---|---|
HOST |
1 |
已到达目的地的数据包。 |
广播 |
2 |
广播的数据包。 |
MULTICAST |
3 |
多播的数据包。 |
OTHER_HOST |
4 |
到达非目标主机的网络数据包。 |
OUTGOING |
5 |
在本地接口上发送的数据包,无论其发送方式如何(单播、多播、广播)。 |
TABLES
RecvControlData
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
socket |
fuchsia.posix.socket/SocketRecvControlData
|
套接字级辅助数据。 |
SendControlData
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
socket |
fuchsia.posix.socket/SocketSendControlData
|
套接字级辅助数据。 |
SocketDescribeResponse 资源
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
event |
handle<eventpair>
|
指示有关套接字状态的其他信息,例如就绪状态或关闭状态。 |
UNIONS
BoundInterface strict
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
all |
Empty
|
|
2 |
specified |
InterfaceProperties
|
BoundInterfaceId strict
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
all |
Empty
|
|
2 |
specified |
fuchsia.net/InterfaceId
|
HardwareAddress flexible
在 fuchsia.posix.socket.packet/socket.fidl 中定义
硬件地址。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
none |
Empty
|
表示硬件不支持链路层寻址。 |
2 |
eui48 |
fuchsia.net/MacAddress
|
基于 EUI-48 的地址。 |
ProtocolAssociation strict
在 fuchsia.posix.socket.packet/socket.fidl 中定义
数据包套接字的协议关联。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
all |
Empty
|
与所有协议的关联。 |
2 |
specified |
Protocol
|
与协议的关联。 |
Provider_SocketWithOptions_Result strict resource
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Provider_SocketWithOptions_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Provider_Socket_Result strict resource
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Provider_Socket_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_AttachBpfFilterUnsafe_Result strict
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Socket_AttachBpfFilterUnsafe_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_Bind_Result strict
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Socket_Bind_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_GetInfo_Result strict
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Socket_GetInfo_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_RecvMsg_Result strict
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Socket_RecvMsg_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_SendMsg_Result strict
在 fuchsia.posix.socket.packet/socket.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Socket_SendMsg_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| SOCKET_PROTOCOL_NAME | fuchsia.posix.socket.packet/Socket |
String |
旧版协议名称。请改用生成的可检测协议名称。 已移除:29
|
别名
| 名称 | 值 | 说明 |
|---|---|---|
| 协议 |
uint16 |
网络层协议(位于链路层之上)。 值由 https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml 定义。 |