[BACK]Return to ppp_defs.h CVS log [TXT][DIR] Up to [local] / sys / net

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