1/* 2 * pppio.h - ioctl and other misc. definitions for STREAMS modules. 3 * 4 * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 5 * Use is subject to license terms. 6 * 7 * Copyright (c) 1994 The Australian National University. 8 * All rights reserved. 9 * 10 * Permission to use, copy, modify, and distribute this software and its 11 * documentation is hereby granted, provided that the above copyright 12 * notice appears in all copies. This software is provided without any 13 * warranty, express or implied. The Australian National University 14 * makes no representations about the suitability of this software for 15 * any purpose. 16 * 17 * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY 18 * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 19 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 20 * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY 21 * OF SUCH DAMAGE. 22 * 23 * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, 24 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 25 * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 26 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO 27 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, 28 * OR MODIFICATIONS. 29 * 30 * $Id: pppio.h,v 1.8 1996/08/28 06:36:51 paulus Exp $ 31 */ 32 33#ifndef __PPPIO_H 34#define __PPPIO_H 35 36#pragma ident "%Z%%M% %I% %E% SMI" 37 38#ifdef __cplusplus 39extern "C" { 40#endif 41 42#define _PPPIO(n) (('p' << 8) + (n)) 43 44#define PPPIO_NEWPPA _PPPIO(130) /* allocate a new PPP unit */ 45#define PPPIO_GETSTAT _PPPIO(131) /* get PPP statistics */ 46#define PPPIO_GETCSTAT _PPPIO(132) /* get PPP compression stats */ 47#define PPPIO_MTU _PPPIO(133) /* set max transmission unit */ 48#define PPPIO_MRU _PPPIO(134) /* set max receive unit */ 49#define PPPIO_CFLAGS _PPPIO(135) /* set/clear/get compression flags */ 50#define PPPIO_XCOMP _PPPIO(136) /* alloc transmit compressor */ 51#define PPPIO_RCOMP _PPPIO(137) /* alloc receive decompressor */ 52#define PPPIO_XACCM _PPPIO(138) /* set transmit asyncmap */ 53#define PPPIO_RACCM _PPPIO(139) /* set receive asyncmap */ 54#define PPPIO_VJINIT _PPPIO(140) /* initialize VJ comp/decomp */ 55#define PPPIO_ATTACH _PPPIO(141) /* attach to a ppa (without putmsg) */ 56#define PPPIO_LASTMOD _PPPIO(142) /* mark last ppp module */ 57#define PPPIO_GCLEAN _PPPIO(143) /* get 8-bit-clean flags */ 58#define PPPIO_DEBUG _PPPIO(144) /* request debug information */ 59#define PPPIO_BIND _PPPIO(145) /* bind to SAP */ 60#define PPPIO_NPMODE _PPPIO(146) /* set mode for handling data pkts */ 61#define PPPIO_GIDLE _PPPIO(147) /* get time since last data pkt */ 62#define PPPIO_PASSFILT _PPPIO(148) /* set filter for packets to pass */ 63#define PPPIO_ACTIVEFILT _PPPIO(149) /* set filter for "link active" pkts */ 64#define PPPIO_USETIMESTAMP _PPPIO(150) /* enable packet time-stamp */ 65#define PPPIO_DETACH _PPPIO(151) /* detach from a ppa (w/o putmsg ) */ 66#define PPPIO_XFCS _PPPIO(152) /* set transmit FCS type */ 67#define PPPIO_RFCS _PPPIO(153) /* set receive FCS type */ 68#define PPPIO_COMPLEV _PPPIO(154) /* set compression effort level */ 69#define PPPIO_GTYPE _PPPIO(155) /* get existing driver type */ 70#define PPPIO_MUX _PPPIO(156) /* multiplexed frame */ 71#define PPPIO_GETSTAT64 _PPPIO(157) /* get PPP 64-bit statistics */ 72#define PPPIO_BLOCKNP _PPPIO(158) /* block pkts with proto np in kernel */ 73#define PPPIO_UNBLOCKNP _PPPIO(159) /* unblock pkts with proto np */ 74 75/* Values for PPPIO_MUX FLAGS */ 76#define X_MUXMASK 0x10 /* transmit muxed frame option */ 77#define R_MUXMASK 0x20 /* receive muxed frame option */ 78 79/* 80 * Values for PPPIO_CFLAGS. Data sent in is u_int32_t val[2], where 81 * result is newflags = val[0] | (oldflags & ~val[1]). Returned data 82 * is a single u_int32_t, containing the current flags. 83 */ 84#define COMP_AC 0x1 /* compress address/control */ 85#define DECOMP_AC 0x2 /* decompress address/control */ 86#define COMP_PROT 0x4 /* compress PPP protocol */ 87#define DECOMP_PROT 0x8 /* decompress PPP protocol */ 88 89#define COMP_VJC 0x10 /* compress TCP/IP headers */ 90#define COMP_VJCCID 0x20 /* compress connection ID as well */ 91#define DECOMP_VJC 0x40 /* decompress TCP/IP headers */ 92#define DECOMP_VJCCID 0x80 /* accept compressed connection ID */ 93 94#define CCP_ISOPEN 0x100 /* look at CCP packets */ 95#define CCP_ISUP 0x200 /* do packet comp/decomp */ 96#define CCP_ERROR 0x400 /* (status) error in packet decomp */ 97#define CCP_FATALERROR 0x800 /* (status) fatal error ditto */ 98#define CCP_COMP_RUN 0x1000 /* (status) seen CCP ack sent */ 99#define CCP_DECOMP_RUN 0x2000 /* (status) seen CCP ack rcvd */ 100 101 102/* 103 * Values for PPPIO_XFCS/PPPIO_RFCS. (Note that we don't support 104 * simultaneous use of 16 bit and 32 bit CRCs.) 105 */ 106#define PPPFCS_16 0 /* The default, usually; CRC-16 */ 107#define PPPFCS_32 1 /* CRC-32 */ 108#define PPPFCS_NONE 2 /* No CRC */ 109 110/* 111 * Values for 8-bit-clean flags. 112 */ 113#define RCV_B7_0 1 /* have rcvd char with bit 7 = 0 */ 114#define RCV_B7_1 2 /* have rcvd char with bit 7 = 1 */ 115#define RCV_EVNP 4 /* have rcvd char with even parity */ 116#define RCV_ODDP 8 /* have rcvd char with odd parity */ 117 118/* 119 * Values for the first byte of M_CTL messages passed between 120 * PPP modules. 121 */ 122#define PPPCTL_OERROR 0xe0 /* output error [up] */ 123#define PPPCTL_IERROR 0xe1 /* input error (e.g. FCS) [up] */ 124#define PPPCTL_MTU 0xe2 /* set MTU [down] */ 125#define PPPCTL_MRU 0xe3 /* set MRU [down] */ 126#define PPPCTL_UNIT 0xe4 /* note PPP unit number [down] */ 127 128/* 129 * Values for the u_int32_t argument to PPPIO_DEBUG. 130 */ 131#define PPPDBG_DUMP 0x10000 /* print out debug info now */ 132#define PPPDBG_LOG 0x100 /* log various things */ 133#define PPPDBG_DRIVER 0 /* identifies ppp driver as target */ 134#define PPPDBG_IF 1 /* identifies ppp network i/f target */ 135#define PPPDBG_COMP 2 /* identifies ppp compression target */ 136#define PPPDBG_AHDLC 3 /* identifies ppp async hdlc target */ 137 138/* 139 * Values for the u_int32_t return from PPPIO_GTYPE. Only lastmod 140 * should respond. Current modules return PPPTYP_AHDLC (async 141 * module), PPPTYP_HC (compression module) and PPPTYP_MUX (PPP 142 * interface driver). 143 */ 144#define PPPTYP_HDLC 0 /* raw HDLC I/O; no PPP handling */ 145#define PPPTYP_AHDLC 1 /* async HDLC; has [XR]ACCM */ 146#define PPPTYP_HC 2 /* HDLC with ACFC and PFC support */ 147#define PPPTYP_AHC 3 /* async with ACFC and PFC */ 148#define PPPTYP_MUX 4 /* multiplexor */ 149 150#ifdef SOL2 151/* Officially allocated module numbers */ 152#define PPP_MOD_ID 2101 /* PPP multiplexor */ 153#define COMP_MOD_ID 2102 /* Data and header compression */ 154#define AHDLC_MOD_ID 2103 /* Asynchronous HDLC-like encapsulation */ 155#define TUN_MOD_ID 2104 /* Tunneling protocols */ 156#define MP_MOD_ID 2105 /* Multilink PPP */ 157#define PPP_DRV_NAME "sppp" 158#define AHDLC_MOD_NAME "spppasyn" 159#define COMP_MOD_NAME "spppcomp" 160#define TUN_MOD_NAME "sppptun" 161#define MP_MOD_NAME "spppmp" 162#else 163#define PPP_MOD_ID 0xb1a6 164#define COMP_MOD_ID 0xbadf 165#define AHDLC_MOD_ID 0x7d23 166#define PPP_DRV_NAME "ppp" 167#define AHDLC_MOD_NAME "ppp_ahdl" 168#define COMP_MOD_NAME "ppp_comp" 169#endif 170#define PPP_DEV_NAME "/dev/" PPP_DRV_NAME 171 172#ifdef __cplusplus 173} 174#endif 175 176#endif /* __PPPIO_H */ 177