xref: /openbsd-src/sys/net/if_ppp.h (revision df8d9afdef6b73e3daea5e6c657dbb8b744d67b3)
1*df8d9afdSjsg /*	$OpenBSD: if_ppp.h,v 1.10 2022/01/02 22:36:03 jsg Exp $	*/
2d724e01aSderaadt /*	$NetBSD: if_ppp.h,v 1.11 1996/03/15 02:28:05 paulus Exp $	*/
3df930be7Sderaadt 
4df930be7Sderaadt /*
5df930be7Sderaadt  * if_ppp.h - Point-to-Point Protocol definitions.
6df930be7Sderaadt  *
7842cf550Sderaadt  * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
8df930be7Sderaadt  *
9842cf550Sderaadt  * Redistribution and use in source and binary forms, with or without
10842cf550Sderaadt  * modification, are permitted provided that the following conditions
11842cf550Sderaadt  * are met:
12842cf550Sderaadt  *
13842cf550Sderaadt  * 1. Redistributions of source code must retain the above copyright
14842cf550Sderaadt  *    notice, this list of conditions and the following disclaimer.
15842cf550Sderaadt  *
16842cf550Sderaadt  * 2. Redistributions in binary form must reproduce the above copyright
17842cf550Sderaadt  *    notice, this list of conditions and the following disclaimer in
18842cf550Sderaadt  *    the documentation and/or other materials provided with the
19842cf550Sderaadt  *    distribution.
20842cf550Sderaadt  *
21842cf550Sderaadt  * 3. The name "Carnegie Mellon University" must not be used to
22842cf550Sderaadt  *    endorse or promote products derived from this software without
23842cf550Sderaadt  *    prior written permission. For permission or any legal
24842cf550Sderaadt  *    details, please contact
25842cf550Sderaadt  *      Office of Technology Transfer
26842cf550Sderaadt  *      Carnegie Mellon University
27842cf550Sderaadt  *      5000 Forbes Avenue
28842cf550Sderaadt  *      Pittsburgh, PA  15213-3890
29842cf550Sderaadt  *      (412) 268-4387, fax: (412) 268-7395
30842cf550Sderaadt  *      tech-transfer@andrew.cmu.edu
31842cf550Sderaadt  *
32842cf550Sderaadt  * 4. Redistributions of any form whatsoever must retain the following
33842cf550Sderaadt  *    acknowledgment:
34842cf550Sderaadt  *    "This product includes software developed by Computing Services
35842cf550Sderaadt  *     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
36842cf550Sderaadt  *
37842cf550Sderaadt  * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
38842cf550Sderaadt  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
39842cf550Sderaadt  * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
40842cf550Sderaadt  * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
41842cf550Sderaadt  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
42842cf550Sderaadt  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
43842cf550Sderaadt  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
44df930be7Sderaadt  */
45df930be7Sderaadt 
46e04c8cc2Sangelos #ifndef _NET_IF_PPP_H_
47e04c8cc2Sangelos #define _NET_IF_PPP_H_
48df930be7Sderaadt 
49df930be7Sderaadt /*
50df930be7Sderaadt  * Packet sizes
51df930be7Sderaadt  */
52df930be7Sderaadt #define	PPP_MTU		1500	/* Default MTU (size of Info field) */
53df930be7Sderaadt #define PPP_MAXMRU	65000	/* Largest MRU we allow */
54df930be7Sderaadt 
55df930be7Sderaadt /*
56df930be7Sderaadt  * Bit definitions for flags.
57df930be7Sderaadt  */
58df930be7Sderaadt #define SC_COMP_PROT	0x00000001	/* protocol compression (output) */
59df930be7Sderaadt #define SC_COMP_AC	0x00000002	/* header compression (output) */
60df930be7Sderaadt #define	SC_COMP_TCP	0x00000004	/* TCP (VJ) compression (output) */
61df930be7Sderaadt #define SC_NO_TCP_CCID	0x00000008	/* disable VJ connection-id comp. */
62df930be7Sderaadt #define SC_REJ_COMP_AC	0x00000010	/* reject adrs/ctrl comp. on input */
63df930be7Sderaadt #define SC_REJ_COMP_TCP	0x00000020	/* reject TCP (VJ) comp. on input */
64df930be7Sderaadt #define SC_CCP_OPEN	0x00000040	/* Look at CCP packets */
65df930be7Sderaadt #define SC_CCP_UP	0x00000080	/* May send/recv compressed packets */
66df930be7Sderaadt #define SC_DEBUG	0x00010000	/* enable debug messages */
67df930be7Sderaadt #define SC_LOG_INPKT	0x00020000	/* log contents of good pkts recvd */
68df930be7Sderaadt #define SC_LOG_OUTPKT	0x00040000	/* log contents of pkts sent */
69df930be7Sderaadt #define SC_LOG_RAWIN	0x00080000	/* log all chars received */
70df930be7Sderaadt #define SC_LOG_FLUSH	0x00100000	/* log all chars flushed */
71df930be7Sderaadt #define SC_RCV_B7_0	0x01000000	/* have rcvd char with bit 7 = 0 */
72df930be7Sderaadt #define SC_RCV_B7_1	0x02000000	/* have rcvd char with bit 7 = 1 */
73df930be7Sderaadt #define SC_RCV_EVNP	0x04000000	/* have rcvd char with even parity */
74df930be7Sderaadt #define SC_RCV_ODDP	0x08000000	/* have rcvd char with odd parity */
75df930be7Sderaadt #define	SC_MASK		0x0fff00ff	/* bits that user can change */
76df930be7Sderaadt 
77df930be7Sderaadt /*
78df930be7Sderaadt  * State bits in sc_flags, not changeable by user.
79df930be7Sderaadt  */
80df930be7Sderaadt #define SC_TIMEOUT	0x00000400	/* timeout is currently pending */
81df930be7Sderaadt #define SC_VJ_RESET	0x00000800	/* need to reset VJ decomp */
82df930be7Sderaadt #define SC_COMP_RUN	0x00001000	/* compressor has been inited */
83df930be7Sderaadt #define SC_DECOMP_RUN	0x00002000	/* decompressor has been inited */
84df930be7Sderaadt #define SC_DC_ERROR	0x00004000	/* non-fatal decomp error detected */
85df930be7Sderaadt #define SC_DC_FERROR	0x00008000	/* fatal decomp error detected */
86df930be7Sderaadt #define SC_TBUSY	0x10000000	/* xmitter doesn't need a packet yet */
87df930be7Sderaadt #define SC_PKTLOST	0x20000000	/* have lost or dropped a packet */
88df930be7Sderaadt #define	SC_FLUSH	0x40000000	/* flush input until next PPP_FLAG */
89df930be7Sderaadt #define	SC_ESCAPED	0x80000000	/* saw a PPP_ESCAPE */
90df930be7Sderaadt 
91df930be7Sderaadt /*
92df930be7Sderaadt  * Ioctl definitions.
93df930be7Sderaadt  */
94df930be7Sderaadt 
95df930be7Sderaadt struct npioctl {
96*df8d9afdSjsg     int		protocol;	/* PPP protocol, e.g. PPP_IP */
97df930be7Sderaadt     enum NPmode	mode;
98df930be7Sderaadt };
99df930be7Sderaadt 
100df930be7Sderaadt /* Structure describing a CCP configuration option, for PPPIOCSCOMPRESS */
101df930be7Sderaadt struct ppp_option_data {
102df930be7Sderaadt 	u_char	*ptr;
103df930be7Sderaadt 	u_int	length;
104df930be7Sderaadt 	int	transmit;
105df930be7Sderaadt };
106df930be7Sderaadt 
107df930be7Sderaadt struct ifpppstatsreq {
108df930be7Sderaadt     char ifr_name[IFNAMSIZ];
109df930be7Sderaadt     struct ppp_stats stats;
110df930be7Sderaadt };
111df930be7Sderaadt 
112df930be7Sderaadt struct ifpppcstatsreq {
113df930be7Sderaadt     char ifr_name[IFNAMSIZ];
114df930be7Sderaadt     struct ppp_comp_stats stats;
115df930be7Sderaadt };
116df930be7Sderaadt 
117df930be7Sderaadt /*
118df930be7Sderaadt  * Ioctl definitions.
119df930be7Sderaadt  */
120df930be7Sderaadt 
121df930be7Sderaadt #define	PPPIOCGFLAGS	_IOR('t', 90, int)	/* get configuration flags */
122df930be7Sderaadt #define	PPPIOCSFLAGS	_IOW('t', 89, int)	/* set configuration flags */
123df930be7Sderaadt #define	PPPIOCGASYNCMAP	_IOR('t', 88, int)	/* get async map */
124df930be7Sderaadt #define	PPPIOCSASYNCMAP	_IOW('t', 87, int)	/* set async map */
125df930be7Sderaadt #define	PPPIOCGUNIT	_IOR('t', 86, int)	/* get ppp unit number */
126df930be7Sderaadt #define	PPPIOCGRASYNCMAP _IOR('t', 85, int)	/* get receive async map */
127df930be7Sderaadt #define	PPPIOCSRASYNCMAP _IOW('t', 84, int)	/* set receive async map */
128df930be7Sderaadt #define	PPPIOCGMRU	_IOR('t', 83, int)	/* get max receive unit */
129df930be7Sderaadt #define	PPPIOCSMRU	_IOW('t', 82, int)	/* set max receive unit */
130df930be7Sderaadt #define	PPPIOCSMAXCID	_IOW('t', 81, int)	/* set VJ max slot ID */
131df930be7Sderaadt #define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm) /* get extended ACCM */
132df930be7Sderaadt #define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm) /* set extended ACCM */
133df930be7Sderaadt #define PPPIOCXFERUNIT	_IO('t', 78)		/* transfer PPP unit */
134df930be7Sderaadt #define PPPIOCSCOMPRESS	_IOW('t', 77, struct ppp_option_data)
135df930be7Sderaadt #define PPPIOCGNPMODE	_IOWR('t', 76, struct npioctl) /* get NP mode */
136df930be7Sderaadt #define PPPIOCSNPMODE	_IOW('t', 75, struct npioctl)  /* set NP mode */
137df930be7Sderaadt #define PPPIOCGIDLE	_IOR('t', 74, struct ppp_idle) /* get idle time */
138d724e01aSderaadt #define PPPIOCSPASS	_IOW('t', 71, struct bpf_program) /* set pass filter */
139d724e01aSderaadt #define PPPIOCSACTIVE	_IOW('t', 70, struct bpf_program) /* set active filt */
140df930be7Sderaadt 
141df930be7Sderaadt /*
142df930be7Sderaadt  * These two are interface ioctls so that pppstats can do them on
143df930be7Sderaadt  * a socket without having to open the serial device.
144df930be7Sderaadt  */
145df930be7Sderaadt #define SIOCGPPPSTATS	_IOWR('i', 123, struct ifpppstatsreq)
146df930be7Sderaadt #define SIOCGPPPCSTATS	_IOWR('i', 122, struct ifpppcstatsreq)
147df930be7Sderaadt 
148edd75aa1Sniklas #ifdef _KERNEL
149c4071fd1Smillert void pppattach(void);
150c4071fd1Smillert int pppoutput(struct ifnet *, struct mbuf *, struct sockaddr *,
151c4071fd1Smillert 		   struct rtentry *);
152c4071fd1Smillert void pppintr(void);
153edd75aa1Sniklas #endif
154e04c8cc2Sangelos #endif /* _NET_IF_PPP_H_ */
155