diff options
Diffstat (limited to 'static/freebsd/man4/ng_vjc.4 3.html')
| -rw-r--r-- | static/freebsd/man4/ng_vjc.4 3.html | 179 |
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> — <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 + <<a class="In">sys/types.h</a>></code> + <br/> + <code class="In">#include <<a class="In">netinet/in.h</a>></code> + <br/> + <code class="In">#include <<a class="In">netinet/in_systm.h</a>></code> + <br/> + <code class="In">#include <<a class="In">netinet/ip.h</a>></code> + <br/> + <code class="In">#include <<a class="In">net/slcompress.h</a>></code> + <br/> + <code class="In">#include + <<a class="In">netgraph/ng_vjc.h</a>></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 “always + pass through” mode in either direction.</p> +<p class="Pp">Van Jacobson compression only applies to TCP packets. Only + “normal” (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 “pass through” + 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"><<a class="In">net/slcompress.h</a>></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> + <<a class="Mt" href="mailto:archie@FreeBSD.org">archie@FreeBSD.org</a>></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> |
