ppp-2.3.x ships with a bad compression number for deflate. It uses number
24 (which is magnalink!) rather than the correct 26. Initial attempt at a compatability kludge that will negotiate for either but will prefer to use the correct deflate compression type.
This commit is contained in:
parent
fe6fb12ee5
commit
b458019266
@ -69,7 +69,7 @@
|
||||
* Paul Mackerras (paulus@cs.anu.edu.au).
|
||||
*/
|
||||
|
||||
/* $Id: if_ppp.c,v 1.52 1997/12/15 20:31:04 eivind Exp $ */
|
||||
/* $Id: if_ppp.c,v 1.53 1998/01/08 23:41:28 eivind Exp $ */
|
||||
/* from if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */
|
||||
/* from NetBSD: if_ppp.c,v 1.15.2.2 1994/07/28 05:17:58 cgd Exp */
|
||||
|
||||
@ -182,6 +182,9 @@ static void pppdumpm __P((struct mbuf *m0));
|
||||
|
||||
extern struct compressor ppp_bsd_compress;
|
||||
extern struct compressor ppp_deflate;
|
||||
#ifdef CI_BADDEFLATE
|
||||
extern struct compressor ppp_baddeflate;
|
||||
#endif
|
||||
|
||||
static struct compressor *ppp_compressors[8] = {
|
||||
#if DO_BSD_COMPRESS && defined(PPP_BSDCOMP)
|
||||
@ -189,6 +192,9 @@ static struct compressor *ppp_compressors[8] = {
|
||||
#endif
|
||||
#if DO_DEFLATE && defined(PPP_DEFLATE)
|
||||
&ppp_deflate,
|
||||
#ifdef CI_BADDEFLATE
|
||||
&ppp_baddeflate,
|
||||
#endif
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
@ -24,7 +24,7 @@
|
||||
* OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
||||
* OR MODIFICATIONS.
|
||||
*
|
||||
* $Id: ppp_comp.h,v 1.4 1997/02/22 09:41:11 peter Exp $
|
||||
* $Id: ppp_comp.h,v 1.5 1997/08/19 14:10:46 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef _NET_PPP_COMP_H
|
||||
@ -141,7 +141,9 @@ struct compressor {
|
||||
/*
|
||||
* Definitions for Deflate.
|
||||
*/
|
||||
#define CI_DEFLATE 24 /* config option for Deflate */
|
||||
#define CI_DEFLATE 26 /* config option for Deflate */
|
||||
/* XXX ppp-2.3.x ships with CI_DEFLATE == 24, but that's Magnalink!! */
|
||||
#define CI_BADDEFLATE 24 /* config option for Magnalink */
|
||||
#define CILEN_DEFLATE 4 /* length of its config option */
|
||||
|
||||
#define DEFLATE_MIN_SIZE 8
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: ppp_deflate.c,v 1.6 1997/10/28 15:58:32 bde Exp $ */
|
||||
/* $Id: ppp_deflate.c,v 1.7 1998/03/21 20:56:14 peter Exp $ */
|
||||
|
||||
/*
|
||||
* ppp_deflate.c - interface the zlib procedures for Deflate compression
|
||||
@ -97,6 +97,26 @@ struct compressor ppp_deflate = {
|
||||
z_incomp, /* incomp */
|
||||
z_comp_stats, /* decomp_stat */
|
||||
};
|
||||
#ifdef CI_BADDEFLATE
|
||||
struct compressor ppp_baddeflate = {
|
||||
CI_BADDEFLATE, /* 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 */
|
||||
};
|
||||
#else
|
||||
#define CI_BADDEFLATE CI_DEFLATE /* reduce #ifdef's, let gcc optimize */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Space allocation and freeing routines for use by zlib routines.
|
||||
@ -131,7 +151,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_BADDEFLATE)
|
||||
|| options[1] != CILEN_DEFLATE
|
||||
|| DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
|
||||
|| options[3] != DEFLATE_CHK_SEQUENCE)
|
||||
@ -177,7 +198,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_BADDEFLATE)
|
||||
|| options[1] != CILEN_DEFLATE
|
||||
|| DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
|
||||
|| DEFLATE_SIZE(options[2]) != state->w_size
|
||||
@ -362,7 +384,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_BADDEFLATE)
|
||||
|| options[1] != CILEN_DEFLATE
|
||||
|| DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
|
||||
|| options[3] != DEFLATE_CHK_SEQUENCE)
|
||||
@ -407,7 +430,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_BADDEFLATE)
|
||||
|| options[1] != CILEN_DEFLATE
|
||||
|| DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
|
||||
|| DEFLATE_SIZE(options[2]) != state->w_size
|
||||
|
Loading…
Reference in New Issue
Block a user