]> git.ozlabs.org Git - ppp.git/blob - include/linux/ppp_defs.h
config: Include some extra files in the tarball
[ppp.git] / include / linux / ppp_defs.h
1 /*
2  * ppp_defs.h - PPP definitions.
3  *
4  * Copyright (c) 1994-2024 Paul Mackerras. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  *
18  * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
19  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
20  * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
21  * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
22  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
23  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
24  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
25  */
26
27 #ifndef _PPP_DEFS_H_
28 #define _PPP_DEFS_H_
29
30 /*
31  * The basic PPP frame.
32  */
33 #define PPP_HDRLEN      4       /* octets for standard ppp header */
34 #define PPP_FCSLEN      2       /* octets for FCS */
35 #define PPP_MRU         1500    /* default MRU = max length of info field */
36
37 #define PPP_ADDRESS(p)  (((__u8 *)(p))[0])
38 #define PPP_CONTROL(p)  (((__u8 *)(p))[1])
39 #define PPP_PROTOCOL(p) ((((__u8 *)(p))[2] << 8) + ((__u8 *)(p))[3])
40
41 /*
42  * Significant octet values.
43  */
44 #define PPP_ALLSTATIONS 0xff    /* All-Stations broadcast address */
45 #define PPP_UI          0x03    /* Unnumbered Information */
46 #define PPP_FLAG        0x7e    /* Flag Sequence */
47 #define PPP_ESCAPE      0x7d    /* Asynchronous Control Escape */
48 #define PPP_TRANS       0x20    /* Asynchronous transparency modifier */
49
50 /*
51  * Protocol field values.
52  */
53 #define PPP_IP          0x21    /* Internet Protocol */
54 #define PPP_AT          0x29    /* AppleTalk Protocol */
55 #define PPP_IPX         0x2b    /* IPX protocol */
56 #define PPP_VJC_COMP    0x2d    /* VJ compressed TCP */
57 #define PPP_VJC_UNCOMP  0x2f    /* VJ uncompressed TCP */
58 #define PPP_MP          0x3d    /* Multilink protocol */
59 #define PPP_IPV6        0x57    /* Internet Protocol Version 6 */
60 #define PPP_COMPFRAG    0xfb    /* fragment compressed below bundle */
61 #define PPP_COMP        0xfd    /* compressed packet */
62 #define PPP_IPCP        0x8021  /* IP Control Protocol */
63 #define PPP_ATCP        0x8029  /* AppleTalk Control Protocol */
64 #define PPP_IPXCP       0x802b  /* IPX Control Protocol */
65 #define PPP_IPV6CP      0x8057  /* IPv6 Control Protocol */
66 #define PPP_CCPFRAG     0x80fb  /* CCP at link level (below MP bundle) */
67 #define PPP_CCP         0x80fd  /* Compression Control Protocol */
68 #define PPP_ECPFRAG     0x8055  /* ECP at link level (below MP bundle) */
69 #define PPP_ECP         0x8053  /* Encryption Control Protocol */
70 #define PPP_LCP         0xc021  /* Link Control Protocol */
71 #define PPP_PAP         0xc023  /* Password Authentication Protocol */
72 #define PPP_LQR         0xc025  /* Link Quality Report protocol */
73 #define PPP_CHAP        0xc223  /* Cryptographic Handshake Auth. Protocol */
74 #define PPP_CBCP        0xc029  /* Callback Control Protocol */
75
76 /*
77  * Values for FCS calculations.
78  */
79
80 #define PPP_INITFCS     0xffff  /* Initial FCS value */
81 #define PPP_GOODFCS     0xf0b8  /* Good final FCS value */
82 #define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
83
84 /*
85  * Extended asyncmap - allows any character to be escaped.
86  */
87
88 typedef __u32           ext_accm[8];
89
90 /*
91  * What to do with network protocol (NP) packets.
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 /*
101  * Statistics for LQRP and pppstats
102  */
103 struct pppstat  {
104     __u32       ppp_discards;   /* # frames discarded */
105
106     __u32       ppp_ibytes;     /* bytes received */
107     __u32       ppp_ioctects;   /* bytes received not in error */
108     __u32       ppp_ipackets;   /* packets received */
109     __u32       ppp_ierrors;    /* receive errors */
110     __u32       ppp_ilqrs;      /* # LQR frames received */
111
112     __u32       ppp_obytes;     /* raw bytes sent */
113     __u32       ppp_ooctects;   /* frame bytes sent */
114     __u32       ppp_opackets;   /* packets sent */
115     __u32       ppp_oerrors;    /* transmit errors */ 
116     __u32       ppp_olqrs;      /* # LQR frames sent */
117 };
118
119 struct vjstat {
120     __u32       vjs_packets;    /* outbound packets */
121     __u32       vjs_compressed; /* outbound compressed packets */
122     __u32       vjs_searches;   /* searches for connection state */
123     __u32       vjs_misses;     /* times couldn't find conn. state */
124     __u32       vjs_uncompressedin; /* inbound uncompressed packets */
125     __u32       vjs_compressedin;   /* inbound compressed packets */
126     __u32       vjs_errorin;    /* inbound unknown type packets */
127     __u32       vjs_tossed;     /* inbound packets tossed because of error */
128 };
129
130 struct compstat {
131     __u32       unc_bytes;      /* total uncompressed bytes */
132     __u32       unc_packets;    /* total uncompressed packets */
133     __u32       comp_bytes;     /* compressed bytes */
134     __u32       comp_packets;   /* compressed packets */
135     __u32       inc_bytes;      /* incompressible bytes */
136     __u32       inc_packets;    /* incompressible packets */
137
138     /* the compression ratio is defined as in_count / bytes_out */
139     __u32       in_count;       /* Bytes received */
140     __u32       bytes_out;      /* Bytes transmitted */
141
142     double      ratio;          /* not computed in kernel. */
143 };
144
145 struct ppp_stats {
146     struct pppstat      p;      /* basic PPP statistics */
147     struct vjstat       vj;     /* VJ header compression statistics */
148 };
149
150 struct ppp_comp_stats {
151     struct compstat     c;      /* packet compression statistics */
152     struct compstat     d;      /* packet decompression statistics */
153 };
154
155 /*
156  * The following structure records the time in seconds since
157  * the last NP packet was sent or received.
158  */
159 struct ppp_idle {
160     time_t xmit_idle;           /* time since last NP packet sent */
161     time_t recv_idle;           /* time since last NP packet received */
162 };
163
164 #endif /* _PPP_DEFS_H_ */