X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=netbsd-1.1%2Fppp-deflate.c;h=213bf0e2e38732436cb27ff45c75d82054b07916;hp=cb4bd7ee52b152ad48760fcbcfb79850a5721983;hb=91fe5eefe0e7b0e46b2df9dd1d5b54a545a5b432;hpb=d017f904e9ba71b481f4a123b60cd9fc46d27e0a diff --git a/netbsd-1.1/ppp-deflate.c b/netbsd-1.1/ppp-deflate.c index cb4bd7e..213bf0e 100644 --- a/netbsd-1.1/ppp-deflate.c +++ b/netbsd-1.1/ppp-deflate.c @@ -1,4 +1,4 @@ -/* $Id: ppp-deflate.c,v 1.2 1996/04/04 03:23:09 paulus Exp $ */ +/* $Id: ppp-deflate.c,v 1.8 1998/03/24 23:48:04 paulus Exp $ */ /* * ppp_deflate.c - interface the zlib procedures for Deflate compression @@ -41,6 +41,8 @@ #if DO_DEFLATE +#define DEFLATE_DEBUG 1 + /* * State for a Deflate (de)compressor. */ @@ -58,7 +60,7 @@ struct deflate_state { #define DEFLATE_OVHD 2 /* Deflate overhead/packet */ static void *zalloc __P((void *, u_int items, u_int size)); -static void zfree __P((void *, void *ptr, u_int nb)); +static void zfree __P((void *, void *ptr)); static void *z_comp_alloc __P((u_char *options, int opt_len)); static void *z_decomp_alloc __P((u_char *options, int opt_len)); static void z_comp_free __P((void *state)); @@ -96,6 +98,23 @@ struct compressor ppp_deflate = { z_comp_stats, /* decomp_stat */ }; +struct compressor ppp_deflate = { + CI_DEFLATE_DRAFT, /* compress_proto */ + z_comp_alloc, /* comp_alloc */ + z_comp_free, /* comp_free */ + z_comp_init, /* comp_init */ + z_comp_reset, /* comp_reset */ + z_compress, /* compress */ + z_comp_stats, /* comp_stat */ + z_decomp_alloc, /* decomp_alloc */ + z_decomp_free, /* decomp_free */ + z_decomp_init, /* decomp_init */ + z_decomp_reset, /* decomp_reset */ + z_decompress, /* decompress */ + z_incomp, /* incomp */ + z_comp_stats, /* decomp_stat */ +}; + /* * Space allocation and freeing routines for use by zlib routines. */ @@ -111,10 +130,9 @@ zalloc(notused, items, size) } void -zfree(notused, ptr, nbytes) +zfree(notused, ptr) void *notused; void *ptr; - u_int nbytes; { FREE(ptr, M_DEVBUF); } @@ -130,7 +148,8 @@ z_comp_alloc(options, opt_len) struct deflate_state *state; int w_size; - if (opt_len != CILEN_DEFLATE || options[0] != CI_DEFLATE + if (opt_len != CILEN_DEFLATE + || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) || options[1] != CILEN_DEFLATE || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL || options[3] != DEFLATE_CHK_SEQUENCE) @@ -148,7 +167,7 @@ z_comp_alloc(options, opt_len) state->strm.zalloc = zalloc; state->strm.zfree = zfree; if (deflateInit2(&state->strm, Z_DEFAULT_COMPRESSION, DEFLATE_METHOD_VAL, - -w_size, 8, Z_DEFAULT_STRATEGY, DEFLATE_OVHD+2) != Z_OK) { + -w_size, 8, Z_DEFAULT_STRATEGY) != Z_OK) { FREE(state, M_DEVBUF); return NULL; } @@ -176,7 +195,8 @@ z_comp_init(arg, options, opt_len, unit, hdrlen, debug) { struct deflate_state *state = (struct deflate_state *) arg; - if (opt_len < CILEN_DEFLATE || options[0] != CI_DEFLATE + if (opt_len < CILEN_DEFLATE + || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) || options[1] != CILEN_DEFLATE || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL || DEFLATE_SIZE(options[2]) != state->w_size @@ -361,7 +381,8 @@ z_decomp_alloc(options, opt_len) struct deflate_state *state; int w_size; - if (opt_len != CILEN_DEFLATE || options[0] != CI_DEFLATE + if (opt_len != CILEN_DEFLATE + || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) || options[1] != CILEN_DEFLATE || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL || options[3] != DEFLATE_CHK_SEQUENCE) @@ -406,7 +427,8 @@ z_decomp_init(arg, options, opt_len, unit, hdrlen, mru, debug) { struct deflate_state *state = (struct deflate_state *) arg; - if (opt_len < CILEN_DEFLATE || options[0] != CI_DEFLATE + if (opt_len < CILEN_DEFLATE + || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT) || options[1] != CILEN_DEFLATE || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL || DEFLATE_SIZE(options[2]) != state->w_size @@ -531,7 +553,9 @@ z_decompress(arg, mi, mop) for (;;) { r = inflate(&state->strm, flush); if (r != Z_OK) { +#if !DEFLATE_DEBUG if (state->debug) +#endif printf("z_decompress%d: inflate returned %d (%s)\n", state->unit, r, (state->strm.msg? state->strm.msg: "")); m_freem(mo_head); @@ -578,6 +602,11 @@ z_decompress(arg, mi, mop) return DECOMP_ERROR; } olen += (mo->m_len = ospace - state->strm.avail_out); +#if DEFLATE_DEBUG + if (olen > state->mru + PPP_HDRLEN) + printf("ppp_deflate%d: exceeded mru (%d > %d)\n", + state->unit, olen, state->mru + PPP_HDRLEN); +#endif state->stats.unc_bytes += olen; state->stats.unc_packets++; @@ -627,10 +656,11 @@ z_incomp(arg, mi) r = inflateIncomp(&state->strm); if (r != Z_OK) { /* gak! */ - if (state->debug) { +#if !DEFLATE_DEBUG + if (state->debug) +#endif printf("z_incomp%d: inflateIncomp returned %d (%s)\n", state->unit, r, (state->strm.msg? state->strm.msg: "")); - } return; } mi = mi->m_next;