1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright (c) 2001 by Sun Microsystems, Inc.
24  * All rights reserved.
25  */
26 
27 #ifndef	_SNOOP_PPP_H
28 #define	_SNOOP_PPP_H
29 
30 /*
31  *  Control Protocol (LCP, IPCP, etc.) message code numbers.
32  */
33 #define	CODE_VENDOR	0	/* Vendor Specif Code */
34 #define	CODE_CONFREQ	1	/* Configuration Request */
35 #define	CODE_CONFACK	2	/* Configuration Ack */
36 #define	CODE_CONFNAK	3	/* Configuration Nak */
37 #define	CODE_CONFREJ	4	/* Configuration Reject */
38 #define	CODE_TERMREQ	5	/* Termination Request */
39 #define	CODE_TERMACK	6	/* Termination Ack */
40 #define	CODE_CODEREJ	7	/* Code Reject */
41 /*
42  * LCP specific codes.
43  */
44 #define	CODE_PROTREJ	8	/* Protocol Reject */
45 #define	CODE_ECHOREQ	9	/* Echo Request */
46 #define	CODE_ECHOREP	10	/* Echo Reply */
47 #define	CODE_DISCREQ	11	/* Discard Request */
48 #define	CODE_IDENT	12	/* Identification */
49 #define	CODE_TIMEREMAIN	13	/* Time Remaining */
50 /*
51  * CCP and ECP specific codes.
52  */
53 #define	CODE_RESETREQ	14
54 #define	CODE_RESETACK	15
55 
56 /*
57  * CHAP codes.
58  */
59 #define	CODE_CHALLENGE	1
60 #define	CODE_RESPONSE	2
61 #define	CODE_SUCCESS	3
62 #define	CODE_FAILURE	4
63 
64 /*
65  * PAP codes.
66  */
67 #define	CODE_AUTHREQ	1
68 #define	CODE_AUTHACK	2
69 #define	CODE_AUTHNAK	3
70 
71 /*
72  * Option types for various control protocols.
73  */
74 #define	OPT_LCP_VENDOR		0
75 #define	OPT_LCP_MRU		1
76 #define	OPT_LCP_ASYNCMAP	2
77 #define	OPT_LCP_AUTHTYPE	3
78 #define	OPT_LCP_QUALITY		4
79 #define	OPT_LCP_MAGICNUMBER	5
80 #define	OPT_LCP_PCOMPRESSION	7
81 #define	OPT_LCP_ACCOMPRESSION	8
82 #define	OPT_LCP_FCSALTERN	9
83 #define	OPT_LCP_SELFDESCPAD	10
84 #define	OPT_LCP_NUMBERED	11
85 #define	OPT_LCP_MULTILINKPROC	12
86 #define	OPT_LCP_CALLBACK	13
87 #define	OPT_LCP_CONNECTTIME	14
88 #define	OPT_LCP_COMPOUNDFRAMES	15
89 #define	OPT_LCP_DATAENCAP	16
90 #define	OPT_LCP_MRRU		17
91 #define	OPT_LCP_SSNHF		18
92 #define	OPT_LCP_EPDISC		19
93 #define	OPT_LCP_DCEIDENT	21
94 #define	OPT_LCP_MLPLUSPROC	22
95 #define	OPT_LCP_LINKDISC	23
96 #define	OPT_LCP_AUTH		24
97 #define	OPT_LCP_COBS		25
98 #define	OPT_LCP_PFXELISION	26
99 #define	OPT_LCP_MPHDRFMT	27
100 #define	OPT_LCP_I18N		28
101 #define	OPT_LCP_SDL		29
102 #define	OPT_LCP_MUXING		30
103 
104 #define	OPT_IPCP_ADDRS		1
105 #define	OPT_IPCP_COMPRESSTYPE	2
106 #define	OPT_IPCP_ADDR		3
107 #define	OPT_IPCP_MOBILEIPV4	4
108 #define	OPT_IPCP_DNS1		129
109 #define	OPT_IPCP_NBNS1		130
110 #define	OPT_IPCP_DNS2		131
111 #define	OPT_IPCP_NBNS2		132
112 #define	OPT_IPCP_SUBNET		144
113 
114 #define	OPT_IPV6CP_IFACEID	1
115 #define	OPT_IPV6CP_COMPRESSTYPE	2
116 
117 #define	OPT_CCP_PROPRIETARY	0
118 #define	OPT_CCP_PREDICTOR1	1
119 #define	OPT_CCP_PREDICTOR2	2
120 #define	OPT_CCP_PUDDLEJUMP	3
121 #define	OPT_CCP_HPPPC		16
122 #define	OPT_CCP_STACLZS		17
123 #define	OPT_CCP_MPPC		18
124 #define	OPT_CCP_GANDALFFZA	19
125 #define	OPT_CCP_V42BIS		20
126 #define	OPT_CCP_BSDCOMP		21
127 #define	OPT_CCP_LZSDCP		23
128 #define	OPT_CCP_MAGNALINK	24
129 #define	OPT_CCP_DEFLATE		26
130 
131 #define	OPT_ECP_PROPRIETARY	0
132 #define	OPT_ECP_DESE		1
133 #define	OPT_ECP_3DESE		2
134 #define	OPT_ECP_DESEBIS		3
135 
136 #define	OPT_MUXCP_DEFAULTPID	1
137 
138 /*
139  * ppp_protoinfo_t's contain properties of PPP protocols which
140  * interpret_ppp() needs in order to properly decode the protocol data.
141  */
142 typedef struct ppp_protoinfo {
143 	uint16_t proto;			/* protocol number */
144 	char *name;			/* protocol name */
145 	int (*interpret_proto)();	/* interpret function */
146 	char *prefix;			/* string printed on detail lines */
147 	char *description;		/* string printed in detail header */
148 } ppp_protoinfo_t;
149 
150 
151 /*
152  * cp_optinfo contains information on control protocol options.
153  */
154 typedef void optformat_func_t(uchar_t *, uint8_t);
155 typedef struct cp_optinfo {
156 	uint8_t	opt_type;
157 	char *opt_name;
158 	uint8_t opt_minsize; /* min size of option, including type and len */
159 	optformat_func_t *opt_formatdata;
160 } cp_optinfo_t;
161 
162 
163 /*
164  * Packet format for PPP control and authentication protocols.
165  */
166 typedef struct ppp_pkt {
167 	uint8_t code;
168 	uint8_t id;
169 	uint16_t length;
170 } ppp_pkt_t;
171 
172 /*
173  * Structure of an LQR packet.
174  */
175 typedef struct lqr_pkt {
176 	uint32_t lqr_magic;
177 	uint32_t lqr_lastoutlqrs;
178 	uint32_t lqr_lastoutpackets;
179 	uint32_t lqr_lastoutoctets;
180 	uint32_t lqr_peerinlqrs;
181 	uint32_t lqr_peerinpackets;
182 	uint32_t lqr_peerindiscards;
183 	uint32_t lqr_peerinerrors;
184 	uint32_t lqr_peerinoctets;
185 	uint32_t lqr_peeroutlqrs;
186 	uint32_t lqr_peeroutpackets;
187 	uint32_t lqr_peeroutoctets;
188 } lqr_pkt_t;
189 
190 #endif /* _SNOOP_PPP_H */
191