X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=include%2Fnet%2Fppp-comp.h;h=b97ff3cb4b98fd447255949059c0fa0ee9b0c290;hp=aa158ed16b4b2326d97ede05786443e89ccdca04;hb=4e8378004c3f7b84cd84aaad7cadd61f7af4b72f;hpb=29660ed161d1aeafa4cb9ca3528419dedefd7170;ds=sidebyside diff --git a/include/net/ppp-comp.h b/include/net/ppp-comp.h index aa158ed..b97ff3c 100644 --- a/include/net/ppp-comp.h +++ b/include/net/ppp-comp.h @@ -24,9 +24,13 @@ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * - * $Id: ppp-comp.h,v 1.1 1994/08/31 23:55:58 paulus Exp $ + * $Id: ppp-comp.h,v 1.6 1995/04/24 02:41:37 paulus Exp $ */ +#ifndef _NET_PPP_COMP_H +#define _NET_PPP_COMP_H + +#ifdef PACKETPTR /* * Structure giving methods for compression/decompression. */ @@ -39,12 +43,14 @@ struct compressor { void (*comp_free) __P((void *state)); /* Initialize a compressor */ int (*comp_init) __P((void *state, u_char *options, int opt_len, - int unit, int debug)); + int unit, int hdrlen, int debug)); /* Reset a compressor */ void (*comp_reset) __P((void *state)); /* Compress a packet */ - int (*compress) __P((void *state, PACKET **mret, - PACKET *mp, int orig_len, int max_len)); + int (*compress) __P((void *state, PACKETPTR *mret, + PACKETPTR mp, int orig_len, int max_len)); + /* Return compression statistics */ + void (*comp_stat) __P((void *state, struct compstat *stats)); /* Allocate space for a decompressor (receive side) */ void *(*decomp_alloc) __P((u_char *options, int opt_len)); @@ -52,15 +58,30 @@ struct compressor { void (*decomp_free) __P((void *state)); /* Initialize a decompressor */ int (*decomp_init) __P((void *state, u_char *options, int opt_len, - int unit, int mru, int debug)); + int unit, int hdrlen, int mru, int debug)); /* Reset a decompressor */ void (*decomp_reset) __P((void *state)); /* Decompress a packet. */ - PACKET *(*decompress) __P((void *state, PACKET *mp, - int hdroff)); + int (*decompress) __P((void *state, PACKETPTR mp, + PACKETPTR *dmpp)); /* Update state for an incompressible packet received */ - void (*incomp) __P((void *state, PACKET *mp)); + void (*incomp) __P((void *state, PACKETPTR mp)); + /* Return decompression statistics */ + void (*decomp_stat) __P((void *state, struct compstat *stats)); }; +#endif /* PACKETPTR */ + +/* + * Return values for decompress routine. + * We need to make these distinctions so that we can disable certain + * useful functionality, namely sending a CCP reset-request as a result + * of an error detected after decompression. This is to avoid infringing + * a patent held by Motorola. + * Don't you just lurve software patents. + */ +#define DECOMP_OK 0 /* everything went OK */ +#define DECOMP_ERROR 1 /* error detected before decomp. */ +#define DECOMP_FATALERROR 2 /* error detected after decomp. */ /* * CCP codes. @@ -89,3 +110,19 @@ struct compressor { #define CCP_OPT_LENGTH(dp) ((dp)[1]) #define CCP_OPT_MINLEN 2 +/* + * Definitions for BSD-Compress. + */ +#define CI_BSD_COMPRESS 21 /* config. option for BSD-Compress */ +#define CILEN_BSD_COMPRESS 3 /* length of config. option */ + +/* Macros for handling the 3rd byte of the BSD-Compress config option. */ +#define BSD_NBITS(x) ((x) & 0x1F) /* number of bits requested */ +#define BSD_VERSION(x) ((x) >> 5) /* version of option format */ +#define BSD_CURRENT_VERSION 1 /* current version number */ +#define BSD_MAKE_OPT(v, n) (((v) << 5) | (n)) + +#define BSD_MIN_BITS 9 /* smallest code size supported */ +#define BSD_MAX_BITS 15 /* largest code size supported */ + +#endif /* _NET_PPP_COMP_H */