fuchsia.posix.socket.packet

新增:11

通訊協定

供應商

定義於 fuchsia.posix.socket.packet/socket.fidl

封包通訊端供應商。

通訊端

要求封包通訊端。

  • 要求 kind 要建立的封包通訊端類型。
  • 回應socket封包通訊端。

要求

名稱類型
kind Kind

回應

名稱類型
payload Provider_Socket_Result

SocketWithOptions

要求建立封包通訊端,並提供建立選項。

  • 要求 kind 要建立的封包通訊端類型。
  • 要求通訊端的 opts 建立選項。
  • 回應socket封包通訊端。
新增:HEAD

要求

名稱類型
kind Kind
opts fuchsia.posix.socket/SocketCreationOptions

回應

名稱類型
payload Provider_SocketWithOptions_Result

通訊端

定義於 fuchsia.posix.socket.packet/socket.fidl

封包通訊端。

這個介面基本上是 POSIX。

此類型的所有方法都是非封鎖式,其確切行為與 Linux 對應項目相符。

警告:這項通訊協定尚未開放用戶端直接使用。用戶端應改用 BSD sockets API 與通訊端互動。我們計劃大幅變更這項通訊協定,如果用戶端直接與這項通訊協定結合,會使這些變更更加困難。

AttachBpfFilterUnsafe

附加指定的 eBPF 篩選器。篩選器應使用 2 個引數進行驗證

  1. 指向大小為 0 的封包,也就是說,不直接存取 (僅使用 cBPF 封包載入指令)。
  2. 封包大小 (BPF_LOAD)。不支援輔助函式和對應。
新增: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 後,用戶端不得傳送任何其他要求。

伺服器傳送狀態回應後,無論狀態為何,都應關閉連線,且不傳送 epitaph。

關閉管道的用戶端,在語意上應等同於呼叫 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。

新增: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 有多個標記網域,且每個標記都可以在各個網域中獨立擷取。

新增: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

從通訊端接收訊息。

  • request 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.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

序數Variant類型說明
all Empty
specified InterfaceProperties

BoundInterfaceId strict

定義於 fuchsia.posix.socket.packet/socket.fidl

序數Variant類型說明
all Empty
specified fuchsia.net/InterfaceId

HardwareAddress 彈性

定義於 fuchsia.posix.socket.packet/socket.fidl

硬體位址。

序數Variant類型說明
none Empty

表示硬體不支援連結層定址。

eui48 fuchsia.net/MacAddress

以 EUI-48 為基礎的位址。

ProtocolAssociation strict

定義於 fuchsia.posix.socket.packet/socket.fidl

封包通訊端的通訊協定關聯。

序數Variant類型說明
all Empty

與所有通訊協定的關聯。

specified Protocol

與通訊協定的關聯。

Provider_SocketWithOptions_Result strict resource

定義於 fuchsia.posix.socket.packet/socket.fidl

序數Variant類型說明
response Provider_SocketWithOptions_Response
err fuchsia.posix/Errno

Provider_Socket_Result strict resource

定義於 fuchsia.posix.socket.packet/socket.fidl

序數Variant類型說明
response Provider_Socket_Response
err fuchsia.posix/Errno

Socket_AttachBpfFilterUnsafe_Result strict

定義於 fuchsia.posix.socket.packet/socket.fidl

序數Variant類型說明
response Socket_AttachBpfFilterUnsafe_Response
err fuchsia.posix/Errno

Socket_Bind_Result strict

定義於 fuchsia.posix.socket.packet/socket.fidl

序數Variant類型說明
response Socket_Bind_Response
err fuchsia.posix/Errno

Socket_GetInfo_Result strict

定義於 fuchsia.posix.socket.packet/socket.fidl

序數Variant類型說明
response Socket_GetInfo_Response
err fuchsia.posix/Errno

Socket_RecvMsg_Result strict

定義於 fuchsia.posix.socket.packet/socket.fidl

序數Variant類型說明
response Socket_RecvMsg_Response
err fuchsia.posix/Errno

Socket_SendMsg_Result strict

定義於 fuchsia.posix.socket.packet/socket.fidl

序數Variant類型說明
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 定義。