summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/net/pppio.h
blob: c34544836c5bdc5700874100f6d2d275abf29c32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/*
 * pppio.h - ioctl and other misc. definitions for STREAMS modules.
 *
 * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 *
 * Copyright (c) 1994 The Australian National University.
 * All rights reserved.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation is hereby granted, provided that the above copyright
 * notice appears in all copies.  This software is provided without any
 * warranty, express or implied. The Australian National University
 * makes no representations about the suitability of this software for
 * any purpose.
 *
 * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
 * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
 * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
 * OF SUCH DAMAGE.
 *
 * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
 * OR MODIFICATIONS.
 *
 * $Id: pppio.h,v 1.8 1996/08/28 06:36:51 paulus Exp $
 */

#ifndef __PPPIO_H
#define	__PPPIO_H

#pragma ident	"%Z%%M%	%I%	%E% SMI"

#ifdef	__cplusplus
extern "C" {
#endif

#define	_PPPIO(n)	(('p' << 8) + (n))

#define	PPPIO_NEWPPA	_PPPIO(130)	/* allocate a new PPP unit */
#define	PPPIO_GETSTAT	_PPPIO(131)	/* get PPP statistics */
#define	PPPIO_GETCSTAT	_PPPIO(132)	/* get PPP compression stats */
#define	PPPIO_MTU	_PPPIO(133)	/* set max transmission unit */
#define	PPPIO_MRU	_PPPIO(134)	/* set max receive unit */
#define	PPPIO_CFLAGS	_PPPIO(135)	/* set/clear/get compression flags */
#define	PPPIO_XCOMP	_PPPIO(136)	/* alloc transmit compressor */
#define	PPPIO_RCOMP	_PPPIO(137)	/* alloc receive decompressor */
#define	PPPIO_XACCM	_PPPIO(138)	/* set transmit asyncmap */
#define	PPPIO_RACCM	_PPPIO(139)	/* set receive asyncmap */
#define	PPPIO_VJINIT	_PPPIO(140)	/* initialize VJ comp/decomp */
#define	PPPIO_ATTACH	_PPPIO(141)	/* attach to a ppa (without putmsg) */
#define	PPPIO_LASTMOD	_PPPIO(142)	/* mark last ppp module */
#define	PPPIO_GCLEAN	_PPPIO(143)	/* get 8-bit-clean flags */
#define	PPPIO_DEBUG	_PPPIO(144)	/* request debug information */
#define	PPPIO_BIND	_PPPIO(145)	/* bind to SAP */
#define	PPPIO_NPMODE	_PPPIO(146)	/* set mode for handling data pkts */
#define	PPPIO_GIDLE	_PPPIO(147)	/* get time since last data pkt */
#define	PPPIO_PASSFILT	_PPPIO(148)	/* set filter for packets to pass */
#define	PPPIO_ACTIVEFILT _PPPIO(149)	/* set filter for "link active" pkts */
#define	PPPIO_USETIMESTAMP _PPPIO(150)	/* enable packet time-stamp */
#define	PPPIO_DETACH	_PPPIO(151)	/* detach from a ppa (w/o putmsg ) */
#define	PPPIO_XFCS	_PPPIO(152)	/* set transmit FCS type */
#define	PPPIO_RFCS	_PPPIO(153)	/* set receive FCS type */
#define	PPPIO_COMPLEV	_PPPIO(154)	/* set compression effort level */
#define	PPPIO_GTYPE	_PPPIO(155)	/* get existing driver type */
#define	PPPIO_MUX	_PPPIO(156)	/* multiplexed frame */
#define	PPPIO_GETSTAT64	_PPPIO(157)	/* get PPP 64-bit statistics */
#define	PPPIO_BLOCKNP	_PPPIO(158)	/* block pkts with proto np in kernel */
#define	PPPIO_UNBLOCKNP	_PPPIO(159)	/* unblock pkts with proto np */

/* Values for PPPIO_MUX FLAGS */
#define	X_MUXMASK	0x10		/* transmit muxed frame option */
#define	R_MUXMASK	0x20		/* receive muxed frame option */

/*
 * Values for PPPIO_CFLAGS.  Data sent in is u_int32_t val[2], where
 * result is newflags = val[0] | (oldflags & ~val[1]).  Returned data
 * is a single u_int32_t, containing the current flags.
 */
#define	COMP_AC		0x1		/* compress address/control */
#define	DECOMP_AC	0x2		/* decompress address/control */
#define	COMP_PROT	0x4		/* compress PPP protocol */
#define	DECOMP_PROT	0x8		/* decompress PPP protocol */

#define	COMP_VJC	0x10		/* compress TCP/IP headers */
#define	COMP_VJCCID	0x20		/* compress connection ID as well */
#define	DECOMP_VJC	0x40		/* decompress TCP/IP headers */
#define	DECOMP_VJCCID	0x80		/* accept compressed connection ID */

#define	CCP_ISOPEN	0x100		/* look at CCP packets */
#define	CCP_ISUP	0x200		/* do packet comp/decomp */
#define	CCP_ERROR	0x400		/* (status) error in packet decomp */
#define	CCP_FATALERROR	0x800		/* (status) fatal error ditto */
#define	CCP_COMP_RUN	0x1000		/* (status) seen CCP ack sent */
#define	CCP_DECOMP_RUN	0x2000		/* (status) seen CCP ack rcvd */


/*
 * Values for PPPIO_XFCS/PPPIO_RFCS.  (Note that we don't support
 * simultaneous use of 16 bit and 32 bit CRCs.)
 */
#define	PPPFCS_16	0		/* The default, usually; CRC-16 */
#define	PPPFCS_32	1		/* CRC-32 */
#define	PPPFCS_NONE	2		/* No CRC */

/*
 * Values for 8-bit-clean flags.
 */
#define	RCV_B7_0	1		/* have rcvd char with bit 7 = 0 */
#define	RCV_B7_1	2		/* have rcvd char with bit 7 = 1 */
#define	RCV_EVNP	4		/* have rcvd char with even parity */
#define	RCV_ODDP	8		/* have rcvd char with odd parity */

/*
 * Values for the first byte of M_CTL messages passed between
 * PPP modules.
 */
#define	PPPCTL_OERROR	0xe0		/* output error [up] */
#define	PPPCTL_IERROR	0xe1		/* input error (e.g. FCS) [up] */
#define	PPPCTL_MTU	0xe2		/* set MTU [down] */
#define	PPPCTL_MRU	0xe3		/* set MRU [down] */
#define	PPPCTL_UNIT	0xe4		/* note PPP unit number [down] */

/*
 * Values for the u_int32_t argument to PPPIO_DEBUG.
 */
#define	PPPDBG_DUMP	0x10000		/* print out debug info now */
#define	PPPDBG_LOG	0x100		/* log various things */
#define	PPPDBG_DRIVER	0		/* identifies ppp driver as target */
#define	PPPDBG_IF	1		/* identifies ppp network i/f target */
#define	PPPDBG_COMP	2		/* identifies ppp compression target */
#define	PPPDBG_AHDLC	3		/* identifies ppp async hdlc target */

/*
 * Values for the u_int32_t return from PPPIO_GTYPE.  Only lastmod
 * should respond.  Current modules return PPPTYP_AHDLC (async
 * module), PPPTYP_HC (compression module) and PPPTYP_MUX (PPP
 * interface driver).
 */
#define	PPPTYP_HDLC	0		/* raw HDLC I/O; no PPP handling */
#define	PPPTYP_AHDLC	1		/* async HDLC; has [XR]ACCM */
#define	PPPTYP_HC	2		/* HDLC with ACFC and PFC support */
#define	PPPTYP_AHC	3		/* async with ACFC and PFC */
#define	PPPTYP_MUX	4		/* multiplexor */

#ifdef SOL2
/* Officially allocated module numbers */
#define	PPP_MOD_ID	2101	/* PPP multiplexor */
#define	COMP_MOD_ID	2102	/* Data and header compression */
#define	AHDLC_MOD_ID	2103	/* Asynchronous HDLC-like encapsulation */
#define	TUN_MOD_ID	2104	/* Tunneling protocols */
#define	MP_MOD_ID	2105	/* Multilink PPP */
#define	PPP_DRV_NAME	"sppp"
#define	AHDLC_MOD_NAME	"spppasyn"
#define	COMP_MOD_NAME	"spppcomp"
#define	TUN_MOD_NAME	"sppptun"
#define	MP_MOD_NAME	"spppmp"
#else
#define	PPP_MOD_ID	0xb1a6
#define	COMP_MOD_ID	0xbadf
#define	AHDLC_MOD_ID	0x7d23
#define	PPP_DRV_NAME	"ppp"
#define	AHDLC_MOD_NAME	"ppp_ahdl"
#define	COMP_MOD_NAME	"ppp_comp"
#endif
#define	PPP_DEV_NAME	"/dev/" PPP_DRV_NAME

#ifdef	__cplusplus
}
#endif

#endif /* __PPPIO_H */