X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=linux%2Fbsd_comp.c;h=b2e2a7f616d8852d64d216e80fdf9ae14c84de22;hp=bab6561e3100cd1517481fc7141d83eccd07aec9;hb=969dcc382a4d687d4aa36986cb2d1f13a1260ff9;hpb=6589bd3bbe86761cc41767a1400a69bbc985788a diff --git a/linux/bsd_comp.c b/linux/bsd_comp.c index bab6561..b2e2a7f 100644 --- a/linux/bsd_comp.c +++ b/linux/bsd_comp.c @@ -39,10 +39,11 @@ /* * This version is for use with contiguous buffers on Linux-derived systems. * - * ==FILEVERSION 4== + * ==FILEVERSION 970227== * * 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 @@ -56,18 +57,26 @@ #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,7 +85,7 @@ #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;