summaryrefslogtreecommitdiffstats
path: root/include/linux/ppp.h
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1994-11-28 11:59:19 +0000
committer <ralf@linux-mips.org>1994-11-28 11:59:19 +0000
commit1513ff9b7899ab588401c89db0e99903dbf5f886 (patch)
treef69cc81a940a502ea23d664c3ffb2d215a479667 /include/linux/ppp.h
Import of Linus's Linux 1.1.68
Diffstat (limited to 'include/linux/ppp.h')
-rw-r--r--include/linux/ppp.h233
1 files changed, 233 insertions, 0 deletions
diff --git a/include/linux/ppp.h b/include/linux/ppp.h
new file mode 100644
index 000000000..eaa15f933
--- /dev/null
+++ b/include/linux/ppp.h
@@ -0,0 +1,233 @@
+#ifndef _LINUX_PPP_H
+#define _LINUX_PPP_H
+
+/* definitions for kernel PPP module
+ Michael Callahan <callahan@maths.ox.ac.uk>
+ Nov. 4 1993 */
+
+/* how many PPP units? */
+#define PPP_NRUNIT 4
+
+#define PPP_VERSION "0.2.7"
+
+/* line discipline number */
+#define N_PPP 3
+
+/* Magic value for the ppp structure */
+#define PPP_MAGIC 0x5002
+
+#define PPPIOCGFLAGS 0x5490 /* get configuration flags */
+#define PPPIOCSFLAGS 0x5491 /* set configuration flags */
+#define PPPIOCGASYNCMAP 0x5492 /* get async map */
+#define PPPIOCSASYNCMAP 0x5493 /* set async map */
+#define PPPIOCGUNIT 0x5494 /* get ppp unit number */
+#define PPPIOCSINPSIG 0x5495 /* set input ready signal */
+#define PPPIOCSDEBUG 0x5497 /* set debug level */
+#define PPPIOCGDEBUG 0x5498 /* get debug level */
+#define PPPIOCGSTAT 0x5499 /* read PPP statistic information */
+#define PPPIOCGTIME 0x549A /* read time delta information */
+#define PPPIOCGXASYNCMAP 0x549B /* get async table */
+#define PPPIOCSXASYNCMAP 0x549C /* set async table */
+#define PPPIOCSMRU 0x549D /* set receive unit size for PPP */
+#define PPPIOCRASYNCMAP 0x549E /* set receive async map */
+#define PPPIOCSMAXCID 0x549F /* set the maximum compression slot id */
+
+/* special characters in the framing protocol */
+#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */
+#define PPP_UI 0x03 /* Unnumbered Information */
+#define PPP_FLAG 0x7E /* frame delimiter -- marks frame boundaries */
+#define PPP_ADDRESS 0xFF /* first character of frame <-- (may be */
+#define PPP_CONTROL 0x03 /* second character of frame <-- compressed)*/
+#define PPP_TRANS 0x20 /* Asynchronous transparency modifier */
+#define PPP_ESC 0x7d /* escape character -- next character is
+ data, and the PPP_TRANS bit should be
+ toggled. PPP_ESC PPP_FLAG is illegal */
+
+/* protocol numbers */
+#define PROTO_IP 0x0021
+#define PROTO_VJCOMP 0x002d
+#define PROTO_VJUNCOMP 0x002f
+
+/* FCS support */
+#define PPP_FCS_INIT 0xffff
+#define PPP_FCS_GOOD 0xf0b8
+
+/* initial MTU */
+#define PPP_MTU 1500
+
+/* initial MRU */
+#define PPP_MRU PPP_MTU
+
+/* flags */
+#define SC_COMP_PROT 0x00000001 /* protocol compression (output) */
+#define SC_COMP_AC 0x00000002 /* header compression (output) */
+#define SC_COMP_TCP 0x00000004 /* TCP (VJ) compression (output) */
+#define SC_NO_TCP_CCID 0x00000008 /* disable VJ connection-id comp. */
+#define SC_REJ_COMP_AC 0x00000010 /* reject adrs/ctrl comp. on input */
+#define SC_REJ_COMP_TCP 0x00000020 /* reject TCP (VJ) comp. on input */
+#define SC_ENABLE_IP 0x00000100 /* IP packets may be exchanged */
+#define SC_IP_DOWN 0x00000200 /* give ip frames to pppd */
+#define SC_IP_FLUSH 0x00000400 /* "next time" flag for IP_DOWN */
+#define SC_DEBUG 0x00010000 /* enable debug messages */
+#define SC_LOG_INPKT 0x00020000 /* log contents of good pkts recvd */
+#define SC_LOG_OUTPKT 0x00040000 /* log contents of pkts sent */
+#define SC_LOG_RAWIN 0x00080000 /* log all chars received */
+#define SC_LOG_FLUSH 0x00100000 /* log all chars flushed */
+
+/* Flag bits to determine state of input characters */
+#define SC_RCV_B7_0 0x01000000 /* have rcvd char with bit 7 = 0 */
+#define SC_RCV_B7_1 0x02000000 /* have rcvd char with bit 7 = 0 */
+#define SC_RCV_EVNP 0x04000000 /* have rcvd char with even parity */
+#define SC_RCV_ODDP 0x08000000 /* have rcvd char with odd parity */
+
+#define SC_MASK 0x0fffffff /* bits that user can change */
+
+/* flag for doing transmitter lockout */
+#define SC_XMIT_BUSY 0x10000000 /* ppp_write_wakeup is active */
+
+/*
+ * This is the format of the data buffer of a LQP packet. The packet data
+ * is sent/received to the peer.
+ */
+
+struct ppp_lqp_packet_hdr {
+ unsigned long LastOutLQRs; /* Copied from PeerOutLQRs */
+ unsigned long LastOutPackets; /* Copied from PeerOutPackets */
+ unsigned long LastOutOctets; /* Copied from PeerOutOctets */
+ unsigned long PeerInLQRs; /* Copied from SavedInLQRs */
+ unsigned long PeerInPackets; /* Copied from SavedInPackets */
+ unsigned long PeerInDiscards; /* Copied from SavedInDiscards */
+ unsigned long PeerInErrors; /* Copied from SavedInErrors */
+ unsigned long PeerInOctets; /* Copied from SavedInOctets */
+ unsigned long PeerOutLQRs; /* Copied from OutLQRs, plus 1 */
+ unsigned long PeerOutPackets; /* Current ifOutUniPackets, + 1 */
+ unsigned long PeerOutOctets; /* Current ifOutOctets + LQR */
+ };
+
+/*
+ * This data is not sent to the remote. It is updated by the driver when
+ * a packet is received.
+ */
+
+struct ppp_lqp_packet_trailer {
+ unsigned long SaveInLQRs; /* Current InLQRs on reception */
+ unsigned long SaveInPackets; /* Current ifInUniPackets */
+ unsigned long SaveInDiscards; /* Current ifInDiscards */
+ unsigned long SaveInErrors; /* Current ifInErrors */
+ unsigned long SaveInOctets; /* Current ifInOctects */
+};
+
+/*
+ * PPP LQP packet. The packet is changed by the driver immediately prior
+ * to transmission and updated upon reception with the current values.
+ * So, it must be known to the driver as well as the pppd software.
+ */
+
+struct ppp_lpq_packet {
+ unsigned long magic; /* current magic value */
+ struct ppp_lqp_packet_hdr hdr; /* Header fields for structure */
+ struct ppp_lqp_packet_trailer tail; /* Trailer fields (not sent) */
+};
+
+/*
+ * PPP interface statistics. (used by LQP / pppstats)
+ */
+
+struct ppp_stats {
+ unsigned long rbytes; /* bytes received */
+ unsigned long rcomp; /* compressed packets received */
+ unsigned long runcomp; /* uncompressed packets received */
+ unsigned long rothers; /* non-ip frames received */
+ unsigned long rerrors; /* received errors */
+ unsigned long roverrun; /* "buffer overrun" counter */
+ unsigned long tossed; /* packets discarded */
+ unsigned long runts; /* frames too short to process */
+ unsigned long rgiants; /* frames too large to process */
+ unsigned long sbytes; /* bytes sent */
+ unsigned long scomp; /* compressed packets sent */
+ unsigned long suncomp; /* uncompressed packets sent */
+ unsigned long sothers; /* non-ip frames sent */
+ unsigned long serrors; /* transmitter errors */
+ unsigned long sbusy; /* "transmitter busy" counter */
+};
+
+/*
+ * Demand dial fields
+ */
+
+struct ppp_ddinfo {
+ unsigned long ip_sjiffies; /* time when last IP frame sent */
+ unsigned long ip_rjiffies; /* time when last IP frame recvd*/
+ unsigned long nip_sjiffies; /* time when last NON-IP sent */
+ unsigned long nip_rjiffies; /* time when last NON-IP recvd */
+};
+
+#ifdef __KERNEL__
+
+struct ppp {
+ int magic; /* magic value for structure */
+
+ /* Bitmapped flag fields. */
+ char inuse; /* are we allocated? */
+ char sending; /* "channel busy" indicator */
+ char escape; /* 0x20 if prev char was PPP_ESC*/
+ char toss; /* toss this frame */
+
+ unsigned int flags; /* miscellany */
+
+ unsigned long xmit_async_map[8]; /* 1 bit means that given control
+ character is quoted on output*/
+
+ unsigned long recv_async_map; /* 1 bit means that given control
+ character is ignored on input*/
+ int mtu; /* maximum xmit frame size */
+ int mru; /* maximum receive frame size */
+ unsigned short fcs; /* FCS field of current frame */
+
+ /* Various fields. */
+ int line; /* PPP channel number */
+ struct tty_struct *tty; /* ptr to TTY structure */
+ struct device *dev; /* easy for intr handling */
+ struct slcompress *slcomp; /* for header compression */
+ unsigned long last_xmit; /* time of last transmission */
+
+ /* These are pointers to the malloc()ed frame buffers.
+ These buffers are used while processing a packet. If a packet
+ has to hang around for the user process to read it, it lingers in
+ the user buffers below. */
+ unsigned char *rbuff; /* receiver buffer */
+ unsigned char *xbuff; /* transmitter buffer */
+ unsigned char *cbuff; /* compression buffer */
+
+ /* These are the various pointers into the buffers. */
+ unsigned char *rhead; /* RECV buffer pointer (head) */
+ unsigned char *rend; /* RECV buffer pointer (end) */
+ int rcount; /* PPP receive counter */
+ unsigned char *xhead; /* XMIT buffer pointer (head) */
+ unsigned char *xtail; /* XMIT buffer pointer (end) */
+
+ /* Structures for interfacing with the user process. */
+#define RBUFSIZE 4000
+ unsigned char *us_rbuff; /* circular incoming packet buf.*/
+ unsigned char *us_rbuff_end; /* end of allocated space */
+ unsigned char *us_rbuff_head; /* head of waiting packets */
+ unsigned char *us_rbuff_tail; /* tail of waiting packets */
+ unsigned char us_rbuff_lock; /* lock: bit 0 head bit 1 tail */
+ int inp_sig; /* input ready signal for pgrp */
+ int inp_sig_pid; /* process to get notified */
+
+ /* items to support the select() function */
+ struct wait_queue *write_wait; /* queue for reading processes */
+ struct wait_queue *read_wait; /* queue for writing processes */
+
+ /* PPP interface statistics. */
+ struct ppp_stats stats; /* statistic information */
+
+ /* PPP demand dial information. */
+ struct ppp_ddinfo ddinfo; /* demand dial information */
+};
+
+#endif /* __KERNEL__ */
+#endif /* _LINUX_PPP_H */
+
+