* OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
* OR MODIFICATIONS.
*
- * $Id: deflate.c,v 1.2 1996/04/04 02:44:56 paulus Exp $
+ * $Id: deflate.c,v 1.4 1996/08/28 06:34:56 paulus Exp $
*/
#ifdef AIX4
#define PACKETPTR mblk_t *
#include <net/ppp-comp.h>
+
+#ifdef __osf__
+#include "zlib.h"
+#else
#include "common/zlib.h"
+#endif
#if DO_DEFLATE
+#define DEFLATE_DEBUG 1
+
/*
* State for a Deflate (de)compressor.
*/
#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 *z_alloc __P((void *, u_int items, u_int size));
+static void z_free __P((void *, void *ptr, u_int nb));
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));
* Space allocation and freeing routines for use by zlib routines.
*/
static void *
-zalloc(notused, items, size)
+z_alloc(notused, items, size)
void *notused;
u_int items, size;
{
+#ifdef __osf__
+ return ALLOC_SLEEP(items * size);
+#else
return ALLOC_NOSLEEP(items * size);
+#endif
}
static void
-zfree(notused, ptr, nbytes)
+z_free(notused, ptr, nbytes)
void *notused;
void *ptr;
u_int nbytes;
return NULL;
state->strm.next_in = NULL;
- state->strm.zalloc = (alloc_func) zalloc;
- state->strm.zfree = (free_func) zfree;
+ state->strm.zalloc = (alloc_func) z_alloc;
+ state->strm.zfree = (free_func) z_free;
if (deflateInit2(&state->strm, Z_DEFAULT_COMPRESSION, DEFLATE_METHOD_VAL,
-w_size, 8, Z_DEFAULT_STRATEGY, DEFLATE_OVHD+2) != Z_OK) {
FREE(state, sizeof(*state));
return NULL;
state->strm.next_out = NULL;
- state->strm.zalloc = (alloc_func) zalloc;
- state->strm.zfree = (free_func) zfree;
+ state->strm.zalloc = (alloc_func) z_alloc;
+ state->strm.zfree = (free_func) z_free;
if (inflateInit2(&state->strm, -w_size) != Z_OK) {
FREE(state, sizeof(*state));
return NULL;
/* Check the sequence number. */
seq = (hdr[PPP_HDRLEN] << 8) + hdr[PPP_HDRLEN+1];
if (seq != state->seqno) {
+#if !DEFLATE_DEBUG
if (state->debug)
+#endif
printf("z_decompress%d: bad seq # %d, expected %d\n",
state->unit, seq, state->seqno);
return DECOMP_ERROR;
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: ""));
freemsg(mo_head);
mo->b_wptr += ospace - state->strm.avail_out;
olen += 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++;
state->stats.comp_bytes += rlen;
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->b_cont;