*/
/*
- * This version is for use with contigious buffers on Linux-derived systems.
+ * This version is for use with contiguous buffers on Linux-derived systems.
*
- * ==FILEVERSION 5==
+ * ==FILEVERSION 970607==
*
* NOTE TO MAINTAINERS:
- * If you modify this file at all, increment the number above.
+ * If you modify this file at all, please set the number above to the
+ * date of the modification as YYMMDD (year month day).
* bsd_comp.c 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 bsd_comp.c file. Don't change the format of that
* line otherwise, so the installation script can recognize it.
*
- * $Id: bsd_comp.c,v 1.2 1995/12/18 03:37:05 paulus Exp $
+ * From: bsd_comp.c,v 1.3 1994/12/08 01:59:58 paulus Exp
*/
#ifndef MODULE
#error This file must be compiled as a module.
#endif
+#include <linux/version.h>
#include <linux/module.h>
-
-#include <endian.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/interrupt.h>
#include <linux/ptrace.h>
+#include <linux/malloc.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+
+#undef VERSION
+/* a nice define to generate linux version numbers */
+#define VERSION(major,minor,patch) (((((major)<<8)+(minor))<<8)+(patch))
+
+#if LINUX_VERSION_CODE >= VERSION(2,1,4)
+#include <linux/vmalloc.h>
+#endif
+
#include <linux/tty.h>
#include <linux/errno.h>
#include <linux/sched.h> /* to get the struct task_struct */
#include <asm/system.h>
#include <asm/bitops.h>
-#include <asm/segment.h>
+#include <asm/byteorder.h>
-#include <net/if.h>
+#include <linux/if.h>
#include <linux/if_ether.h>
#include <linux/netdevice.h>
#include <linux/ppp_defs.h>
-#ifdef NEW_SKBUFF
-#include <linux/netprotocol.h>
-#endif
-
-#include <netinet/ip.h>
-#include <netinet/tcp.h>
-#include <net/if_arp.h>
-
#undef PACKETPTR
#define PACKETPTR 1
#include <linux/ppp-comp.h>
union { /* hash value */
unsigned long fcode;
struct {
-#ifndef BIG_ENDIAN_BITFIELD /* Little endian order */
+#if defined(__LITTLE_ENDIAN) /* Little endian order */
unsigned short prefix; /* preceding code */
unsigned char suffix; /* last character of new code */
unsigned char pad;
-#else /* Big endian order */
+#elif defined(__BIG_ENDIAN) /* Big endian order */
unsigned char pad;
unsigned char suffix; /* last character of new code */
unsigned short prefix; /* preceding code */
+#else
+#error Endianness not defined...
#endif
} hs;
} f;
db->n_bits = BSD_INIT_BITS;
db->bytes_out = 0;
db->in_count = 0;
- db->incomp_count = 0;
db->ratio = 0;
db->checkpoint = CHECK_GAP;
}
/* Skip the input header */
rptr += PPP_HDRLEN;
isize -= PPP_HDRLEN;
- ilen = ++isize; /* This is off by one, but that is what is in draft! */
+ ilen = ++isize; /* Low byte of protocol is counted as input */
while (--ilen > 0)
{
OUTPUT(ent); /* output the last code */
- db->bytes_out += olen; /* Do not count bytes from here */
+ db->bytes_out += olen - PPP_HDRLEN - BSD_OVHD;
db->uncomp_bytes += isize;
db->in_count += isize;
++db->uncomp_count;