source: rtems/c/src/exec/libnetworking/net/ppp_defs.h @ a6abd67

4.104.114.84.95
Last change on this file since a6abd67 was d0950ad, checked in by Joel Sherrill <joel.sherrill@…>, on 11/30/99 at 22:12:50

Added port of ppp-2.3.5 from Tomasz Domin <dot@…> of ComArch? SA.
Tomasz only tested this on the mpc823.

The official site for the original source for this PPP implementation is:

ftp://cs.anu.edu.au/pub/software/ppp

NOTE: As of 11/30/1999, the current version of this source is 2.3.10.

  • Property mode set to 100644
File size: 6.0 KB
Line 
1/*      $Id$    */
2
3/*
4 * ppp_defs.h - PPP definitions.
5 *
6 * Copyright (c) 1994 The Australian National University.
7 * All rights reserved.
8 *
9 * Permission to use, copy, modify, and distribute this software and its
10 * documentation is hereby granted, provided that the above copyright
11 * notice appears in all copies.  This software is provided without any
12 * warranty, express or implied. The Australian National University
13 * makes no representations about the suitability of this software for
14 * any purpose.
15 *
16 * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
17 * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
18 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
19 * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
20 * OF SUCH DAMAGE.
21 *
22 * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
23 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
25 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
26 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
27 * OR MODIFICATIONS.
28 */
29
30#ifndef _PPP_DEFS_H_
31#define _PPP_DEFS_H_
32
33/*
34 * The basic PPP frame.
35 */
36#define PPP_HDRLEN      4       /* octets for standard ppp header */
37#define PPP_FCSLEN      2       /* octets for FCS */
38
39/*
40 * Packet sizes
41 *
42 * Note - lcp shouldn't be allowed to negotiate stuff outside these
43 *        limits.  See lcp.h in the pppd directory.
44 * (XXX - these constants should simply be shared by lcp.c instead
45 *        of living in lcp.h)
46 */
47#define PPP_MTU         1500    /* Default MTU (size of Info field) */
48#define PPP_MAXMTU      65535 - (PPP_HDRLEN + PPP_FCSLEN)
49#define PPP_MINMTU      64
50#define PPP_MRU         1500    /* default MRU = max length of info field */
51#define PPP_MAXMRU      65000   /* Largest MRU we allow */
52#define PPP_MINMRU      128
53
54#define PPP_ADDRESS(p)  (((u_char *)(p))[0])
55#define PPP_CONTROL(p)  (((u_char *)(p))[1])
56#define PPP_PROTOCOL(p) ((((u_char *)(p))[2] << 8) + ((u_char *)(p))[3])
57
58/*
59 * Significant octet values.
60 */
61#define PPP_ALLSTATIONS 0xff    /* All-Stations broadcast address */
62#define PPP_UI          0x03    /* Unnumbered Information */
63#define PPP_FLAG        0x7e    /* Flag Sequence */
64#define PPP_ESCAPE      0x7d    /* Asynchronous Control Escape */
65#define PPP_TRANS       0x20    /* Asynchronous transparency modifier */
66
67/*
68 * Protocol field values.
69 */
70#define PPP_IP          0x21    /* Internet Protocol */
71#define PPP_AT          0x29    /* AppleTalk Protocol */
72#define PPP_IPX         0x2b    /* IPX protocol */
73#define PPP_VJC_COMP    0x2d    /* VJ compressed TCP */
74#define PPP_VJC_UNCOMP  0x2f    /* VJ uncompressed TCP */
75#define PPP_IPV6        0x57    /* Internet Protocol Version 6 */
76#define PPP_COMP        0xfd    /* compressed packet */
77#define PPP_IPCP        0x8021  /* IP Control Protocol */
78#define PPP_ATCP        0x8029  /* AppleTalk Control Protocol */
79#define PPP_IPXCP       0x802b  /* IPX Control Protocol */
80#define PPP_CCP         0x80fd  /* Compression Control Protocol */
81#define PPP_LCP         0xc021  /* Link Control Protocol */
82#define PPP_PAP         0xc023  /* Password Authentication Protocol */
83#define PPP_LQR         0xc025  /* Link Quality Report protocol */
84#define PPP_CHAP        0xc223  /* Cryptographic Handshake Auth. Protocol */
85#define PPP_CBCP        0xc029  /* Callback Control Protocol */
86
87/*
88 * Values for FCS calculations.
89 */
90#define PPP_INITFCS     0xffff  /* Initial FCS value */
91#define PPP_GOODFCS     0xf0b8  /* Good final FCS value */
92#define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
93
94/*
95 * A 32-bit unsigned integral type.
96 */
97
98#if !defined(__BIT_TYPES_DEFINED__) && !defined(_BITYPES) \
99 && !defined(__FreeBSD__) && (NS_TARGET < 40) && !defined(__rtems__)
100#ifdef  UINT32_T
101typedef UINT32_T        u_int32_t;
102#else
103typedef unsigned int    u_int32_t;
104typedef unsigned short  u_int16_t;
105#endif
106#endif
107
108/*
109 * Extended asyncmap - allows any character to be escaped.
110 */
111typedef u_int32_t       ext_accm[8];
112
113/*
114 * What to do with network protocol (NP) packets.
115 */
116enum NPmode {
117    NPMODE_PASS,                /* pass the packet through */
118    NPMODE_DROP,                /* silently drop the packet */
119    NPMODE_ERROR,               /* return an error */
120    NPMODE_QUEUE                /* save it up for later. */
121};
122
123/*
124 * Statistics.
125 */
126struct pppstat  {
127    unsigned int ppp_ibytes;    /* bytes received */
128    unsigned int ppp_ipackets;  /* packets received */
129    unsigned int ppp_ierrors;   /* receive errors */
130    unsigned int ppp_obytes;    /* bytes sent */
131    unsigned int ppp_opackets;  /* packets sent */
132    unsigned int ppp_oerrors;   /* transmit errors */
133};
134
135struct vjstat {
136    unsigned int vjs_packets;   /* outbound packets */
137    unsigned int vjs_compressed; /* outbound compressed packets */
138    unsigned int vjs_searches;  /* searches for connection state */
139    unsigned int vjs_misses;    /* times couldn't find conn. state */
140    unsigned int vjs_uncompressedin; /* inbound uncompressed packets */
141    unsigned int vjs_compressedin; /* inbound compressed packets */
142    unsigned int vjs_errorin;   /* inbound unknown type packets */
143    unsigned int vjs_tossed;    /* inbound packets tossed because of error */
144};
145
146struct ppp_stats {
147    struct pppstat p;           /* basic PPP statistics */
148    struct vjstat vj;           /* VJ header compression statistics */
149};
150
151struct compstat {
152    unsigned int unc_bytes;     /* total uncompressed bytes */
153    unsigned int unc_packets;   /* total uncompressed packets */
154    unsigned int comp_bytes;    /* compressed bytes */
155    unsigned int comp_packets;  /* compressed packets */
156    unsigned int inc_bytes;     /* incompressible bytes */
157    unsigned int inc_packets;   /* incompressible packets */
158    unsigned int ratio;         /* recent compression ratio << 8 */
159};
160
161struct ppp_comp_stats {
162    struct compstat c;          /* packet compression statistics */
163    struct compstat d;          /* packet decompression statistics */
164};
165
166/*
167 * The following structure records the time in seconds since
168 * the last NP packet was sent or received.
169 */
170struct ppp_idle {
171    time_t xmit_idle;           /* time since last NP packet sent */
172    time_t recv_idle;           /* time since last NP packet received */
173};
174
175#ifndef __P
176#ifdef __STDC__
177#define __P(x)  x
178#else
179#define __P(x)  ()
180#endif
181#endif
182
183#endif /* _PPP_DEFS_H_ */
Note: See TracBrowser for help on using the repository browser.