X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=linux%2Fbsd_comp.c;h=952b32f504649dff2afb52cc571a62d3b3bf9590;hp=508db4f622296ecea590c8a71467785b57e99b94;hb=b5c0cf380b11e37f580e6f2affcb78d5ccedade0;hpb=0f61ac5460e89dd768f1fb56fbdd8fa6f8af79f1 diff --git a/linux/bsd_comp.c b/linux/bsd_comp.c index 508db4f..952b32f 100644 --- a/linux/bsd_comp.c +++ b/linux/bsd_comp.c @@ -37,37 +37,46 @@ */ /* - * 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 #include - -#include #include #include #include #include #include #include +#include #include #include -#include + +#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 +#endif + #include #include #include /* to get the struct task_struct */ @@ -76,9 +85,9 @@ #include #include -#include +#include -#include +#include #include #include @@ -88,14 +97,6 @@ #include -#ifdef NEW_SKBUFF -#include -#endif - -#include -#include -#include - #undef PACKETPTR #define PACKETPTR 1 #include @@ -141,14 +142,16 @@ struct bsd_dict { 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; @@ -249,7 +252,6 @@ bsd_clear(struct bsd_db *db) 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; } @@ -684,7 +686,7 @@ static int bsd_compress (void *state, unsigned char *rptr, unsigned char *obuf, /* 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) { @@ -773,7 +775,7 @@ nomatch: 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;