home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / net / ppp_defs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  6.2 KB  |  176 lines

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