diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1994-11-28 11:59:19 +0000 |
---|---|---|
committer | <ralf@linux-mips.org> | 1994-11-28 11:59:19 +0000 |
commit | 1513ff9b7899ab588401c89db0e99903dbf5f886 (patch) | |
tree | f69cc81a940a502ea23d664c3ffb2d215a479667 /drivers/net/slip.h |
Import of Linus's Linux 1.1.68
Diffstat (limited to 'drivers/net/slip.h')
-rw-r--r-- | drivers/net/slip.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/drivers/net/slip.h b/drivers/net/slip.h new file mode 100644 index 000000000..8c2f3df96 --- /dev/null +++ b/drivers/net/slip.h @@ -0,0 +1,92 @@ +/* + * slip.h Define the SLIP device driver interface and constants. + * + * NOTE: THIS FILE WILL BE MOVED TO THE LINUX INCLUDE DIRECTORY + * AS SOON AS POSSIBLE! + * + * Version: @(#)slip.h 1.2.0 03/28/93 + * + * Fixes: + * Alan Cox : Added slip mtu field. + * Matt Dillon : Printable slip (borrowed from net2e) + * Alan Cox : Added SL_SLIP_LOTS + * + * Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> + */ +#ifndef _LINUX_SLIP_H +#define _LINUX_SLIP_H + +/* SLIP configuration. */ +#ifndef SL_SLIP_LOTS +#define SL_NRUNIT 4 /* number of SLIP channels */ +#else +#define SL_NRUNIT 16 +#endif +#define SL_MTU 296 /* 296; I am used to 600- FvK */ + +/* SLIP protocol characters. */ +#define END 0300 /* indicates end of frame */ +#define ESC 0333 /* indicates byte stuffing */ +#define ESC_END 0334 /* ESC ESC_END means END 'data' */ +#define ESC_ESC 0335 /* ESC ESC_ESC means ESC 'data' */ + + +struct slip { + int magic; + /* Bitmapped flag fields. */ + char inuse; /* are we allocated? */ + char sending; /* "channel busy" indicator */ + char escape; /* SLIP state machine */ + char unused; /* fillers */ + + /* Various fields. */ + int line; /* SLIP channel number */ + struct tty_struct *tty; /* ptr to TTY structure */ + struct device *dev; /* easy for intr handling */ + struct slcompress *slcomp; /* for header compression */ + + /* These are pointers to the malloc()ed frame buffers. */ + 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; /* SLIP receive counter */ + unsigned char *xhead; /* XMIT buffer pointer (head) */ + unsigned char *xtail; /* XMIT buffer pointer (tail) */ + + /* SLIP interface statistics. */ + unsigned long rpacket; /* inbound frame counter */ + unsigned long roverrun; /* "buffer overrun" counter */ + unsigned long spacket; /* outbound frames counter */ + unsigned long sbusy; /* "transmitter busy" counter */ + unsigned long errors; /* error count */ + + int mtu; /* Our mtu (to spot changes!) */ + unsigned char flags; /* Flag values/ mode etc */ +#define SLF_ESCAPE 2 +#define SLF_ERROR 4 +#define SLF_COMP 16 +#define SLF_EXPN 32 +#define SLF_XMIT_BUSY 64 + unsigned char mode; /* SLIP mode */ +#define SL_MODE_SLIP 0 +#define SL_MODE_CSLIP 1 +#define SL_MODE_SLIP6 2 /* Matt Dillon's printable slip */ +#define SL_MODE_CSLIP6 (SL_MODE_SLIP6|SL_MODE_CSLIP) +#define SL_MODE_AX25 4 +#define SL_MODE_ADAPTIVE 8 + int xdata,xbits; /* 6 bit slip controls */ +}; + +#define SLIP_MAGIC 0x5302 + +extern int slip_init(struct device *dev); +extern int slip_esc(unsigned char *s, unsigned char *d, int len); +extern int slip_esc6(unsigned char *s, unsigned char *d, int len); +extern void slip_unesc(struct slip *sl, unsigned char s); +extern void slip_unesc6(struct slip *sl, unsigned char s); + +#endif /* _LINUX_SLIP.H */ |