master
  1/*	From: if_ppp.h,v 1.3 1995/06/12 11:36:50 paulus Exp */
  2
  3/*
  4 * if_ppp.h - Point-to-Point Protocol definitions.
  5 *
  6 * Copyright (c) 1989 Carnegie Mellon University.
  7 *
  8 * Redistribution and use in source and binary forms, with or without
  9 * modification, are permitted provided that the following conditions
 10 * are met:
 11 * 1. Redistributions of source code must retain the above copyright
 12 *    notice, this list of conditions and the following disclaimer.
 13 * 2. Redistributions in binary form must reproduce the above copyright
 14 *    notice, this list of conditions and the following disclaimer in the
 15 *    documentation and/or other materials provided with the distribution.
 16 * 3. Neither the name of the University nor the names of its contributors
 17 *    may be used to endorse or promote products derived from this software
 18 *    without specific prior written permission.
 19 *
 20 * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY AND
 21 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
 22 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 23 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 24 * IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY
 25 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 27 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 29 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 31 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 32 *
 33 */
 34
 35/*
 36 *  ==FILEVERSION 960926==
 37 *
 38 *  NOTE TO MAINTAINERS:
 39 *     If you modify this file at all, please set the above date.
 40 *     if_ppp.h is shipped with a PPP distribution as well as with the kernel;
 41 *     if everyone increases the FILEVERSION number above, then scripts
 42 *     can do the right thing when deciding whether to install a new if_ppp.h
 43 *     file.  Don't change the format of that line otherwise, so the
 44 *     installation script can recognize it.
 45 */
 46
 47
 48#ifndef __NET_IF_PPP_H
 49#define __NET_IF_PPP_H 1
 50
 51#include <sys/types.h>
 52#include <stdint.h>
 53#include <net/if.h>
 54#include <sys/ioctl.h>
 55#include <net/ppp_defs.h>
 56
 57__BEGIN_DECLS
 58
 59/*
 60 * Packet sizes
 61 */
 62
 63#define	PPP_MTU		1500	/* Default MTU (size of Info field) */
 64#define PPP_MAXMRU	65000	/* Largest MRU we allow */
 65#define PPP_VERSION	"2.2.0"
 66#define PPP_MAGIC	0x5002	/* Magic value for the ppp structure */
 67#define PROTO_IPX	0x002b	/* protocol numbers */
 68#define PROTO_DNA_RT    0x0027  /* DNA Routing */
 69
 70
 71/*
 72 * Bit definitions for flags.
 73 */
 74
 75#define SC_COMP_PROT	0x00000001	/* protocol compression (output) */
 76#define SC_COMP_AC	0x00000002	/* header compression (output) */
 77#define	SC_COMP_TCP	0x00000004	/* TCP (VJ) compression (output) */
 78#define SC_NO_TCP_CCID	0x00000008	/* disable VJ connection-id comp. */
 79#define SC_REJ_COMP_AC	0x00000010	/* reject adrs/ctrl comp. on input */
 80#define SC_REJ_COMP_TCP	0x00000020	/* reject TCP (VJ) comp. on input */
 81#define SC_CCP_OPEN	0x00000040	/* Look at CCP packets */
 82#define SC_CCP_UP	0x00000080	/* May send/recv compressed packets */
 83#define SC_ENABLE_IP	0x00000100	/* IP packets may be exchanged */
 84#define SC_COMP_RUN	0x00001000	/* compressor has been inited */
 85#define SC_DECOMP_RUN	0x00002000	/* decompressor has been inited */
 86#define SC_DEBUG	0x00010000	/* enable debug messages */
 87#define SC_LOG_INPKT	0x00020000	/* log contents of good pkts recvd */
 88#define SC_LOG_OUTPKT	0x00040000	/* log contents of pkts sent */
 89#define SC_LOG_RAWIN	0x00080000	/* log all chars received */
 90#define SC_LOG_FLUSH	0x00100000	/* log all chars flushed */
 91#define	SC_MASK		0x0fE0ffff	/* bits that user can change */
 92
 93/* state bits */
 94#define	SC_ESCAPED	0x80000000	/* saw a PPP_ESCAPE */
 95#define	SC_FLUSH	0x40000000	/* flush input until next PPP_FLAG */
 96#define SC_VJ_RESET	0x20000000	/* Need to reset the VJ decompressor */
 97#define SC_XMIT_BUSY	0x10000000	/* ppp_write_wakeup is active */
 98#define SC_RCV_ODDP	0x08000000	/* have rcvd char with odd parity */
 99#define SC_RCV_EVNP	0x04000000	/* have rcvd char with even parity */
100#define SC_RCV_B7_1	0x02000000	/* have rcvd char with bit 7 = 1 */
101#define SC_RCV_B7_0	0x01000000	/* have rcvd char with bit 7 = 0 */
102#define SC_DC_FERROR	0x00800000	/* fatal decomp error detected */
103#define SC_DC_ERROR	0x00400000	/* non-fatal decomp error detected */
104
105/*
106 * Ioctl definitions.
107 */
108
109struct npioctl {
110    int		protocol;	/* PPP protocol, e.g. PPP_IP */
111    enum NPmode	mode;
112};
113
114/* Structure describing a CCP configuration option, for PPPIOCSCOMPRESS */
115struct ppp_option_data {
116	uint8_t  *ptr;
117	uint32_t length;
118	int	 transmit;
119};
120
121/* 'struct ifreq' is only available from net/if.h under __USE_MISC.  */
122#ifdef __USE_MISC
123struct ifpppstatsreq {
124  struct ifreq	   b;
125  struct ppp_stats stats;			/* statistic information */
126};
127
128struct ifpppcstatsreq {
129  struct ifreq		b;
130  struct ppp_comp_stats stats;
131};
132
133#define ifr__name       b.ifr_ifrn.ifrn_name
134#define stats_ptr       b.ifr_ifru.ifru_data
135#endif
136
137/*
138 * Ioctl definitions.
139 */
140
141#define	PPPIOCGFLAGS	_IOR('t', 90, int)	/* get configuration flags */
142#define	PPPIOCSFLAGS	_IOW('t', 89, int)	/* set configuration flags */
143#define	PPPIOCGASYNCMAP	_IOR('t', 88, int)	/* get async map */
144#define	PPPIOCSASYNCMAP	_IOW('t', 87, int)	/* set async map */
145#define	PPPIOCGUNIT	_IOR('t', 86, int)	/* get ppp unit number */
146#define	PPPIOCGRASYNCMAP _IOR('t', 85, int)	/* get receive async map */
147#define	PPPIOCSRASYNCMAP _IOW('t', 84, int)	/* set receive async map */
148#define	PPPIOCGMRU	_IOR('t', 83, int)	/* get max receive unit */
149#define	PPPIOCSMRU	_IOW('t', 82, int)	/* set max receive unit */
150#define	PPPIOCSMAXCID	_IOW('t', 81, int)	/* set VJ max slot ID */
151#define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm) /* get extended ACCM */
152#define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm) /* set extended ACCM */
153#define PPPIOCXFERUNIT	_IO('t', 78)		/* transfer PPP unit */
154#define PPPIOCSCOMPRESS	_IOW('t', 77, struct ppp_option_data)
155#define PPPIOCGNPMODE	_IOWR('t', 76, struct npioctl) /* get NP mode */
156#define PPPIOCSNPMODE	_IOW('t', 75, struct npioctl)  /* set NP mode */
157#define PPPIOCGDEBUG	_IOR('t', 65, int)	/* Read debug level */
158#define PPPIOCSDEBUG	_IOW('t', 64, int)	/* Set debug level */
159#define PPPIOCGIDLE	_IOR('t', 63, struct ppp_idle) /* get idle time */
160
161#define SIOCGPPPSTATS   (SIOCDEVPRIVATE + 0)
162#define SIOCGPPPVER     (SIOCDEVPRIVATE + 1)  /* NEVER change this!! */
163#define SIOCGPPPCSTATS  (SIOCDEVPRIVATE + 2)
164
165#if !defined(ifr_mtu)
166#define ifr_mtu	ifr_ifru.ifru_metric
167#endif
168
169__END_DECLS
170
171#endif /* net/if_ppp.h */