fuchsia.posix.socket.packet

新增:11

协议

提供商

在 fuchsia.posix.socket.packet/socket.fidl 中定义

数据包套接字提供程序。

套接字

请求数据包套接字。

  • request kind:要创建的数据包套接字类型。
  • 响应socket数据包套接字。

请求

名称类型
kind Kind

响应

名称类型
payload Provider_Socket_Result

SocketWithOptions

请求创建具有创建选项的数据包套接字。

  • request kind:要创建的数据包套接字类型。
  • 请求为套接字创建 opts 选项。
  • 响应socket数据包套接字。
Added: HEAD

请求

名称类型
kind Kind
opts fuchsia.posix.socket/SocketCreationOptions

响应

名称类型
payload Provider_SocketWithOptions_Result

套接字

在 fuchsia.posix.socket.packet/socket.fidl 中定义

数据包套接字。

此接口本质上是 POSIX。

此类型的所有方法都是非阻塞的;其确切行为与 Linux 对应方法一致。

警告:此协议尚未准备好供客户端直接使用。 相反,客户端应使用 BSD 套接字 API 与套接字进行交互。 我们计划大幅更改此协议,直接与此协议耦合的客户端将使这些更改更加困难。

AttachBpfFilterUnsafe

附加指定的 eBPF 过滤器。过滤器应使用 2 个参数进行验证

  1. 指向大小为 0 的数据包的指针,即不直接访问(仅使用 cBPF 数据包加载指令)。
  2. 数据包大小 (BPF_LOAD)。 不支持辅助函数和映射。
Added: HEAD

请求

名称类型
code vector<uint64>:4096

响应

名称类型
payload Socket_AttachBpfFilterUnsafe_Result

装订

将套接字绑定到协议和/或接口。

  • 请求 protocol 套接字的新协议关联。
  • 请求 bound_interface_id 套接字的新接口绑定。

请求

名称类型
protocol ProtocolAssociation?
bound_interface_id BoundInterfaceId

响应

名称类型
payload Socket_Bind_Result

克隆

添加:26

请求

名称类型
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。

添加:20

请求

<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。

Added: HEAD

请求

<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 具有多个标记网域,并且每个标记都可以在每个网域中独立检索。

Added: HEAD

请求

名称类型
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,则会清除绑定的接口。

新增:20

请求

名称类型
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 具有多个标记网域,并且每个标记都可以在每个网域中独立设置。

Added: HEAD

请求

名称类型
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。

新增:30

请求

名称类型
value fuchsia.posix.socket/ReusePortOption

响应

名称类型
payload fuchsia.posix.socket/BaseSocket_SetReusePort_Result

SetReusePortDeprecated

已弃用:30 新增:30

请求

名称类型
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 中定义

硬件的类型。

名称值说明
1

仅在网络层运行的硬件;纯 L3 接口。

此类型的硬件没有 L2 标头/寻址。

2

在基于以太网的链路上运行的硬件。

3

用于环回数据包的硬件。

Kind strict

类型:uint32

在 fuchsia.posix.socket.packet/socket.fidl 中定义

一种数据包套接字。

名称值说明
1

一种使用网络层数据包运行的数据包套接字。

PacketType strict

类型:uint32

在 fuchsia.posix.socket.packet/socket.fidl 中定义

数据包的类型。

名称值说明
1

已到达目的地的数据包。

2

广播的数据包。

3

多播的数据包。

4

到达非目标主机的网络数据包。

5

在本地接口上发送的数据包,无论其发送方式如何(单播、多播、广播)。

TABLES

RecvControlData

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数字段类型说明
socket fuchsia.posix.socket/SocketRecvControlData

套接字级辅助数据。

SendControlData

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数字段类型说明
socket fuchsia.posix.socket/SocketSendControlData

套接字级辅助数据。

SocketDescribeResponse 资源

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数字段类型说明
event handle<eventpair>

指示有关套接字状态的其他信息,例如就绪状态或关闭状态。

UNIONS

BoundInterface strict

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
all Empty
specified InterfaceProperties

BoundInterfaceId strict

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
all Empty
specified fuchsia.net/InterfaceId

HardwareAddress flexible

在 fuchsia.posix.socket.packet/socket.fidl 中定义

硬件地址。

序数变体类型说明
none Empty

表示硬件不支持链路层寻址。

eui48 fuchsia.net/MacAddress

基于 EUI-48 的地址。

ProtocolAssociation strict

在 fuchsia.posix.socket.packet/socket.fidl 中定义

数据包套接字的协议关联。

序数变体类型说明
all Empty

与所有协议的关联。

specified Protocol

与协议的关联。

Provider_SocketWithOptions_Result strict resource

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
response Provider_SocketWithOptions_Response
err fuchsia.posix/Errno

Provider_Socket_Result strict resource

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
response Provider_Socket_Response
err fuchsia.posix/Errno

Socket_AttachBpfFilterUnsafe_Result strict

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
response Socket_AttachBpfFilterUnsafe_Response
err fuchsia.posix/Errno

Socket_Bind_Result strict

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
response Socket_Bind_Response
err fuchsia.posix/Errno

Socket_GetInfo_Result strict

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
response Socket_GetInfo_Response
err fuchsia.posix/Errno

Socket_RecvMsg_Result strict

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
response Socket_RecvMsg_Response
err fuchsia.posix/Errno

Socket_SendMsg_Result strict

在 fuchsia.posix.socket.packet/socket.fidl 中定义

序数变体类型说明
response Socket_SendMsg_Response
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 定义。