use u_int32_t, fixed some ioctls
[ppp.git] / include / net / ppp_str.h
1 /*
2   ppp_str.h - streams version include file
3
4   Copyright (C) 1990 Brad K. Clements, All Rights Reserved,
5   See copyright statement in NOTES
6 */
7
8 #include        <sys/ioccom.h>
9
10 #define PPP_HDRLEN      4       /* octets for standard ppp header */
11 #define PPP_FCSLEN      2       /* octets for FCS */
12
13 #define PPP_ADDRESS(cp)         ((cp)[0])
14 #define PPP_CONTROL(cp)         ((cp)[1])
15 #define PPP_PROTOCOL(cp)        (((cp)[2] << 8) + (cp)[3])
16
17 #define PPP_ALLSTATIONS 0xff    /* All-Stations broadcast address */
18 #define PPP_UI          0x03    /* Unnumbered Information */
19 #define PPP_FLAG        0x7e    /* Flag Sequence */
20 #define PPP_ESCAPE      0x7d    /* Asynchronous Control Escape */
21 #define PPP_TRANS       0x20    /* Asynchronous transparency modifier */
22
23 /*
24  * Protocol field values.
25  */
26 #define PPP_IP          0x21    /* Internet Protocol */
27 #define PPP_XNS         0x25    /* Xerox NS */
28 #define PPP_VJC_COMP    0x2d    /* VJ compressed TCP */
29 #define PPP_VJC_UNCOMP  0x2f    /* VJ uncompressed TCP */
30 #define PPP_COMP        0xfd    /* compressed packet */
31 #define PPP_LCP         0xc021  /* Link Control Protocol */
32 #define PPP_CCP         0x80fd  /* Compression Control Protocol */
33
34 /*
35  * Important FCS values.
36  */
37 #define PPP_INITFCS     0xffff  /* Initial FCS value */
38 #define PPP_GOODFCS     0xf0b8  /* Good final FCS value */
39 #define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
40
41 /*
42  * Packet sizes
43  */
44 #define PPP_MTU         1500    /* Default MTU (size of Info field) */
45 #define PPP_MRU         1500    /* Default MRU (max receive unit) */
46 #define PPP_MAXMRU      65000   /* Largest MRU we allow */
47 #define PPP_HDRLEN      4       /* sizeof(struct ppp_header) must be 4 */
48
49 /*
50  * A 32-bit unsigned integral type.
51  */
52 #ifdef  UINT32_T
53 typedef UINT32_T        u_int32_t;
54 #else
55 typedef unsigned long   u_int32_t;
56 #endif
57
58 /* Extended asyncmap - allows any character to be escaped. */
59 typedef u_int32_t       ext_accm[8];
60
61 /*
62  * Statistics.
63  */
64 struct pppstat  {
65     u_int       ppp_ibytes;     /* bytes received */
66     u_int       ppp_ipackets;   /* packets received */
67     u_int       ppp_ierrors;    /* receive errors */
68     u_int       ppp_obytes;     /* bytes sent */
69     u_int       ppp_opackets;   /* packets sent */
70     u_int       ppp_oerrors;    /* transmit errors */
71 };
72
73 struct vjstat {
74     u_int       sls_packets;    /* outbound packets */
75     u_int       sls_compressed; /* outbound compressed packets */
76     u_int       sls_searches;   /* searches for connection state */
77     u_int       sls_misses;     /* times couldn't find conn. state */
78     u_int       sls_uncompressedin; /* inbound uncompressed packets */
79     u_int       sls_compressedin;   /* inbound compressed packets */
80     u_int       sls_errorin;    /* inbound unknown type packets */
81     u_int       sls_tossed;     /* inbound packets tossed because of error */
82 };
83
84 struct ppp_stats {
85     struct pppstat      p;
86     struct vjstat       vj;
87 };
88
89 /*
90  * What to do with network protocol (NP) packets.
91  */
92
93 enum NPmode {
94     NPMODE_PASS,                /* pass the packet through */
95     NPMODE_DROP,                /* silently drop the packet */
96     NPMODE_ERROR,               /* return an error */
97     NPMODE_QUEUE                /* save it up for later. */
98 };
99
100 struct npioctl {
101     int         protocol;       /* PPP procotol, e.g. PPP_IP */
102     enum NPmode mode;
103 };
104
105 /* Structure describing a CCP configuration option, for SIOCSCOMPRESS */
106 #define MAX_PPP_OPTION  32
107 struct ppp_option_data {
108         u_int   length;
109         int     transmit;
110         u_char  opt_data[MAX_PPP_OPTION];
111 };
112
113 /* Bit definitions for SIOC[GS]IFCOMP. */
114 #define CCP_ISOPEN      1
115 #define CCP_ISUP        2
116 #define CCP_COMP_RUN    4
117 #define CCP_DECOMP_RUN  8
118 #define CCP_ERROR       0x10
119 #define CCP_FATALERROR  0x20
120
121 /*
122  * Ioctl definitions.
123  */
124
125 #ifdef  __STDC__
126 #define SIOCSIFCOMPAC   _IOW('p', 130, char)
127 #define SIOCSIFCOMPPROT _IOW('p', 131, char)
128 #define SIOCSIFMRU      _IOW('p', 132, int)     /* set max receive unit */
129 #define SIOCGIFMRU      _IOR('p', 133, int)     /* get max receive unit */
130 #define SIOCGIFASYNCMAP _IOR('p', 134, u_int32_t) /* get transmit async map */
131 #define SIOCSIFASYNCMAP _IOW('p', 135, u_int32_t) /* set transmit async map */
132 #define SIOCGETU        _IOR('p', 136, int)     /* get unit number */
133 #define SIOCSIFVJCOMP   _IOW('p', 137, char)    /* enable/disable VJ comp */
134 #define SIOCGIFDEBUG    _IOR('p', 138, int)     /* get debug flags */
135 #define SIOCSIFDEBUG    _IOW('p', 139, int)     /* set debug flags */
136 #define SIOCGIFRASYNCMAP _IOR('p', 140, u_int32_t) /* get receive async map */
137 #define SIOCSIFRASYNCMAP _IOW('p', 141, u_int32_t) /* set receive async map */
138 #define SIOCGIFXASYNCMAP _IOR('p', 142, ext_accm)  /* get extended xmit map */
139 #define SIOCSIFXASYNCMAP _IOW('p', 143, ext_accm)  /* set extended xmit map */
140 #define SIOCSETU        _IOW('p', 144, int)     /* set unit number */
141 #define SIOCSETNPMODE   _IOW('p', 145, struct npioctl)  /* set NP mode */
142 #define SIOCGETNPMODE   _IOWR('p', 146, struct npioctl) /* get NP mode */
143 #define SIOCGETSTATS    _IOR('p', 147, struct ppp_stats)
144 #define SIOCGIFCOMP     _IOR('p', 148, int)     /* get CCP kernel flags */
145 #define SIOCSIFCOMP     _IOW('p', 149, int)     /* set CCP closed/open/up */
146 #define SIOCSCOMPRESS   _IOW('p', 150, struct ppp_option_data)
147
148 #else
149 /* traditional C compiler */
150 #define SIOCSIFCOMPAC   _IOW(p, 130, char)
151 #define SIOCSIFCOMPPROT _IOW(p, 131, char)
152 #define SIOCSIFMRU      _IOW(p, 132, int)       /* set max receive unit */
153 #define SIOCGIFMRU      _IOR(p, 133, int)       /* get max receive unit */
154 #define SIOCGIFASYNCMAP _IOR(p, 134, u_int32_t) /* get transmit async map */
155 #define SIOCSIFASYNCMAP _IOW(p, 135, u_int32_t) /* set transmit async map */
156 #define SIOCGETU        _IOR(p, 136, int)       /* get unit number */
157 #define SIOCSIFVJCOMP   _IOW(p, 137, char)      /* enable/disable VJ comp */
158 #define SIOCGIFDEBUG    _IOR(p, 138, int)       /* get debug flags */
159 #define SIOCSIFDEBUG    _IOW(p, 139, int)       /* set debug flags */
160 #define SIOCGIFRASYNCMAP _IOR(p, 140, u_int32_t) /* get receive async map */
161 #define SIOCSIFRASYNCMAP _IOW(p, 141, u_int32_t) /* set receive async map */
162 #define SIOCGIFXASYNCMAP _IOR(p, 142, ext_accm) /* get extended xmit map */
163 #define SIOCSIFXASYNCMAP _IOW(p, 143, ext_accm) /* set extended xmit map */
164 #define SIOCSETU        _IOW(p, 144, int)       /* set unit number */
165 #define SIOCSETNPMODE   _IOW(p, 145, struct npioctl)    /* set NP mode */
166 #define SIOCGETNPMODE   _IOWR(p, 146, struct npioctl)   /* get NP mode */
167 #define SIOCGETSTATS    _IOR(p, 147, struct ppp_stats)
168 #define SIOCGIFCOMP     _IOR(p, 148, int)       /* get CCP kernel flags */
169 #define SIOCSIFCOMP     _IOW(p, 149, int)       /* set CCP closed/open/up */
170 #define SIOCSCOMPRESS   _IOW(p, 150, struct ppp_option_data)
171 #endif
172
173 /*
174  * Note on SIOCSIFVJCOMP: the parameter is now encoded as follows.
175  * Bit 0 = overall VJ enable, bit 1 = don't compress connection ID,
176  * bit 2 = receiver rejects VJ compression,
177  * bits 4--7 = maximum slot ID (0 => use default (15)).
178  */
179
180 /* Bits for SIOCGIFDEBUG */
181 #define PAI_FLAGS_B7_0          0x100
182 #define PAI_FLAGS_B7_1          0x200
183 #define PAI_FLAGS_PAR_EVEN      0x400
184 #define PAI_FLAGS_PAR_ODD       0x800
185 #define PAI_FLAGS_HIBITS        0xF00
186
187 /* defines for streams modules */
188 #define       IF_INPUT_ERROR  0xe1
189 #define       IF_OUTPUT_ERROR 0xe2
190
191 #define       ALLOCBSIZE      64              /* how big of a buffer block to
192 allocate for each chunk of the input chain */
193
194 #ifndef __P
195 #ifdef __STDC__
196 #define __P(x)  x
197 #else
198 #define __P(x)  ()
199 #endif
200 #endif