home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / net / if_ppp.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  6.2 KB  |  158 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.  * if_ppp.h - Point-to-Point Protocol definitions.
  24.  *
  25.  * Copyright (c) 1989 Carnegie Mellon University.
  26.  * All rights reserved.
  27.  *
  28.  * Redistribution and use in source and binary forms are permitted
  29.  * provided that the above copyright notice and this paragraph are
  30.  * duplicated in all such forms and that any documentation,
  31.  * advertising materials, and other materials related to such
  32.  * distribution and use acknowledge that the software was developed
  33.  * by Carnegie Mellon University.  The name of the
  34.  * University may not be used to endorse or promote products derived
  35.  * from this software without specific prior written permission.
  36.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  37.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  38.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  39.  *
  40.  */
  41.  
  42. #ifndef _IF_PPP_H_
  43. #define _IF_PPP_H_
  44.  
  45. /* XXX this used to be self-contained. */
  46. #include <net/ppp_defs.h>
  47. #include <net/if.h>
  48.  
  49. /*
  50.  * Packet sizes
  51.  */
  52. #define    PPP_MTU        1500    /* Default MTU (size of Info field) */
  53. #define PPP_MAXMRU    65000    /* Largest MRU we allow */
  54. #define PPP_MAXMTU    16384    /* Largest MTU we allow */
  55.  
  56. /*
  57.  * Bit definitions for flags.
  58.  */
  59. #define SC_COMP_PROT    0x00000001    /* protocol compression (output) */
  60. #define SC_COMP_AC    0x00000002    /* header compression (output) */
  61. #define    SC_COMP_TCP    0x00000004    /* TCP (VJ) compression (output) */
  62. #define SC_NO_TCP_CCID    0x00000008    /* disable VJ connection-id comp. */
  63. #define SC_REJ_COMP_AC    0x00000010    /* reject adrs/ctrl comp. on input */
  64. #define SC_REJ_COMP_TCP    0x00000020    /* reject TCP (VJ) comp. on input */
  65. #define SC_CCP_OPEN    0x00000040    /* Look at CCP packets */
  66. #define SC_CCP_UP    0x00000080    /* May send/recv compressed packets */
  67. #define SC_DEBUG    0x00010000    /* enable debug messages */
  68. #define SC_LOG_INPKT    0x00020000    /* log contents of good pkts recvd */
  69. #define SC_LOG_OUTPKT    0x00040000    /* log contents of pkts sent */
  70. #define SC_LOG_RAWIN    0x00080000    /* log all chars received */
  71. #define SC_LOG_FLUSH    0x00100000    /* log all chars flushed */
  72. #define SC_RCV_B7_0    0x01000000    /* have rcvd char with bit 7 = 0 */
  73. #define SC_RCV_B7_1    0x02000000    /* have rcvd char with bit 7 = 1 */
  74. #define SC_RCV_EVNP    0x04000000    /* have rcvd char with even parity */
  75. #define SC_RCV_ODDP    0x08000000    /* have rcvd char with odd parity */
  76. #define    SC_MASK        0x0fff00ff    /* bits that user can change */
  77.  
  78. /*
  79.  * State bits in sc_flags, not changeable by user.
  80.  */
  81. #define SC_TIMEOUT    0x00000400    /* timeout is currently pending */
  82. #define SC_VJ_RESET    0x00000800    /* need to reset VJ decomp */
  83. #define SC_COMP_RUN    0x00001000    /* compressor has been initiated */
  84. #define SC_DECOMP_RUN    0x00002000    /* decompressor has been initiated */
  85. #define SC_DC_ERROR    0x00004000    /* non-fatal decomp error detected */
  86. #define SC_DC_FERROR    0x00008000    /* fatal decomp error detected */
  87. #define SC_TBUSY    0x10000000    /* xmitter doesn't need a packet yet */
  88. #define SC_PKTLOST    0x20000000    /* have lost or dropped a packet */
  89. #define    SC_FLUSH    0x40000000    /* flush input until next PPP_FLAG */
  90. #define    SC_ESCAPED    0x80000000    /* saw a PPP_ESCAPE */
  91.  
  92. /*
  93.  * Ioctl definitions.
  94.  */
  95.  
  96. struct npioctl {
  97.     int        protocol;    /* PPP procotol, e.g. PPP_IP */
  98.     enum NPmode    mode;
  99. };
  100.  
  101. /* Structure describing a CCP configuration option, for PPPIOCSCOMPRESS */
  102. struct ppp_option_data {
  103.     u_char    *ptr;
  104.     u_int    length;
  105.     int    transmit;
  106. };
  107.  
  108. struct ifpppstatsreq {
  109.     char ifr_name[IFNAMSIZ];
  110.     struct ppp_stats stats;
  111. };
  112.  
  113. struct ifpppcstatsreq {
  114.     char ifr_name[IFNAMSIZ];
  115.     struct ppp_comp_stats stats;
  116. };
  117.  
  118. /*
  119.  * Ioctl definitions.
  120.  */
  121.  
  122. #define    PPPIOCGFLAGS    _IOR('t', 90, int)    /* get configuration flags */
  123. #define    PPPIOCSFLAGS    _IOW('t', 89, int)    /* set configuration flags */
  124. #define    PPPIOCGASYNCMAP    _IOR('t', 88, int)    /* get async map */
  125. #define    PPPIOCSASYNCMAP    _IOW('t', 87, int)    /* set async map */
  126. #define    PPPIOCGUNIT    _IOR('t', 86, int)    /* get ppp unit number */
  127. #define    PPPIOCGRASYNCMAP _IOR('t', 85, int)    /* get receive async map */
  128. #define    PPPIOCSRASYNCMAP _IOW('t', 84, int)    /* set receive async map */
  129. #define    PPPIOCGMRU    _IOR('t', 83, int)    /* get max receive unit */
  130. #define    PPPIOCSMRU    _IOW('t', 82, int)    /* set max receive unit */
  131. #define    PPPIOCSMAXCID    _IOW('t', 81, int)    /* set VJ max slot ID */
  132. #define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm) /* get extended ACCM */
  133. #define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm) /* set extended ACCM */
  134. #define PPPIOCXFERUNIT    _IO('t', 78)        /* transfer PPP unit */
  135. #define PPPIOCSCOMPRESS    _IOW('t', 77, struct ppp_option_data)
  136. #define PPPIOCGNPMODE    _IOWR('t', 76, struct npioctl) /* get NP mode */
  137. #define PPPIOCSNPMODE    _IOW('t', 75, struct npioctl)  /* set NP mode */
  138. #define PPPIOCGIDLE    _IOR('t', 74, struct ppp_idle) /* get idle time */
  139. #define PPPIOCSPASS    _IOW('t', 71, struct bpf_program) /* set pass filter */
  140. #define PPPIOCSACTIVE    _IOW('t', 70, struct bpf_program) /* set active filt */
  141.  
  142. /* PPPIOC[GS]MTU are alternatives to SIOC[GS]IFMTU, used under Ultrix */
  143. #define PPPIOCGMTU    _IOR('t', 73, int)    /* get interface MTU */
  144. #define PPPIOCSMTU    _IOW('t', 72, int)    /* set interface MTU */
  145.  
  146. /*
  147.  * These two are interface ioctls so that pppstats can do them on
  148.  * a socket without having to open the serial device.
  149.  */
  150. #define SIOCGPPPSTATS    _IOWR('i', 123, struct ifpppstatsreq)
  151. #define SIOCGPPPCSTATS    _IOWR('i', 122, struct ifpppcstatsreq)
  152.  
  153. #if !defined(ifr_mtu)
  154. #define ifr_mtu    ifr_ifru.ifru_metric
  155. #endif
  156.  
  157. #endif /* _IF_PPP_H_ */
  158.