Annotation of sys/net/ppp_defs.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: ppp_defs.h,v 1.13 2002/09/13 00:12:07 deraadt Exp $ */
2: /* $NetBSD: ppp_defs.h,v 1.1 1995/07/04 06:28:26 paulus Exp $ */
3:
4: /*
5: * ppp_defs.h - PPP definitions.
6: *
7: * Copyright (c) 1989-2002 Paul Mackerras. All rights reserved.
8: *
9: * Redistribution and use in source and binary forms, with or without
10: * modification, are permitted provided that the following conditions
11: * are met:
12: *
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: *
16: * 2. Redistributions in binary form must reproduce the above copyright
17: * notice, this list of conditions and the following disclaimer in
18: * the documentation and/or other materials provided with the
19: * distribution.
20: *
21: * 3. The name(s) of the authors of this software must not be used to
22: * endorse or promote products derived from this software without
23: * prior written permission.
24: *
25: * 4. Redistributions of any form whatsoever must retain the following
26: * acknowledgment:
27: * "This product includes software developed by Paul Mackerras
28: * <paulus@samba.org>".
29: *
30: * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
31: * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
32: * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
33: * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
34: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
35: * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
36: * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
37: */
38:
39: #ifndef _PPP_DEFS_H_
40: #define _PPP_DEFS_H_
41:
42: /*
43: * The basic PPP frame.
44: */
45: #define PPP_HDRLEN 4 /* octets for standard ppp header */
46: #define PPP_FCSLEN 2 /* octets for FCS */
47: #define PPP_MRU 1500 /* default MRU = max length of info field */
48:
49: #define PPP_ADDRESS(p) (((u_char *)(p))[0])
50: #define PPP_CONTROL(p) (((u_char *)(p))[1])
51: #define PPP_PROTOCOL(p) ((((u_char *)(p))[2] << 8) + ((u_char *)(p))[3])
52:
53: /*
54: * Significant octet values.
55: */
56: #define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */
57: #define PPP_UI 0x03 /* Unnumbered Information */
58: #define PPP_FLAG 0x7e /* Flag Sequence */
59: #define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */
60: #define PPP_TRANS 0x20 /* Asynchronous transparency modifier */
61:
62: /*
63: * Protocol field values.
64: */
65: #define PPP_IP 0x21 /* Internet Protocol */
66: #define PPP_XNS 0x25 /* Xerox NS */
67: #define PPP_AT 0x29 /* AppleTalk Protocol */
68: #define PPP_IPX 0x2b /* Internetwork Packet Exchange */
69: #define PPP_VJC_COMP 0x2d /* VJ compressed TCP */
70: #define PPP_VJC_UNCOMP 0x2f /* VJ uncompressed TCP */
71: #define PPP_IPV6 0x57 /* Internet Protocol Version 6 */
72: #define PPP_COMP 0xfd /* compressed packet */
73: #define PPP_IPCP 0x8021 /* IP Control Protocol */
74: #define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */
75: #define PPP_IPXCP 0x802b /* IPX Control Protocol */
76: #define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */
77: #define PPP_CCP 0x80fd /* Compression Control Protocol */
78: #define PPP_LCP 0xc021 /* Link Control Protocol */
79: #define PPP_PAP 0xc023 /* Password Authentication Protocol */
80: #define PPP_LQR 0xc025 /* Link Quality Report protocol */
81: #define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */
82: #define PPP_CBCP 0xc029 /* Callback Control Protocol */
83:
84: /*
85: * Values for FCS calculations.
86: */
87: #define PPP_INITFCS 0xffff /* Initial FCS value */
88: #define PPP_GOODFCS 0xf0b8 /* Good final FCS value */
89: #define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
90:
91: /*
92: * A 32-bit unsigned integral type.
93: */
94: #ifndef __BIT_TYPES_DEFINED__
95: #ifdef UINT32_T
96: typedef UINT32_T u_int32_t;
97: #else
98: typedef unsigned int u_int32_t;
99: typedef unsigned short u_int16_t;
100: #endif
101: #endif
102:
103: /*
104: * Extended asyncmap - allows any character to be escaped.
105: */
106: typedef u_int32_t ext_accm[8];
107:
108: /*
109: * What to do with network protocol (NP) packets.
110: */
111: enum NPmode {
112: NPMODE_PASS, /* pass the packet through */
113: NPMODE_DROP, /* silently drop the packet */
114: NPMODE_ERROR, /* return an error */
115: NPMODE_QUEUE /* save it up for later. */
116: };
117:
118: /*
119: * Statistics.
120: */
121: struct pppstat {
122: u_int ppp_ibytes; /* bytes received */
123: u_int ppp_ipackets; /* packets received */
124: u_int ppp_ierrors; /* receive errors */
125: u_int ppp_obytes; /* bytes sent */
126: u_int ppp_opackets; /* packets sent */
127: u_int ppp_oerrors; /* transmit errors */
128: };
129:
130: struct vjstat {
131: u_int vjs_packets; /* outbound packets */
132: u_int vjs_compressed; /* outbound compressed packets */
133: u_int vjs_searches; /* searches for connection state */
134: u_int vjs_misses; /* times couldn't find conn. state */
135: u_int vjs_uncompressedin; /* inbound uncompressed packets */
136: u_int vjs_compressedin; /* inbound compressed packets */
137: u_int vjs_errorin; /* inbound unknown type packets */
138: u_int vjs_tossed; /* inbound packets tossed because of error */
139: };
140:
141: struct ppp_stats {
142: struct pppstat p; /* basic PPP statistics */
143: struct vjstat vj; /* VJ header compression statistics */
144: };
145:
146: struct compstat {
147: u_int unc_bytes; /* total uncompressed bytes */
148: u_int unc_packets; /* total uncompressed packets */
149: u_int comp_bytes; /* compressed bytes */
150: u_int comp_packets; /* compressed packets */
151: u_int inc_bytes; /* incompressible bytes */
152: u_int inc_packets; /* incompressible packets */
153: u_int ratio; /* recent compression ratio << 8 */
154: };
155:
156: struct ppp_comp_stats {
157: struct compstat c; /* packet compression statistics */
158: struct compstat d; /* packet decompression statistics */
159: };
160:
161: /*
162: * The following structure records the time in seconds since
163: * the last NP packet was sent or received.
164: */
165: struct ppp_idle {
166: time_t xmit_idle; /* time since last NP packet sent */
167: time_t recv_idle; /* time since last NP packet received */
168: };
169:
170: #endif /* _PPP_DEFS_H_ */
CVSweb