blob: 750bac8a328551172f786204db18b940f5361fc2 [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.posix.socket.packet
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 11</span></div>
## **PROTOCOLS**
## Provider {#Provider}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=223)*
<p>A packet socket provider.</p>
### Socket {#Provider.Socket}
<p>Requests a packet socket.</p>
<ul>
<li>request <code>kind</code> the kind of packet socket to create.</li>
</ul>
<ul>
<li>response <code>socket</code> the packet socket.</li>
</ul>
#### Request {#Provider.Socket_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>kind</code></td>
<td>
<code><a class='link' href='#Kind'>Kind</a></code>
</td>
</tr>
</table>
#### Response {#Provider.Socket_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Provider_Socket_Result'>Provider_Socket_Result</a></code>
</td>
</tr>
</table>
## Socket {#Socket}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=136)*
<p>A packet socket.</p>
<p>This interface is essentially POSIX.</p>
<p>All methods on this type are nonblocking; their exact behaviors match their
Linux counterparts.</p>
<p><em>Warning:</em> This protocol is not yet ready for direct use by clients.
Instead, clients should use the BSD sockets API to interact with sockets.
We plan to change this protocol substantially and clients that couple
directly to this protocol will make those changes more difficult.</p>
### Bind {#Socket.Bind}
<p>Bind the socket to a protocol and/or interface.</p>
<ul>
<li>request <code>protocol</code> the socket's new protocol association.</li>
<li>request <code>bound_interface_id</code> the socket's new interface binding.</li>
</ul>
#### Request {#Socket.Bind_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>protocol</code></td>
<td>
<code><a class='link' href='#ProtocolAssociation'>ProtocolAssociation</a>?</code>
</td>
</tr>
<tr>
<td><code>bound_interface_id</code></td>
<td>
<code><a class='link' href='#BoundInterfaceId'>BoundInterfaceId</a></code>
</td>
</tr>
</table>
#### Response {#Socket.Bind_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Socket_Bind_Result'>Socket_Bind_Result</a></code>
</td>
</tr>
</table>
### Clone2 {#Socket.Clone2}
#### Request {#Socket.Clone2_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>request</code></td>
<td>
<code>server_end&lt;<a class='link' href='../fuchsia.unknown/'>fuchsia.unknown</a>/<a class='link' href='../fuchsia.unknown/#Cloneable'>Cloneable</a>&gt;</code>
</td>
</tr>
</table>
### Close {#Socket.Close}
<p>Terminates the connection.</p>
<p>After calling <code>Close</code>, the client must not send any other requests.</p>
<p>Servers, after sending the status response, should close the connection
regardless of status and without sending an epitaph.</p>
<p>Closing the client end of the channel should be semantically equivalent
to calling <code>Close</code> without knowing when the close has completed or its
status.</p>
#### Request {#Socket.Close_Request}
&lt;EMPTY&gt;
#### Response {#Socket.Close_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.unknown/'>fuchsia.unknown</a>/<a class='link' href='../fuchsia.unknown/#Closeable_Close_Result'>Closeable_Close_Result</a></code>
</td>
</tr>
</table>
### Describe {#Socket.Describe}
#### Request {#Socket.Describe_Request}
&lt;EMPTY&gt;
#### Response {#Socket.Describe_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#SocketDescribeResponse'>SocketDescribeResponse</a></code>
</td>
</tr>
</table>
### GetAcceptConn {#Socket.GetAcceptConn}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_ACCEPTCONN</code>.</p>
#### Request {#Socket.GetAcceptConn_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetAcceptConn_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetAcceptConn_Result'>BaseSocket_GetAcceptConn_Result</a></code>
</td>
</tr>
</table>
### GetBindToDevice {#Socket.GetBindToDevice}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_BINDTODEVICE</code>.</p>
#### Request {#Socket.GetBindToDevice_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetBindToDevice_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetBindToDevice_Result'>BaseSocket_GetBindToDevice_Result</a></code>
</td>
</tr>
</table>
### GetBroadcast {#Socket.GetBroadcast}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_BROADCAST</code>.</p>
#### Request {#Socket.GetBroadcast_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetBroadcast_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetBroadcast_Result'>BaseSocket_GetBroadcast_Result</a></code>
</td>
</tr>
</table>
### GetError {#Socket.GetError}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_ERROR</code>.
Returns the last error if there is an error set on the socket.</p>
#### Request {#Socket.GetError_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetError_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetError_Result'>BaseSocket_GetError_Result</a></code>
</td>
</tr>
</table>
### GetInfo {#Socket.GetInfo}
<p>Returns the the socket's properties.</p>
<ul>
<li>response <code>kind</code> the socket's <code>Kind</code>.</li>
<li>response <code>protocol</code> the socket's protocol association, if associated.</li>
<li>response <code>bound_interface</code> properties of the socket's interface
binding.</li>
</ul>
#### Request {#Socket.GetInfo_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetInfo_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Socket_GetInfo_Result'>Socket_GetInfo_Result</a></code>
</td>
</tr>
</table>
### GetKeepAlive {#Socket.GetKeepAlive}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_KEEPALIVE</code>.</p>
#### Request {#Socket.GetKeepAlive_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetKeepAlive_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetKeepAlive_Result'>BaseSocket_GetKeepAlive_Result</a></code>
</td>
</tr>
</table>
### GetLinger {#Socket.GetLinger}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_LINGER</code>.</p>
#### Request {#Socket.GetLinger_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetLinger_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetLinger_Result'>BaseSocket_GetLinger_Result</a></code>
</td>
</tr>
</table>
### GetNoCheck {#Socket.GetNoCheck}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_NO_CHECK</code>.</p>
#### Request {#Socket.GetNoCheck_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetNoCheck_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetNoCheck_Result'>BaseSocket_GetNoCheck_Result</a></code>
</td>
</tr>
</table>
### GetOutOfBandInline {#Socket.GetOutOfBandInline}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_OOBINLINE</code>.</p>
#### Request {#Socket.GetOutOfBandInline_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetOutOfBandInline_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetOutOfBandInline_Result'>BaseSocket_GetOutOfBandInline_Result</a></code>
</td>
</tr>
</table>
### GetReceiveBuffer {#Socket.GetReceiveBuffer}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_RCVBUF</code>.</p>
#### Request {#Socket.GetReceiveBuffer_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetReceiveBuffer_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetReceiveBuffer_Result'>BaseSocket_GetReceiveBuffer_Result</a></code>
</td>
</tr>
</table>
### GetReuseAddress {#Socket.GetReuseAddress}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_REUSEADDR</code>.</p>
#### Request {#Socket.GetReuseAddress_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetReuseAddress_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetReuseAddress_Result'>BaseSocket_GetReuseAddress_Result</a></code>
</td>
</tr>
</table>
### GetReusePort {#Socket.GetReusePort}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_REUSEPORT</code>.</p>
#### Request {#Socket.GetReusePort_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetReusePort_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetReusePort_Result'>BaseSocket_GetReusePort_Result</a></code>
</td>
</tr>
</table>
### GetSendBuffer {#Socket.GetSendBuffer}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_SNDBUF</code>.</p>
#### Request {#Socket.GetSendBuffer_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetSendBuffer_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetSendBuffer_Result'>BaseSocket_GetSendBuffer_Result</a></code>
</td>
</tr>
</table>
### GetTimestamp {#Socket.GetTimestamp}
<p>Get <code>SOL_SOCKET</code> -&gt; <code>SO_TIMESTAMP</code> or <code>SO_TIMESTAMPNS</code>.</p>
#### Request {#Socket.GetTimestamp_Request}
&lt;EMPTY&gt;
#### Response {#Socket.GetTimestamp_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_GetTimestamp_Result'>BaseSocket_GetTimestamp_Result</a></code>
</td>
</tr>
</table>
### Query {#Socket.Query}
#### Request {#Socket.Query_Request}
&lt;EMPTY&gt;
#### Response {#Socket.Query_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>protocol</code></td>
<td>
<code>vector&lt;uint8&gt;</code>
</td>
</tr>
</table>
### RecvMsg {#Socket.RecvMsg}
<p>Receives a message from the socket.</p>
<ul>
<li>request <code>want_packet_info</code> request information about the packet to be
returned.</li>
<li>request <code>data_len</code> the maximum allowed length of the response data
buffer.</li>
<li>request <code>want_control</code> request ancillary data to be returned.</li>
<li>request <code>flags</code> flags for the receive request.</li>
</ul>
<ul>
<li>response <code>packet_info</code> information about the packet, if requested.</li>
<li>response <code>data</code> the message.</li>
<li>response <code>control</code> control messages, if requested.</li>
<li>response <code>truncated</code> indicates whether or not the returned message
was truncated.</li>
</ul>
#### Request {#Socket.RecvMsg_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>want_packet_info</code></td>
<td>
<code>bool</code>
</td>
</tr>
<tr>
<td><code>data_len</code></td>
<td>
<code>uint32</code>
</td>
</tr>
<tr>
<td><code>want_control</code></td>
<td>
<code>bool</code>
</td>
</tr>
<tr>
<td><code>flags</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#RecvMsgFlags'>RecvMsgFlags</a></code>
</td>
</tr>
</table>
#### Response {#Socket.RecvMsg_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Socket_RecvMsg_Result'>Socket_RecvMsg_Result</a></code>
</td>
</tr>
</table>
### SendMsg {#Socket.SendMsg}
<p>Sends a message on the socket.</p>
<ul>
<li>request <code>packet_info</code> information about the packet.</li>
<li>request <code>data</code> the message.</li>
<li>request <code>control</code> ancillary data.</li>
<li>request <code>flags</code> flags for the send request.</li>
</ul>
#### Request {#Socket.SendMsg_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>packet_info</code></td>
<td>
<code><a class='link' href='#PacketInfo'>PacketInfo</a>?</code>
</td>
</tr>
<tr>
<td><code>data</code></td>
<td>
<code>vector&lt;uint8&gt;</code>
</td>
</tr>
<tr>
<td><code>control</code></td>
<td>
<code><a class='link' href='#SendControlData'>SendControlData</a></code>
</td>
</tr>
<tr>
<td><code>flags</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#SendMsgFlags'>SendMsgFlags</a></code>
</td>
</tr>
</table>
#### Response {#Socket.SendMsg_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Socket_SendMsg_Result'>Socket_SendMsg_Result</a></code>
</td>
</tr>
</table>
### SetBindToDevice {#Socket.SetBindToDevice}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_BINDTODEVICE</code>.</p>
#### Request {#Socket.SetBindToDevice_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value</code></td>
<td>
<code><a class='link' href='../fuchsia.net.interfaces/'>fuchsia.net.interfaces</a>/<a class='link' href='../fuchsia.net.interfaces/#Name'>Name</a></code>
</td>
</tr>
</table>
#### Response {#Socket.SetBindToDevice_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetBindToDevice_Result'>BaseSocket_SetBindToDevice_Result</a></code>
</td>
</tr>
</table>
### SetBroadcast {#Socket.SetBroadcast}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_BROADCAST</code>.</p>
#### Request {#Socket.SetBroadcast_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value</code></td>
<td>
<code>bool</code>
</td>
</tr>
</table>
#### Response {#Socket.SetBroadcast_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetBroadcast_Result'>BaseSocket_SetBroadcast_Result</a></code>
</td>
</tr>
</table>
### SetKeepAlive {#Socket.SetKeepAlive}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_KEEPALIVE</code>.</p>
#### Request {#Socket.SetKeepAlive_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value</code></td>
<td>
<code>bool</code>
</td>
</tr>
</table>
#### Response {#Socket.SetKeepAlive_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetKeepAlive_Result'>BaseSocket_SetKeepAlive_Result</a></code>
</td>
</tr>
</table>
### SetLinger {#Socket.SetLinger}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_LINGER</code>.</p>
#### Request {#Socket.SetLinger_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>linger</code></td>
<td>
<code>bool</code>
</td>
</tr>
<tr>
<td><code>length_secs</code></td>
<td>
<code>uint32</code>
</td>
</tr>
</table>
#### Response {#Socket.SetLinger_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetLinger_Result'>BaseSocket_SetLinger_Result</a></code>
</td>
</tr>
</table>
### SetNoCheck {#Socket.SetNoCheck}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_NO_CHECK</code>.</p>
#### Request {#Socket.SetNoCheck_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value</code></td>
<td>
<code>bool</code>
</td>
</tr>
</table>
#### Response {#Socket.SetNoCheck_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetNoCheck_Result'>BaseSocket_SetNoCheck_Result</a></code>
</td>
</tr>
</table>
### SetOutOfBandInline {#Socket.SetOutOfBandInline}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_OOBINLINE</code>.</p>
#### Request {#Socket.SetOutOfBandInline_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value</code></td>
<td>
<code>bool</code>
</td>
</tr>
</table>
#### Response {#Socket.SetOutOfBandInline_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetOutOfBandInline_Result'>BaseSocket_SetOutOfBandInline_Result</a></code>
</td>
</tr>
</table>
### SetReceiveBuffer {#Socket.SetReceiveBuffer}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_RCVBUF</code>.</p>
#### Request {#Socket.SetReceiveBuffer_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value_bytes</code></td>
<td>
<code>uint64</code>
</td>
</tr>
</table>
#### Response {#Socket.SetReceiveBuffer_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetReceiveBuffer_Result'>BaseSocket_SetReceiveBuffer_Result</a></code>
</td>
</tr>
</table>
### SetReuseAddress {#Socket.SetReuseAddress}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_REUSEADDR</code>.</p>
#### Request {#Socket.SetReuseAddress_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value</code></td>
<td>
<code>bool</code>
</td>
</tr>
</table>
#### Response {#Socket.SetReuseAddress_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetReuseAddress_Result'>BaseSocket_SetReuseAddress_Result</a></code>
</td>
</tr>
</table>
### SetReusePort {#Socket.SetReusePort}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_REUSEPORT</code>.</p>
#### Request {#Socket.SetReusePort_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value</code></td>
<td>
<code>bool</code>
</td>
</tr>
</table>
#### Response {#Socket.SetReusePort_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetReusePort_Result'>BaseSocket_SetReusePort_Result</a></code>
</td>
</tr>
</table>
### SetSendBuffer {#Socket.SetSendBuffer}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_SNDBUF</code>.</p>
#### Request {#Socket.SetSendBuffer_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value_bytes</code></td>
<td>
<code>uint64</code>
</td>
</tr>
</table>
#### Response {#Socket.SetSendBuffer_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetSendBuffer_Result'>BaseSocket_SetSendBuffer_Result</a></code>
</td>
</tr>
</table>
### SetTimestamp {#Socket.SetTimestamp}
<p>Set <code>SOL_SOCKET</code> -&gt; <code>SO_TIMESTAMP</code> or <code>SO_TIMESTAMPNS</code>.</p>
#### Request {#Socket.SetTimestamp_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>value</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#TimestampOption'>TimestampOption</a></code>
</td>
</tr>
</table>
#### Response {#Socket.SetTimestamp_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#BaseSocket_SetTimestamp_Result'>BaseSocket_SetTimestamp_Result</a></code>
</td>
</tr>
</table>
## **STRUCTS**
### Empty {#Empty data-text="Empty"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=12)*
&lt;EMPTY&gt;
### InterfaceProperties {#InterfaceProperties data-text="InterfaceProperties"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=103)*
<p>An interface's properties.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="InterfaceProperties.id">
<td><code>id</code></td>
<td>
<code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#InterfaceId'>InterfaceId</a></code>
</td>
<td><p>The interface's ID.</p>
</td>
<td>No default</td>
</tr>
<tr id="InterfaceProperties.addr">
<td><code>addr</code></td>
<td>
<code><a class='link' href='#HardwareAddress'>HardwareAddress</a></code>
</td>
<td><p>The interface's hardware address.</p>
</td>
<td>No default</td>
</tr>
<tr id="InterfaceProperties.type">
<td><code>type</code></td>
<td>
<code><a class='link' href='#HardwareType'>HardwareType</a></code>
</td>
<td><p>The interface's hardware type.</p>
</td>
<td>No default</td>
</tr>
</table>
### PacketInfo {#PacketInfo data-text="PacketInfo"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=115)*
<p>Information about a packet.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="PacketInfo.protocol">
<td><code>protocol</code></td>
<td>
<code><a class='link' href='#Protocol'>Protocol</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="PacketInfo.interface_id">
<td><code>interface_id</code></td>
<td>
<code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#InterfaceId'>InterfaceId</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="PacketInfo.addr">
<td><code>addr</code></td>
<td>
<code><a class='link' href='#HardwareAddress'>HardwareAddress</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Provider_Socket_Response [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Provider_Socket_Response data-text="Provider_Socket_Response"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=230)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Provider_Socket_Response.socket">
<td><code>socket</code></td>
<td>
<code><a class='link' href='#Socket'>Socket</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### RecvPacketInfo {#RecvPacketInfo data-text="RecvPacketInfo"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=191)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="RecvPacketInfo.packet_info">
<td><code>packet_info</code></td>
<td>
<code><a class='link' href='#PacketInfo'>PacketInfo</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RecvPacketInfo.packet_type">
<td><code>packet_type</code></td>
<td>
<code><a class='link' href='#PacketType'>PacketType</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RecvPacketInfo.interface_type">
<td><code>interface_type</code></td>
<td>
<code><a class='link' href='#HardwareType'>HardwareType</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Socket_Bind_Response {#Socket_Bind_Response data-text="Socket_Bind_Response"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=155)*
&lt;EMPTY&gt;
### Socket_GetInfo_Response {#Socket_GetInfo_Response data-text="Socket_GetInfo_Response"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=163)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Socket_GetInfo_Response.kind">
<td><code>kind</code></td>
<td>
<code><a class='link' href='#Kind'>Kind</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Socket_GetInfo_Response.protocol">
<td><code>protocol</code></td>
<td>
<code><a class='link' href='#ProtocolAssociation'>ProtocolAssociation</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Socket_GetInfo_Response.bound_interface">
<td><code>bound_interface</code></td>
<td>
<code><a class='link' href='#BoundInterface'>BoundInterface</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Socket_RecvMsg_Response {#Socket_RecvMsg_Response data-text="Socket_RecvMsg_Response"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=190)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Socket_RecvMsg_Response.packet_info">
<td><code>packet_info</code></td>
<td>
<code><a class='link' href='#RecvPacketInfo'>RecvPacketInfo</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Socket_RecvMsg_Response.data">
<td><code>data</code></td>
<td>
<code>vector&lt;uint8&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Socket_RecvMsg_Response.control">
<td><code>control</code></td>
<td>
<code><a class='link' href='#RecvControlData'>RecvControlData</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Socket_RecvMsg_Response.truncated">
<td><code>truncated</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### Socket_SendMsg_Response {#Socket_SendMsg_Response data-text="Socket_SendMsg_Response"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=218)*
&lt;EMPTY&gt;
## **ENUMS**
### HardwareType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#HardwareType data-text="HardwareType"}
Type: <code>uint32</code>
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=48)*
<p>The type of a hardware.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="HardwareType.NETWORK_ONLY">
<td><h3 id="HardwareType.NETWORK_ONLY" class="add-link hide-from-toc">NETWORK_ONLY</h3></td>
<td><code>1</code></td>
<td><p>Hardware that operates only at the network layer; a pure L3 interface.</p>
<p>Hardware of this type have no L2 headers/addressing.</p>
</td>
</tr>
<tr id="HardwareType.ETHERNET">
<td><h3 id="HardwareType.ETHERNET" class="add-link hide-from-toc">ETHERNET</h3></td>
<td><code>2</code></td>
<td><p>Hardware that operates on ethernet-based links.</p>
</td>
</tr>
<tr id="HardwareType.LOOPBACK">
<td><h3 id="HardwareType.LOOPBACK" class="add-link hide-from-toc">LOOPBACK</h3></td>
<td><code>3</code></td>
<td><p>Hardware that loops back packets.</p>
</td>
</tr>
</table>
### Kind [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Kind data-text="Kind"}
Type: <code>uint32</code>
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=15)*
<p>A kind of packet socket.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="Kind.NETWORK">
<td><h3 id="Kind.NETWORK" class="add-link hide-from-toc">NETWORK</h3></td>
<td><code>1</code></td>
<td><p>A packet socket that operates with network-layer packets.</p>
</td>
</tr>
<tr id="Kind.LINK">
<td><h3 id="Kind.LINK" class="add-link hide-from-toc">LINK</h3></td>
<td><code>2</code></td>
<td><p>A packet socket that operates with link-layer packets.</p>
<p>Packets are passed unmodified between the wire and client when the
packet socket is of this kind.</p>
</td>
</tr>
</table>
### PacketType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#PacketType data-text="PacketType"}
Type: <code>uint32</code>
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=67)*
<p>The type of a packet.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="PacketType.HOST">
<td><h3 id="PacketType.HOST" class="add-link hide-from-toc">HOST</h3></td>
<td><code>1</code></td>
<td><p>A packet that arrived at its destination.</p>
</td>
</tr>
<tr id="PacketType.BROADCAST">
<td><h3 id="PacketType.BROADCAST" class="add-link hide-from-toc">BROADCAST</h3></td>
<td><code>2</code></td>
<td><p>A packet that was broadcasted.</p>
</td>
</tr>
<tr id="PacketType.MULTICAST">
<td><h3 id="PacketType.MULTICAST" class="add-link hide-from-toc">MULTICAST</h3></td>
<td><code>3</code></td>
<td><p>A packet that was multicasted.</p>
</td>
</tr>
<tr id="PacketType.OTHER_HOST">
<td><h3 id="PacketType.OTHER_HOST" class="add-link hide-from-toc">OTHER_HOST</h3></td>
<td><code>4</code></td>
<td><p>A packet that arrived at a host that isn't its destination.</p>
</td>
</tr>
<tr id="PacketType.OUTGOING">
<td><h3 id="PacketType.OUTGOING" class="add-link hide-from-toc">OUTGOING</h3></td>
<td><code>5</code></td>
<td><p>A packet that is being sent on a local interface, regardless of how it
is being sent (unicasted, multicasted, broadcasted).</p>
</td>
</tr>
</table>
## **TABLES**
### RecvControlData {#RecvControlData data-text="RecvControlData"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=197)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="RecvControlData.socket">
<td><h3 id="RecvControlData.socket" class="add-link hide-from-toc">1</h3></td>
<td><code>socket</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#SocketRecvControlData'>SocketRecvControlData</a></code>
</td>
<td><p>Socket level ancillary data.</p>
</td>
</tr>
</table>
### SendControlData {#SendControlData data-text="SendControlData"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=213)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="SendControlData.socket">
<td><h3 id="SendControlData.socket" class="add-link hide-from-toc">1</h3></td>
<td><code>socket</code></td>
<td>
<code><a class='link' href='../fuchsia.posix.socket/'>fuchsia.posix.socket</a>/<a class='link' href='../fuchsia.posix.socket/#SocketSendControlData'>SocketSendControlData</a></code>
</td>
<td><p>Socket level ancillary data.</p>
</td>
</tr>
</table>
### SocketDescribeResponse [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#SocketDescribeResponse data-text="SocketDescribeResponse"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=139)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="SocketDescribeResponse.event">
<td><h3 id="SocketDescribeResponse.event" class="add-link hide-from-toc">1</h3></td>
<td><code>event</code></td>
<td>
<code>handle&lt;eventpair&gt;</code>
</td>
<td><p>Signals additional information about the state of the socket such as
readiness or shutdown-ness.</p>
</td>
</tr>
</table>
## **UNIONS**
### BoundInterface [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#BoundInterface data-text="BoundInterface"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=166)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="BoundInterface.all">
<td><h3 id="BoundInterface.all" class="add-link hide-from-toc">1</h3></td>
<td><code>all</code></td>
<td>
<code><a class='link' href='#Empty'>Empty</a></code>
</td>
<td></td>
</tr>
<tr id="BoundInterface.specified">
<td><h3 id="BoundInterface.specified" class="add-link hide-from-toc">2</h3></td>
<td><code>specified</code></td>
<td>
<code><a class='link' href='#InterfaceProperties'>InterfaceProperties</a></code>
</td>
<td></td>
</tr>
</table>
### BoundInterfaceId [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#BoundInterfaceId data-text="BoundInterfaceId"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=151)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="BoundInterfaceId.all">
<td><h3 id="BoundInterfaceId.all" class="add-link hide-from-toc">1</h3></td>
<td><code>all</code></td>
<td>
<code><a class='link' href='#Empty'>Empty</a></code>
</td>
<td></td>
</tr>
<tr id="BoundInterfaceId.specified">
<td><h3 id="BoundInterfaceId.specified" class="add-link hide-from-toc">2</h3></td>
<td><code>specified</code></td>
<td>
<code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#InterfaceId'>InterfaceId</a></code>
</td>
<td></td>
</tr>
</table>
### HardwareAddress [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#HardwareAddress data-text="HardwareAddress"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=92)*
<p>A hardware address.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="HardwareAddress.none">
<td><h3 id="HardwareAddress.none" class="add-link hide-from-toc">1</h3></td>
<td><code>none</code></td>
<td>
<code><a class='link' href='#Empty'>Empty</a></code>
</td>
<td><p>Indicates that the hardware does not support link-layer addressing.</p>
</td>
</tr>
<tr id="HardwareAddress.eui48">
<td><h3 id="HardwareAddress.eui48" class="add-link hide-from-toc">2</h3></td>
<td><code>eui48</code></td>
<td>
<code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#MacAddress'>MacAddress</a></code>
</td>
<td><p>An EUI-48 based address.</p>
</td>
</tr>
</table>
### ProtocolAssociation [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ProtocolAssociation data-text="ProtocolAssociation"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=37)*
<p>The protocol association for a packet socket.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ProtocolAssociation.all">
<td><h3 id="ProtocolAssociation.all" class="add-link hide-from-toc">1</h3></td>
<td><code>all</code></td>
<td>
<code><a class='link' href='#Empty'>Empty</a></code>
</td>
<td><p>An association with all protocols.</p>
</td>
</tr>
<tr id="ProtocolAssociation.specified">
<td><h3 id="ProtocolAssociation.specified" class="add-link hide-from-toc">2</h3></td>
<td><code>specified</code></td>
<td>
<code><a class='link' href='#Protocol'>Protocol</a></code>
</td>
<td><p>An association with a protocol.</p>
</td>
</tr>
</table>
### Provider_Socket_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Provider_Socket_Result data-text="Provider_Socket_Result"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=230)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Provider_Socket_Result.response">
<td><h3 id="Provider_Socket_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Provider_Socket_Response'>Provider_Socket_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Provider_Socket_Result.err">
<td><h3 id="Provider_Socket_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../fuchsia.posix/'>fuchsia.posix</a>/<a class='link' href='../fuchsia.posix/#Errno'>Errno</a></code>
</td>
<td></td>
</tr>
</table>
### Socket_Bind_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Socket_Bind_Result data-text="Socket_Bind_Result"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=155)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Socket_Bind_Result.response">
<td><h3 id="Socket_Bind_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Socket_Bind_Response'>Socket_Bind_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Socket_Bind_Result.err">
<td><h3 id="Socket_Bind_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../fuchsia.posix/'>fuchsia.posix</a>/<a class='link' href='../fuchsia.posix/#Errno'>Errno</a></code>
</td>
<td></td>
</tr>
</table>
### Socket_GetInfo_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Socket_GetInfo_Result data-text="Socket_GetInfo_Result"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=163)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Socket_GetInfo_Result.response">
<td><h3 id="Socket_GetInfo_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Socket_GetInfo_Response'>Socket_GetInfo_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Socket_GetInfo_Result.err">
<td><h3 id="Socket_GetInfo_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../fuchsia.posix/'>fuchsia.posix</a>/<a class='link' href='../fuchsia.posix/#Errno'>Errno</a></code>
</td>
<td></td>
</tr>
</table>
### Socket_RecvMsg_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Socket_RecvMsg_Result data-text="Socket_RecvMsg_Result"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=190)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Socket_RecvMsg_Result.response">
<td><h3 id="Socket_RecvMsg_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Socket_RecvMsg_Response'>Socket_RecvMsg_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Socket_RecvMsg_Result.err">
<td><h3 id="Socket_RecvMsg_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../fuchsia.posix/'>fuchsia.posix</a>/<a class='link' href='../fuchsia.posix/#Errno'>Errno</a></code>
</td>
<td></td>
</tr>
</table>
### Socket_SendMsg_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Socket_SendMsg_Result data-text="Socket_SendMsg_Result"}
*Defined in [fuchsia.posix.socket.packet/socket.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=218)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Socket_SendMsg_Result.response">
<td><h3 id="Socket_SendMsg_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Socket_SendMsg_Response'>Socket_SendMsg_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Socket_SendMsg_Result.err">
<td><h3 id="Socket_SendMsg_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='../fuchsia.posix/'>fuchsia.posix</a>/<a class='link' href='../fuchsia.posix/#Errno'>Errno</a></code>
</td>
<td></td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="SOCKET_PROTOCOL_NAME">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=122">SOCKET_PROTOCOL_NAME</a></td>
<td><code>fuchsia.posix.socket.packet/Socket</code></td>
<td><code>String</code></td>
<td></td>
</tr>
</table>
## **ALIASES**
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="Protocol">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.posix.socket.packet/socket.fidl;l=34">Protocol</a></td>
<td>
<code>uint16</code></td>
<td><p>A network-layer protocol (above link-layer).</p>
<p>Values are defined by
https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml.</p>
</td>
</tr>
</table>