ng_vjc.h revision 139823
1222689Srwatson
2222689Srwatson/*
3222689Srwatson * ng_vjc.h
4222689Srwatson */
5222689Srwatson
6222689Srwatson/*-
7222689Srwatson * Copyright (c) 1996-1999 Whistle Communications, Inc.
8222689Srwatson * All rights reserved.
9222689Srwatson *
10222689Srwatson * Subject to the following obligations and disclaimer of warranty, use and
11222689Srwatson * redistribution of this software, in source or object code forms, with or
12222689Srwatson * without modifications are expressly permitted by Whistle Communications;
13222689Srwatson * provided, however, that:
14222689Srwatson * 1. Any and all reproductions of the source or object code must include the
15222689Srwatson *    copyright notice above and the following disclaimer of warranties; and
16222689Srwatson * 2. No rights are granted, in any manner or form, to use Whistle
17222689Srwatson *    Communications, Inc. trademarks, including the mark "WHISTLE
18222689Srwatson *    COMMUNICATIONS" on advertising, endorsements, or otherwise except as
19222689Srwatson *    such appears in the above copyright notice or in the software.
20222689Srwatson *
21222689Srwatson * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
22222689Srwatson * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
23222689Srwatson * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
24222689Srwatson * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
25222689Srwatson * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
26222689Srwatson * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
27222689Srwatson * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
28222689Srwatson * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
29222689Srwatson * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
30222689Srwatson * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
31222689Srwatson * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
32222689Srwatson * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
33222689Srwatson * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
34222689Srwatson * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35222689Srwatson * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
36222689Srwatson * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
37222689Srwatson * OF SUCH DAMAGE.
38222689Srwatson *
39222689Srwatson * Author: Archie Cobbs <archie@freebsd.org>
40222689Srwatson *
41222689Srwatson * $FreeBSD: head/sys/netgraph/ng_vjc.h 139823 2005-01-07 01:45:51Z imp $
42222689Srwatson * $Whistle: ng_vjc.h,v 1.6 1999/01/25 02:40:22 archie Exp $
43222689Srwatson */
44222689Srwatson
45222689Srwatson#ifndef _NETGRAPH_NG_VJC_H_
46222689Srwatson#define _NETGRAPH_NG_VJC_H_
47222689Srwatson
48222689Srwatson /* Node type name and magic cookie */
49222689Srwatson#define NG_VJC_NODE_TYPE	"vjc"
50222689Srwatson#define NGM_VJC_COOKIE		868219210
51222689Srwatson
52222689Srwatson /* Hook names */
53222689Srwatson#define NG_VJC_HOOK_IP		"ip"		/* normal IP traffic */
54222689Srwatson#define NG_VJC_HOOK_VJCOMP	"vjcomp"	/* compressed TCP */
55222689Srwatson#define NG_VJC_HOOK_VJUNCOMP	"vjuncomp"	/* uncompressed TCP */
56222689Srwatson#define NG_VJC_HOOK_VJIP	"vjip"		/* uncompressed IP */
57222689Srwatson
58222689Srwatson /* Minimum and maximum number of compression channels */
59222689Srwatson#define NG_VJC_MIN_CHANNELS	4
60222689Srwatson#define NG_VJC_MAX_CHANNELS	16
61222689Srwatson
62222689Srwatson /* Configure struct */
63222689Srwatsonstruct ngm_vjc_config {
64222689Srwatson	u_char	enableComp;	/* Enable compression */
65222689Srwatson	u_char	enableDecomp;	/* Enable decompression */
66222689Srwatson	u_char	maxChannel;	/* Number of compression channels - 1 */
67222689Srwatson	u_char	compressCID;	/* OK to compress outgoing CID's */
68222689Srwatson};
69222689Srwatson
70222689Srwatson/* Keep this in sync with the above structure definition */
71222689Srwatson#define NG_VJC_CONFIG_TYPE_INFO	{				\
72222689Srwatson	  { "enableComp",	&ng_parse_uint8_type	},	\
73222689Srwatson	  { "enableDecomp",	&ng_parse_uint8_type	},	\
74222689Srwatson	  { "maxChannel",	&ng_parse_uint8_type	},	\
75222689Srwatson	  { "compressCID",	&ng_parse_uint8_type	},	\
76222689Srwatson	  { NULL }						\
77222689Srwatson}
78222689Srwatson
79222689Srwatson /* Netgraph commands */
80222689Srwatsonenum {
81222689Srwatson	NGM_VJC_SET_CONFIG,	/* Supply a struct ngm_vjc_config */
82222689Srwatson	NGM_VJC_GET_CONFIG,	/* Returns a struct ngm_vjc_config */
83222689Srwatson	NGM_VJC_GET_STATE,	/* Returns current struct slcompress */
84222689Srwatson	NGM_VJC_CLR_STATS,	/* Clears statistics counters */
85222689Srwatson	NGM_VJC_RECV_ERROR,	/* Indicate loss of incoming frame */
86222689Srwatson};
87222689Srwatson
88222689Srwatson#endif /* _NETGRAPH_NG_VJC_H_ */
89222689Srwatson