Main index | Section 4 | Options |
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <net/slcompress.h>
#include <netgraph/ng_vjc.h>
Van Jacobson compression only applies to TCP packets. Only "normal" (i.e., common case) TCP packets are actually compressed. These are output on the vjcomp hook. Other TCP packets are run through the state machine but not compressed; these appear on the vjuncomp hook. Other non-TCP IP packets are forwarded unchanged to vjip.
When connecting to a ng_ppp(4) node, the ip, vjuncomp, vjcomp, and vjip hooks should be connected to the ng_ppp(4) node's vjc_ip, vjc_vjcomp, vjc_vjuncomp, and vjc_ip hooks, respectively.
ip | |
Upstream (uncompressed) IP packets. | |
vjcomp | |
Downstream compressed TCP packets. | |
vjuncomp | |
Downstream uncompressed TCP packets. | |
vjip | |
Downstream uncompressed IP packets. | |
NGM_VJC_SET_CONFIG ( setconfig) | |
This command resets the compression state and configures it according
to the supplied
struct ngm_vjc_config
argument.
This structure contains the following fields:
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 */ }; When enableComp is set to zero, all packets received on the ip hook are forwarded unchanged out the vjip hook. Similarly, when enableDecomp is set to zero, all packets received on the vjip hook are forwarded unchanged out the ip hook, and packets are not accepted on the vjcomp and vjuncomp 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. When enabling compression, maxChannel should be set to the number of outgoing compression channels minus one, and is a value between 3 and 15, inclusive. The compressCID 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 NGM_VJC_RECV_ERROR below). | |
NGM_VJC_GET_STATE ( getstate) | |
This command returns the node's current state described by the struct slcompress structure, which is defined in <net/slcompress.h>. | |
NGM_VJC_CLR_STATS ( clrstats) | |
Clears the node statistics counters. Statistics are also cleared whenever the enableComp or enableDecomp fields are changed from zero to one by a NGM_VJC_SET_CONFIG control message. | |
NGM_VJC_RECV_ERROR ( recverror) | |
When the peer has CID header field compression enabled, this message must be sent to the local vjc 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. | |
RFC 1144, Compressing TCP/IP Headers,
,RFC 1332, The PPP Internet Control Protocol (IPCP),
,When built as a loadable kernel module, this module includes the file net/slcompress.c. Although loading the module should fail if net/slcompress.c 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.
NG_VJC (4) | January 19, 1999 |
Main index | Section 4 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.