summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/ng_vjc.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/ng_vjc.4 3.html')
-rw-r--r--static/freebsd/man4/ng_vjc.4 3.html179
1 files changed, 179 insertions, 0 deletions
diff --git a/static/freebsd/man4/ng_vjc.4 3.html b/static/freebsd/man4/ng_vjc.4 3.html
new file mode 100644
index 00000000..b5fe1671
--- /dev/null
+++ b/static/freebsd/man4/ng_vjc.4 3.html
@@ -0,0 +1,179 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">NG_VJC(4)</td>
+ <td class="head-vol">Device Drivers Manual</td>
+ <td class="head-rtitle">NG_VJC(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_vjc</code> &#x2014; <span class="Nd">Van
+ Jacobson compression netgraph 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
+ &lt;<a class="In">sys/types.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include &lt;<a class="In">netinet/in.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include &lt;<a class="In">netinet/in_systm.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include &lt;<a class="In">netinet/ip.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include &lt;<a class="In">net/slcompress.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include
+ &lt;<a class="In">netgraph/ng_vjc.h</a>&gt;</code></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The <code class="Nm">vjc</code> node type performs Van Jacobson
+ compression, which is used over PPP, SLIP, and other point-to-point IP
+ connections to compress TCP packet headers. The <code class="Dv">ip</code>
+ hook represents the uncompressed side of the node, while the
+ <code class="Dv">vjcomp</code>, <code class="Dv">vjuncomp</code>, and
+ <code class="Dv">vjip</code> hooks represent the compressed side of the
+ node. Packets received on the <code class="Dv">ip</code> will be compressed
+ or passed through as appropriate. Packets received on the other three hooks
+ will be uncompressed as appropriate. This node also supports &#x201C;always
+ pass through&#x201D; mode in either direction.</p>
+<p class="Pp">Van Jacobson compression only applies to TCP packets. Only
+ &#x201C;normal&#x201D; (i.e., common case) TCP packets are actually
+ compressed. These are output on the <code class="Dv">vjcomp</code> hook.
+ Other TCP packets are run through the state machine but not compressed;
+ these appear on the <code class="Dv">vjuncomp</code> hook. Other non-TCP IP
+ packets are forwarded unchanged to <code class="Dv">vjip</code>.</p>
+<p class="Pp">When connecting to a <a class="Xr">ng_ppp(4)</a> node, the
+ <code class="Dv">ip</code>, <code class="Dv">vjuncomp</code>,
+ <code class="Dv">vjcomp</code>, and <code class="Dv">vjip</code> hooks
+ should be connected to the <a class="Xr">ng_ppp(4)</a> node's
+ <code class="Dv">vjc_ip</code>, <code class="Dv">vjc_vjcomp</code>,
+ <code class="Dv">vjc_vjuncomp</code>, and <code class="Dv">vjc_ip</code>
+ hooks, respectively.</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 the following hooks:</p>
+<dl class="Bl-tag">
+ <dt id="ip"><var class="Va">ip</var></dt>
+ <dd>Upstream (uncompressed) IP packets.</dd>
+ <dt id="vjcomp"><var class="Va">vjcomp</var></dt>
+ <dd>Downstream compressed TCP packets.</dd>
+ <dt id="vjuncomp"><var class="Va">vjuncomp</var></dt>
+ <dd>Downstream uncompressed TCP packets.</dd>
+ <dt id="vjip"><var class="Va">vjip</var></dt>
+ <dd>Downstream uncompressed IP packets.</dd>
+</dl>
+</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_VJC_SET_CONFIG"><a class="permalink" href="#NGM_VJC_SET_CONFIG"><code class="Dv">NGM_VJC_SET_CONFIG</code></a>
+ (<code class="Ic">setconfig</code>)</dt>
+ <dd>This command resets the compression state and configures it according to
+ the supplied <code class="Dv">struct ngm_vjc_config</code> argument. This
+ structure contains the following fields:
+ <div class="Bd Pp Bd-indent Li">
+ <pre>struct ngm_vjc_config {
+ u_char enableComp; /* Enable compression */
+ u_char enableDecomp; /* Enable decompression */
+ u_char maxChannel; /* Number of outgoing channels - 1 */
+ u_char compressCID; /* OK to compress outgoing CID's */
+};</pre>
+ </div>
+ <p class="Pp">When <code class="Dv">enableComp</code> is set to zero, all
+ packets received on the <code class="Dv">ip</code> hook are forwarded
+ unchanged out the <code class="Dv">vjip</code> hook. Similarly, when
+ <code class="Dv">enableDecomp</code> is set to zero, all packets
+ received on the <code class="Dv">vjip</code> hook are forwarded
+ unchanged out the <code class="Dv">ip</code> hook, and packets are not
+ accepted on the <code class="Dv">vjcomp</code> and
+ <code class="Dv">vjuncomp</code> hooks. When a node is first created,
+ both compression and decompression are disabled and the node is
+ therefore operating in bi-directional &#x201C;pass through&#x201D;
+ mode.</p>
+ <p class="Pp">When enabling compression, <code class="Dv">maxChannel</code>
+ should be set to the number of outgoing compression channels minus one,
+ and is a value between 3 and 15, inclusive. The
+ <code class="Dv">compressCID</code> field indicates whether it is OK to
+ compress the CID header field for outgoing compressed TCP packets. This
+ value should be zero unless either (a) it is not possible for an
+ outgoing frame to be lost, or (b) lost frames can be reliably detected
+ and immediately reported to the peer's decompression engine (see
+ <code class="Dv">NGM_VJC_RECV_ERROR</code> below).</p>
+ </dd>
+ <dt id="NGM_VJC_GET_STATE"><a class="permalink" href="#NGM_VJC_GET_STATE"><code class="Dv">NGM_VJC_GET_STATE</code></a>
+ (<code class="Ic">getstate</code>)</dt>
+ <dd>This command returns the node's current state described by the
+ <code class="Dv">struct slcompress</code> structure, which is defined in
+ <code class="In">&lt;<a class="In">net/slcompress.h</a>&gt;</code>.</dd>
+ <dt id="NGM_VJC_CLR_STATS"><a class="permalink" href="#NGM_VJC_CLR_STATS"><code class="Dv">NGM_VJC_CLR_STATS</code></a>
+ (<code class="Ic">clrstats</code>)</dt>
+ <dd>Clears the node statistics counters. Statistics are also cleared whenever
+ the <code class="Dv">enableComp</code> or
+ <code class="Dv">enableDecomp</code> fields are changed from zero to one
+ by a <code class="Dv">NGM_VJC_SET_CONFIG</code> control message.</dd>
+ <dt id="NGM_VJC_RECV_ERROR"><a class="permalink" href="#NGM_VJC_RECV_ERROR"><code class="Dv">NGM_VJC_RECV_ERROR</code></a>
+ (<code class="Ic">recverror</code>)</dt>
+ <dd>When the peer has CID header field compression enabled, this message must
+ be sent to the local <code class="Nm">vjc</code> node immediately after
+ detecting that a received frame has been lost, due to a bad checksum or
+ for any other reason. Failing to do this can result in corrupted TCP
+ stream data.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SHUTDOWN"><a class="permalink" href="#SHUTDOWN">SHUTDOWN</a></h1>
+<p class="Pp">This node shuts down upon receipt of a
+ <code class="Dv">NGM_SHUTDOWN</code> control message, or when all hooks have
+ been disconnected.</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">netgraph(4)</a>, <a class="Xr">ng_iface(4)</a>,
+ <a class="Xr">ng_ppp(4)</a>, <a class="Xr">ngctl(8)</a></p>
+<p class="Pp"><cite class="Rs"><span class="RsA">V. Jacobson</span>,
+ <span class="RsT">Compressing TCP/IP Headers</span>, <span class="RsO">RFC
+ 1144</span>.</cite></p>
+<p class="Pp"><cite class="Rs"><span class="RsA">G. McGregor</span>,
+ <span class="RsT">The PPP Internet Control Protocol (IPCP)</span>,
+ <span class="RsO">RFC 1332</span>.</cite></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_vjc</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">Archie Cobbs</span>
+ &lt;<a class="Mt" href="mailto:archie@FreeBSD.org">archie@FreeBSD.org</a>&gt;</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
+<p class="Pp">As the initialization routine in the kernel implementation of Van
+ Jacobson compression initializes both compression and decompression at once,
+ this node does not allow compression and decompression to be enabled in
+ separate operations. In order to enable one when the other is already
+ enabled, first both must be disabled, then both enabled. This of course
+ resets the node state. This restriction may be lifted in a later
+ version.</p>
+<p class="Pp">When built as a loadable kernel module, this module includes the
+ file <span class="Pa">net/slcompress.c</span>. Although loading the module
+ should fail if <span class="Pa">net/slcompress.c</span> already exists in
+ the kernel, currently it does not, and the duplicate copies of the file do
+ not interfere. However, this may change in the future.</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>