diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:59:05 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:59:05 -0400 |
| commit | 1f19f33e45791ea59aed048796fc68672c6723a5 (patch) | |
| tree | 54625fba89e91d1c2177801ec635e8528bba937f /static/freebsd/man4/ng_socket.4 3.html | |
| parent | ac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (diff) | |
docs: Removed Precompiled HTML
Diffstat (limited to 'static/freebsd/man4/ng_socket.4 3.html')
| -rw-r--r-- | static/freebsd/man4/ng_socket.4 3.html | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/static/freebsd/man4/ng_socket.4 3.html b/static/freebsd/man4/ng_socket.4 3.html deleted file mode 100644 index c086bc6b..00000000 --- a/static/freebsd/man4/ng_socket.4 3.html +++ /dev/null @@ -1,134 +0,0 @@ -<table class="head"> - <tr> - <td class="head-ltitle">NG_SOCKET(4)</td> - <td class="head-vol">Device Drivers Manual</td> - <td class="head-rtitle">NG_SOCKET(4)</td> - </tr> -</table> -<div class="manual-text"> -<section class="Sh"> -<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1> -<p class="Pp"><code class="Nm">ng_socket</code> — - <span class="Nd">netgraph socket node type</span></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> -<p class="Pp"><code class="In">#include - <<a class="In">sys/types.h</a>></code> - <br/> - <code class="In">#include - <<a class="In">netgraph/ng_socket.h</a>></code></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> -<p class="Pp">A <code class="Nm">socket</code> node is both a - <span class="Ux">BSD</span> socket and a netgraph node. The - <code class="Nm">ng_socket</code> node type allows user-mode processes to - participate in the kernel <a class="Xr">netgraph(4)</a> networking subsystem - using the <span class="Ux">BSD</span> socket interface. The process must - have root privileges to be able to create netgraph sockets however once - created, any process that has one may use it.</p> -<p class="Pp">A new <code class="Nm">ng_socket</code> node is created by - creating a new socket of type <code class="Dv">NG_CONTROL</code> in the - protocol family <code class="Dv">PF_NETGRAPH</code>, using the - <a class="Xr">socket(2)</a> system call. Any control messages received by - the node and not having a cookie value of - <code class="Dv">NGM_SOCKET_COOKIE</code> are received by the process, using - <a class="Xr">recvfrom(2)</a>; the socket address argument is a - <code class="Dv">struct sockaddr_ng</code> containing the sender's netgraph - address. Conversely, control messages can be sent to any node by calling - <a class="Xr">sendto(2)</a>, supplying the recipient's address in a - <code class="Dv">struct sockaddr_ng</code>. The <a class="Xr">bind(2)</a> - system call may be used to assign a global netgraph name to the node.</p> -<p class="Pp" id="hook">To transmit and receive netgraph data packets, a - <code class="Dv">NG_DATA</code> socket must also be created using - <a class="Xr">socket(2)</a> and associated with a - <code class="Nm">ng_socket</code> node. <code class="Dv">NG_DATA</code> - sockets do not automatically have nodes associated with them; they are bound - to a specific node via the <a class="Xr">connect(2)</a> system call. The - address argument is the netgraph address of the - <code class="Nm">ng_socket</code> node already created. Once a data socket - is associated with a node, any data packets received by the node are read - using <a class="Xr">recvfrom(2)</a> and any packets to be sent out from the - node are written using <a class="Xr">sendto(2)</a>. In the case of data - sockets, the <code class="Dv">struct sockaddr_ng</code> contains the name of - the <a class="permalink" href="#hook"><i class="Em">hook</i></a> on which - the data was received or should be sent.</p> -<p class="Pp">As a special case, to allow netgraph data sockets to be used as - stdin or stdout on naive programs, a <a class="Xr">sendto(2)</a> with a NULL - sockaddr pointer, a <a class="Xr">send(2)</a> or a - <a class="Xr">write(2)</a> will succeed in the case where there is exactly - ONE hook attached to the socket node, (and thus the path is - unambiguous).</p> -<p class="Pp">There is a user library that simplifies using netgraph sockets; - see <a class="Xr">netgraph(3)</a>.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="HOOKS"><a class="permalink" href="#HOOKS">HOOKS</a></h1> -<p class="Pp">This node type supports hooks with arbitrary names (as long as - they are unique) and always accepts hook connection requests.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="CONTROL_MESSAGES"><a class="permalink" href="#CONTROL_MESSAGES">CONTROL - MESSAGES</a></h1> -<p class="Pp">This node type supports the generic control messages, plus the - following:</p> -<dl class="Bl-tag"> - <dt id="NGM_SOCK_CMD_NOLINGER"><a class="permalink" href="#NGM_SOCK_CMD_NOLINGER"><code class="Dv">NGM_SOCK_CMD_NOLINGER</code></a></dt> - <dd>When the last hook is removed from this node, it will shut down as if it - had received a <code class="Dv">NGM_SHUTDOWN</code> message. Attempts to - access the sockets associated will return - <code class="Er">ENOTCONN</code>.</dd> - <dt id="NGM_SOCK_CMD_LINGER"><a class="permalink" href="#NGM_SOCK_CMD_LINGER"><code class="Dv">NGM_SOCK_CMD_LINGER</code></a></dt> - <dd>This is the default mode. When the last hook is removed, the node will - continue to exist, ready to accept new hooks until it is explicitly shut - down.</dd> -</dl> -<p class="Pp">All other messages with neither the - <code class="Dv">NGM_SOCKET_COOKIE</code> or - <code class="Dv">NGM_GENERIC_COOKIE</code> will be passed unaltered up the - <code class="Dv">NG_CONTROL</code> socket.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SHUTDOWN"><a class="permalink" href="#SHUTDOWN">SHUTDOWN</a></h1> -<p class="Pp">This node type shuts down and disappears when both the associated - <code class="Dv">NG_CONTROL</code> and <code class="Dv">NG_DATA</code> - sockets have been closed, or a <code class="Dv">NGM_SHUTDOWN</code> control - message is received. In the latter case, attempts to write to the still-open - sockets will return <code class="Er">ENOTCONN</code>. If the - <code class="Dv">NGM_SOCK_CMD_NOLINGER</code> message has been received, - closure of the last hook will also initiate a shutdown of the node.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE - ALSO</a></h1> -<p class="Pp"><a class="Xr">socket(2)</a>, <a class="Xr">netgraph(3)</a>, - <a class="Xr">netgraph(4)</a>, <a class="Xr">ng_ksocket(4)</a>, - <a class="Xr">ngctl(8)</a></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> -<p class="Pp">The <code class="Nm">ng_socket</code> node type was implemented in - <span class="Ux">FreeBSD 4.0</span>.</p> -</section> -<section class="Sh"> -<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1> -<p class="Pp"><span class="An">Julian Elischer</span> - <<a class="Mt" href="mailto:julian@FreeBSD.org">julian@FreeBSD.org</a>></p> -</section> -<section class="Sh"> -<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1> -<p class="Pp">It is not possible to reject the connection of a hook, though any - data received on that hook can certainly be ignored.</p> -<p class="Pp">The controlling process is not notified of all events that an - in-kernel node would be notified of, e.g. a new hook, or hook removal. Some - node-initiated messages should be defined for this purpose (to be sent up - the control socket).</p> -</section> -</div> -<table class="foot"> - <tr> - <td class="foot-date">January 19, 1999</td> - <td class="foot-os">FreeBSD 15.0</td> - </tr> -</table> |
