summaryrefslogtreecommitdiffstats
path: root/include/linux/if_pppvar.h
blob: e79239fd31ac9a539314794955d3c0672968ceff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*	From: if_pppvar.h,v 1.2 1995/06/12 11:36:51 paulus Exp */
/*
 * if_pppvar.h - private structures and declarations for PPP.
 *
 * Copyright (c) 1994 The Australian National University.
 * All rights reserved.
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation is hereby granted, provided that the above copyright
 * notice appears in all copies.  This software is provided without any
 * warranty, express or implied. The Australian National University
 * makes no representations about the suitability of this software for
 * any purpose.
 *
 * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
 * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
 * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
 * OF SUCH DAMAGE.
 *
 * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
 * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
 * OR MODIFICATIONS.
 *
 * Copyright (c) 1989 Carnegie Mellon University.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by Carnegie Mellon University.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

/*
 *  ==FILEVERSION 990806==
 *
 *  NOTE TO MAINTAINERS:
 *   If you modify this file at all, please set the above date.
 *   if_pppvar.h is shipped with a PPP distribution as well as with the kernel;
 *   if everyone increases the FILEVERSION number above, then scripts
 *   can do the right thing when deciding whether to install a new if_pppvar.h
 *   file.  Don't change the format of that line otherwise, so the
 *   installation script can recognize it.
 */

/*
 * Supported network protocols.  These values are used for
 * indexing sc_npmode.
 */

#define NP_IP	0		/* Internet Protocol */
#define NP_IPX	1		/* IPX protocol */
#define NP_AT	2		/* Appletalk protocol */
#define NP_IPV6	3		/* Internet Protocol */
#define NUM_NP	4		/* Number of NPs. */

#define OBUFSIZE	256	/* # chars of output buffering */

/*
 * Structure describing each ppp unit.
 */

struct ppp {
	int		magic;		/* magic value for structure	*/
	struct ppp	*next;		/* unit with next index		*/
	unsigned long	inuse;		/* are we allocated?		*/
	int		line;		/* network interface unit #	*/
	__u32		flags;		/* miscellaneous control flags	*/
	int		mtu;		/* maximum xmit frame size	*/
	int		mru;		/* maximum receive frame size	*/
	struct slcompress *slcomp;	/* for TCP header compression	*/
	struct sk_buff_head xmt_q;	/* frames to send from pppd	*/
	struct sk_buff_head rcv_q;	/* frames for pppd to read	*/
	unsigned long	xmit_busy;	/* bit 0 set when xmitter busy  */

	/* Information specific to using ppp on async serial lines. */
	struct tty_struct *tty;		/* ptr to TTY structure	*/
	struct tty_struct *backup_tty;	/* TTY to use if tty gets closed */
	__u8		escape;		/* 0x20 if prev char was PPP_ESC */
	__u8		toss;		/* toss this frame		*/
	volatile __u8	tty_pushing;	/* internal state flag		*/
	volatile __u8	woke_up;	/* internal state flag		*/
	__u32		xmit_async_map[8]; /* 1 bit means that given control 
					   character is quoted on output*/
	__u32		recv_async_map; /* 1 bit means that given control 
					   character is ignored on input*/
	__u32		bytes_sent;	/* Bytes sent on frame	*/
	__u32		bytes_rcvd;	/* Bytes recvd on frame	*/

	/* Async transmission information */
	struct sk_buff	*tpkt;		/* frame currently being sent	*/
	int		tpkt_pos;	/* how much of it we've done	*/
	__u16		tfcs;		/* FCS so far for it		*/
	unsigned char	*optr;		/* where we're up to in sending */
	unsigned char	*olim;		/* points past last valid char	*/

	/* Async reception information */
	struct sk_buff	*rpkt;		/* frame currently being rcvd	*/
	__u16		rfcs;		/* FCS so far of rpkt		*/

	/* Queues for select() functionality */
	wait_queue_head_t read_wait;	/* queue for reading processes	*/

	/* info for detecting idle channels */
	unsigned long	last_xmit;	/* time of last transmission	*/
	unsigned long	last_recv;	/* time last packet received    */

	/* Statistic information */
	struct pppstat	stats;		/* statistic information	*/

	/* PPP compression protocol information */
	struct	compressor *sc_xcomp;	/* transmit compressor */
	void	*sc_xc_state;		/* transmit compressor state */
	struct	compressor *sc_rcomp;	/* receive decompressor */
	void	*sc_rc_state;		/* receive decompressor state */

	enum	NPmode sc_npmode[NUM_NP]; /* what to do with each NP */
	int	 sc_xfer;		/* PID of reserved PPP table */
	char	name[16];		/* space for unit name */
	struct net_device	dev;		/* net device structure */
	struct net_device_stats estats;	/* more detailed stats */

	/* tty output buffer */
	unsigned char	obuf[OBUFSIZE];	/* buffer for characters to send */
};

#define PPP_MAGIC	0x5002
#define PPP_VERSION	"2.3.7"