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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
/* $Id: ppp_defs.h,v 1.14 1999/08/13 01:55:40 paulus Exp $ */
/*
* ppp_defs.h - PPP definitions.
*
* Copyright 2003 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.
*/
#ifndef _PPP_DEFS_H_
#define _PPP_DEFS_H_
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/*
* The basic PPP frame.
*/
#define PPP_HDRLEN 4 /* octets for standard ppp header */
#define PPP_FCSLEN 2 /* octets for FCS */
#define PPP_FCS32LEN 4 /* octets for FCS-32 */
#define PPP_MAX_MUX_LEN 127 /* maximum length of muxed frame */
#define PFF 0x80 /* protocol field flag */
/*
* Packet sizes
*/
#define PPP_MTU 1500 /* Default MTU (size of Info field) */
#define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN)
#define PPP_MINMTU 64
#define PPP_MRU 1500 /* default MRU = max length of info field */
#define PPP_MAXMRU 65000 /* Largest MRU we allow */
#define PPP_MINMRU 128
#define PPP_ADDRESS(p) (((uchar_t *)(p))[0])
#define PPP_CONTROL(p) (((uchar_t *)(p))[1])
#define PPP_PROTOCOL(p) ((((uchar_t *)(p))[2] << 8) + ((uchar_t *)(p))[3])
/*
* Significant octet values.
*/
#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */
#define PPP_UI 0x03 /* Unnumbered Information */
#define PPP_FLAG 0x7e /* Flag Sequence */
#define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */
#define PPP_TRANS 0x20 /* Asynchronous transparency modifier */
/*
* Protocol field values.
*/
#define PPP_IP 0x21 /* Internet Protocol */
#define PPP_OSI 0x23 /* OSI Network Layer */
#define PPP_AT 0x29 /* AppleTalk Protocol */
#define PPP_IPX 0x2b /* IPX protocol */
#define PPP_VJC_COMP 0x2d /* VJ compressed TCP */
#define PPP_VJC_UNCOMP 0x2f /* VJ uncompressed TCP */
#define PPP_BRIDGE 0x31 /* Bridging */
#define PPP_MP 0x3d /* Multilink protocol */
#define PPP_ENCRYPT 0x53 /* Encryption */
#define PPP_ENCRYPTFRAG 0x55 /* Individual Link Encryption */
#define PPP_IPV6 0x57 /* Internet Protocol Version 6 */
#define PPP_MUX 0x59 /* PPP Muxing */
#define PPP_FULLHDR 0x61 /* IP Compression; full header */
#define PPP_COMPTCP 0x63 /* IP Compression; compressed TCP */
#define PPP_COMPNONTCP 0x65 /* IP Compression; non TCP */
#define PPP_COMPUDP8 0x67 /* IP Compression; UDP, 8 bit CID */
#define PPP_COMPRTP8 0x69 /* IP Compression; RTP, 8 bit CID */
#define PPP_COMPFRAG 0xfb /* fragment compressed below bundle */
#define PPP_COMP 0xfd /* compressed packet */
#define PPP_802HELLO 0x201 /* 802.1d Hello (OBSOLETE) */
#define PPP_MPLS 0x281 /* MPLS Unicast */
#define PPP_MPLSMC 0x283 /* MPLS Multicast */
#define PPP_COMPTCPND 0x2063 /* IP Compression; compressed TCP no delta */
#define PPP_COMPSTATE 0x2065 /* IP Compression; state message */
#define PPP_COMPUDP16 0x2067 /* IP Compression; UDP, 16 bit CID */
#define PPP_COMPRTP16 0x2069 /* IP Compression; RTP, 16 bit CID */
#define PPP_IPCP 0x8021 /* IP Control Protocol */
#define PPP_OSINLCP 0x8023 /* OSI Network Layer Control Protocol */
#define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */
#define PPP_IPXCP 0x802b /* IPX Control Protocol */
#define PPP_BCP 0x8031 /* Bridging Control Protocol */
#define PPP_ECP 0x8053 /* Encryption Control Protocol */
#define PPP_ECPFRAG 0x8055 /* ECP at link level (below MP bundle) */
#define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */
#define PPP_MUXCP 0x8059 /* PPP Muxing Control Protocol */
#define PPP_CCPFRAG 0x80fb /* CCP at link level (below MP bundle) */
#define PPP_CCP 0x80fd /* Compression Control Protocol */
#define PPP_MPLSCP 0x8281 /* MPLS Control Protocol */
#define PPP_LCP 0xc021 /* Link Control Protocol */
#define PPP_PAP 0xc023 /* Password Authentication Protocol */
#define PPP_LQR 0xc025 /* Link Quality Report protocol */
#define PPP_BACP 0xc02b /* Bandwidth Allocation Control Protocol */
#define PPP_BAP 0xc02d /* Bandwidth Allocation Protocol */
#define PPP_CBCP 0xc029 /* Callback Control Protocol */
#define PPP_CHAP 0xc223 /* Challenge Handshake Auth. Protocol */
#define PPP_EAP 0xc227 /* Extensible Authentication Protocol */
/*
* Values for FCS calculations.
*/
#define PPP_INITFCS 0xffff /* Initial FCS value */
#define PPP_GOODFCS 0xf0b8 /* Good final FCS value */
#define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
#define PPPINITFCS16 PPP_INITFCS
#define PPPGOODFCS16 PPP_GOODFCS
#define PPPFCS16(fcs, c) PPP_FCS((fcs), (c))
#define PPPINITFCS32 0xfffffffful
#define PPPGOODFCS32 0xdebb20e3ul
#define PPPFCS32(fcs, c) (((fcs) >> 8) ^ crc32_table[((fcs) ^ (c)) & 0xff])
/* Marker values shared between pppdump and pppd. */
#define RECMARK_STARTSEND 1
#define RECMARK_STARTRECV 2
#define RECMARK_ENDSEND 3
#define RECMARK_ENDRECV 4
#define RECMARK_TIMEDELTA32 5
#define RECMARK_TIMEDELTA8 6
#define RECMARK_TIMESTART 7
/*
* A 32-bit unsigned integral type.
*/
#if !defined(__BIT_TYPES_DEFINED__) && !defined(_BITYPES) && \
!defined(__FreeBSD__) && (NS_TARGET < 40)
#ifdef UINT32_T
typedef UINT32_T u_int32_t;
#else
typedef unsigned int u_int32_t;
typedef unsigned short u_int16_t;
#endif
#endif
#if defined(__sun) && !defined(_SYS_INT_TYPES_H) && !defined(_UINT32_T)
/* Backward compatibility */
typedef uint_t uint32_t;
typedef ushort_t uint16_t;
typedef uchar_t uint8_t;
typedef unsigned long uintptr_t;
#define _UINT32_T
#endif
/*
* Extended asyncmap - allows any character to be escaped.
*/
typedef u_int32_t ext_accm[8];
/*
* What to do with network protocol (NP) packets.
*/
enum NPmode {
NPMODE_PASS, /* pass the packet through */
NPMODE_DROP, /* silently drop the packet */
NPMODE_ERROR, /* return an error */
NPMODE_QUEUE /* save it up for later. */
};
/*
* Statistics.
*/
struct pppstat {
u_int32_t ppp_ibytes; /* bytes received */
u_int32_t ppp_ipackets; /* packets received */
u_int32_t ppp_ierrors; /* receive errors */
u_int32_t ppp_obytes; /* bytes sent */
u_int32_t ppp_opackets; /* packets sent */
u_int32_t ppp_oerrors; /* transmit errors */
};
struct vjstat {
u_int32_t vjs_packets; /* outbound packets */
u_int32_t vjs_compressed; /* outbound compressed packets */
u_int32_t vjs_searches; /* searches for connection state */
u_int32_t vjs_misses; /* times couldn't find conn. state */
u_int32_t vjs_uncompressedin; /* inbound uncompressed packets */
u_int32_t vjs_compressedin; /* inbound compressed packets */
u_int32_t vjs_errorin; /* inbound unknown type packets */
u_int32_t vjs_tossed; /* inbound packets tossed because of error */
};
struct ppp_stats {
struct pppstat p; /* basic PPP statistics */
struct vjstat vj; /* VJ header compression statistics */
};
#ifdef SOL2
#define PPP_COUNTER_F "llu"
typedef uint64_t ppp_counter_t;
struct pppstat64 {
ppp_counter_t ppp_ibytes; /* bytes received */
ppp_counter_t ppp_ipackets; /* packets received */
ppp_counter_t ppp_ierrors; /* receive errors */
ppp_counter_t ppp_obytes; /* bytes sent */
ppp_counter_t ppp_opackets; /* packets sent */
ppp_counter_t ppp_oerrors; /* transmit errors */
};
struct ppp_stats64 {
struct pppstat64 p;
struct vjstat vj;
};
#else
#define PPP_COUNTER_F "u"
typedef u_int32_t ppp_counter_t;
#endif
struct compstat {
u_int32_t unc_bytes; /* total uncompressed bytes */
u_int32_t unc_packets; /* total uncompressed packets */
u_int32_t comp_bytes; /* compressed bytes */
u_int32_t comp_packets; /* compressed packets */
u_int32_t inc_bytes; /* incompressible bytes */
u_int32_t inc_packets; /* incompressible packets */
u_int32_t ratio; /* recent compression ratio << 8 */
};
struct ppp_comp_stats {
struct compstat c; /* packet compression statistics */
struct compstat d; /* packet decompression statistics */
};
/*
* The following structure records the time in seconds since
* the last NP packet was sent or received.
*/
struct ppp_idle {
/*
* Fix the length of these fields to be 32-bit, since
* otherwise, a time_t (long) is 64-bit in kernel while 32-bit
* in userland when running on a 64-bit CPU with a 64-bit OS.
*/
u_int32_t xmit_idle; /* time since last NP packet sent */
u_int32_t recv_idle; /* time since last NP packet received */
};
enum LSstat {
PPP_LINKSTAT_HANGUP = 0xabcd, /* link is hung up */
PPP_LINKSTAT_NEEDUP, /* link is down and needs to be up */
PPP_LINKSTAT_IPV4_UNBOUND, /* DL_UNBIND received on IPv4 stream */
PPP_LINKSTAT_IPV6_UNBOUND, /* DL_UNBIND received on IPv6 stream */
PPP_LINKSTAT_IPV4_BOUND, /* DL_BIND received on IPv4 stream */
PPP_LINKSTAT_IPV6_BOUND, /* DL_BIND received on IPv6 stream */
PPP_LINKSTAT_UP /* Integrated driver; hardware is up */
};
#define PPPLSMAGIC 0x53505050
struct ppp_ls {
u_int32_t magic; /* magic number identifier (PPPLSMAGIC) */
u_int32_t ppp_message; /* link status message */
};
#ifndef __P
#ifdef __STDC__
#define __P(x) x
#else
#define __P(x) ()
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif /* _PPP_DEFS_H_ */
|