fuchsia.posix.socket.packet

添加:11

协议

提供商

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

数据包套接字提供程序。

套接字

请求数据包套接字。

  • 请求 kind 要创建的数据包套接字的类型。
  • socket:数据包套接字。

请求

名称类型
kind Kind

响应

名称类型
payload Provider_Socket_Result

套接字

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

数据包套接字。

此接口本质上是 POSIX。

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

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

装订

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

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

请求

名称类型
protocol ProtocolAssociation?
bound_interface_id BoundInterfaceId

响应

名称类型
payload Socket_Bind_Result

Clone2

请求

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

GetError

获取 SOL_SOCKET -> SO_ERROR。 如果套接字设置了错误,则返回最后一个错误。

请求

<EMPTY>

响应

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

GetInfo

返回套接字的属性。

  • 响应 kind 套接字的 Kind
  • response 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 具有多个标记域,每个标记可以在每个域中独立检索。

添加了:HEAD

请求

名称类型
domain fuchsia.posix.socket/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_TIMESTAMPSO_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 具有多个标记域,每个标记可以在每个域内单独设置。

添加了:HEAD

请求

名称类型
domain fuchsia.posix.socket/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 bool

响应

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

SetSendBuffer

设置 SOL_SOCKET -> SO_SNDBUF

请求

名称类型
value_bytes uint64

响应

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

SetTimestamp

设置 SOL_SOCKET -> SO_TIMESTAMPSO_TIMESTAMPNS

请求

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

响应

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

结构

空白

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_Socket_Response 资源

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

野战类型说明默认
socket Socket 无默认取景方式

RecvPacketInfo

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

野战类型说明默认
packet_info PacketInfo 无默认取景方式
packet_type PacketType 无默认取景方式
interface_type HardwareType 无默认取景方式

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 严格

类型:uint32

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

硬件的类型。

名称说明
1

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

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

2

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

3

环回数据包的硬件。

种类严格

类型:uint32

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

一种数据包套接字。

名称说明
1

处理网络层数据包的数据包套接字。

PacketType 严格

类型:uint32

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

数据包的类型。

名称说明
1

已到达目的地的数据包。

2

广播的数据包。

3

多播的数据包。

4

数据包已到达非目标主机。

5

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

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>

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

联合

BoundInterface 严格

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

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

BoundInterfaceId 严格

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

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

HardwareAddress 灵活

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

硬件地址。

序数变体类型说明
none Empty

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

eui48 fuchsia.net/MacAddress

基于 EUI-48 的地址。

ProtocolAssociation 严格

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

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

序数变体类型说明
all Empty

与所有协议的关联。

specified Protocol

与协议的关联。

Provider_Socket_Result 严格 资源

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

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

Socket_Bind_Result 严格

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

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

Socket_GetInfo_Result 严格

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

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

Socket_RecvMsg_Result 严格

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

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

Socket_SendMsg_Result 严格

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

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

常量

名称类型说明
SOCKET_PROTOCOL_NAME fuchsia.posix.socket.packet/Socket String

别名

名称说明
协议 uint16

网络层协议(位于链路层之上)。

值由 https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml 定义。