linux/include/linux/ppp_defs.h
<<
>>
Prefs
   1/*
   2 * ppp_defs.h - PPP definitions.
   3 *
   4 * Copyright (c) 1994 The Australian National University.
   5 * All rights reserved.
   6 *
   7 * Permission to use, copy, modify, and distribute this software and its
   8 * documentation is hereby granted, provided that the above copyright
   9 * notice appears in all copies.  This software is provided without any
  10 * warranty, express or implied. The Australian National University
  11 * makes no representations about the suitability of this software for
  12 * any purpose.
  13 *
  14 * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
  15 * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
  16 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
  17 * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
  18 * OF SUCH DAMAGE.
  19 *
  20 * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
  21 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  22 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  23 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
  24 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
  25 * OR MODIFICATIONS.
  26 */
  27
  28#include <linux/types.h>
  29
  30/*
  31 *  ==FILEVERSION 20000114==
  32 *
  33 *  NOTE TO MAINTAINERS:
  34 *     If you modify this file at all, please set the above date.
  35 *     ppp_defs.h is shipped with a PPP distribution as well as with the kernel;
  36 *     if everyone increases the FILEVERSION number above, then scripts
  37 *     can do the right thing when deciding whether to install a new ppp_defs.h
  38 *     file.  Don't change the format of that line otherwise, so the
  39 *     installation script can recognize it.
  40 */
  41
  42#ifndef _PPP_DEFS_H_
  43#define _PPP_DEFS_H_
  44
  45/*
  46 * The basic PPP frame.
  47 */
  48#define PPP_HDRLEN      4       /* octets for standard ppp header */
  49#define PPP_FCSLEN      2       /* octets for FCS */
  50#define PPP_MRU         1500    /* default MRU = max length of info field */
  51
  52#define PPP_ADDRESS(p)  (((__u8 *)(p))[0])
  53#define PPP_CONTROL(p)  (((__u8 *)(p))[1])
  54#define PPP_PROTOCOL(p) ((((__u8 *)(p))[2] << 8) + ((__u8 *)(p))[3])
  55
  56/*
  57 * Significant octet values.
  58 */
  59#define PPP_ALLSTATIONS 0xff    /* All-Stations broadcast address */
  60#define PPP_UI          0x03    /* Unnumbered Information */
  61#define PPP_FLAG        0x7e    /* Flag Sequence */
  62#define PPP_ESCAPE      0x7d    /* Asynchronous Control Escape */
  63#define PPP_TRANS       0x20    /* Asynchronous transparency modifier */
  64
  65/*
  66 * Protocol field values.
  67 */
  68#define PPP_IP          0x21    /* Internet Protocol */
  69#define PPP_AT          0x29    /* AppleTalk Protocol */
  70#define PPP_IPX         0x2b    /* IPX protocol */
  71#define PPP_VJC_COMP    0x2d    /* VJ compressed TCP */
  72#define PPP_VJC_UNCOMP  0x2f    /* VJ uncompressed TCP */
  73#define PPP_MP          0x3d    /* Multilink protocol */
  74#define PPP_IPV6        0x57    /* Internet Protocol Version 6 */
  75#define PPP_COMPFRAG    0xfb    /* fragment compressed below bundle */
  76#define PPP_COMP        0xfd    /* compressed packet */
  77#define PPP_MPLS_UC     0x0281  /* Multi Protocol Label Switching - Unicast */
  78#define PPP_MPLS_MC     0x0283  /* Multi Protocol Label Switching - Multicast */
  79#define PPP_IPCP        0x8021  /* IP Control Protocol */
  80#define PPP_ATCP        0x8029  /* AppleTalk Control Protocol */
  81#define PPP_IPXCP       0x802b  /* IPX Control Protocol */
  82#define PPP_IPV6CP      0x8057  /* IPv6 Control Protocol */
  83#define PPP_CCPFRAG     0x80fb  /* CCP at link level (below MP bundle) */
  84#define PPP_CCP         0x80fd  /* Compression Control Protocol */
  85#define PPP_MPLSCP      0x80fd  /* MPLS Control Protocol */
  86#define PPP_LCP         0xc021  /* Link Control Protocol */
  87#define PPP_PAP         0xc023  /* Password Authentication Protocol */
  88#define PPP_LQR         0xc025  /* Link Quality Report protocol */
  89#define PPP_CHAP        0xc223  /* Cryptographic Handshake Auth. Protocol */
  90#define PPP_CBCP        0xc029  /* Callback Control Protocol */
  91
  92/*
  93 * Values for FCS calculations.
  94 */
  95
  96#define PPP_INITFCS     0xffff  /* Initial FCS value */
  97#define PPP_GOODFCS     0xf0b8  /* Good final FCS value */
  98
  99#ifdef __KERNEL__
 100#include <linux/crc-ccitt.h>
 101#define PPP_FCS(fcs, c) crc_ccitt_byte(fcs, c)
 102#endif
 103
 104/*
 105 * Extended asyncmap - allows any character to be escaped.
 106 */
 107
 108typedef __u32           ext_accm[8];
 109
 110/*
 111 * What to do with network protocol (NP) packets.
 112 */
 113enum NPmode {
 114    NPMODE_PASS,                /* pass the packet through */
 115    NPMODE_DROP,                /* silently drop the packet */
 116    NPMODE_ERROR,               /* return an error */
 117    NPMODE_QUEUE                /* save it up for later. */
 118};
 119
 120/*
 121 * Statistics for LQRP and pppstats
 122 */
 123struct pppstat  {
 124    __u32       ppp_discards;   /* # frames discarded */
 125
 126    __u32       ppp_ibytes;     /* bytes received */
 127    __u32       ppp_ioctects;   /* bytes received not in error */
 128    __u32       ppp_ipackets;   /* packets received */
 129    __u32       ppp_ierrors;    /* receive errors */
 130    __u32       ppp_ilqrs;      /* # LQR frames received */
 131
 132    __u32       ppp_obytes;     /* raw bytes sent */
 133    __u32       ppp_ooctects;   /* frame bytes sent */
 134    __u32       ppp_opackets;   /* packets sent */
 135    __u32       ppp_oerrors;    /* transmit errors */ 
 136    __u32       ppp_olqrs;      /* # LQR frames sent */
 137};
 138
 139struct vjstat {
 140    __u32       vjs_packets;    /* outbound packets */
 141    __u32       vjs_compressed; /* outbound compressed packets */
 142    __u32       vjs_searches;   /* searches for connection state */
 143    __u32       vjs_misses;     /* times couldn't find conn. state */
 144    __u32       vjs_uncompressedin; /* inbound uncompressed packets */
 145    __u32       vjs_compressedin;   /* inbound compressed packets */
 146    __u32       vjs_errorin;    /* inbound unknown type packets */
 147    __u32       vjs_tossed;     /* inbound packets tossed because of error */
 148};
 149
 150struct compstat {
 151    __u32       unc_bytes;      /* total uncompressed bytes */
 152    __u32       unc_packets;    /* total uncompressed packets */
 153    __u32       comp_bytes;     /* compressed bytes */
 154    __u32       comp_packets;   /* compressed packets */
 155    __u32       inc_bytes;      /* incompressible bytes */
 156    __u32       inc_packets;    /* incompressible packets */
 157
 158    /* the compression ratio is defined as in_count / bytes_out */
 159    __u32       in_count;       /* Bytes received */
 160    __u32       bytes_out;      /* Bytes transmitted */
 161
 162    double      ratio;          /* not computed in kernel. */
 163};
 164
 165struct ppp_stats {
 166    struct pppstat      p;      /* basic PPP statistics */
 167    struct vjstat       vj;     /* VJ header compression statistics */
 168};
 169
 170struct ppp_comp_stats {
 171    struct compstat     c;      /* packet compression statistics */
 172    struct compstat     d;      /* packet decompression statistics */
 173};
 174
 175/*
 176 * The following structure records the time in seconds since
 177 * the last NP packet was sent or received.
 178 */
 179struct ppp_idle {
 180    __kernel_time_t xmit_idle;  /* time since last NP packet sent */
 181    __kernel_time_t recv_idle;  /* time since last NP packet received */
 182};
 183
 184#endif /* _PPP_DEFS_H_ */
 185