root/include/linux/ppp-comp.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * ppp-comp.h - Definitions for doing PPP packet compression.
   4  *
   5  * Copyright 1994-1998 Paul Mackerras.
   6  */
   7 #ifndef _NET_PPP_COMP_H
   8 #define _NET_PPP_COMP_H
   9 
  10 #include <uapi/linux/ppp-comp.h>
  11 
  12 
  13 struct module;
  14 
  15 /*
  16  * The following symbols control whether we include code for
  17  * various compression methods.
  18  */
  19 
  20 #ifndef DO_BSD_COMPRESS
  21 #define DO_BSD_COMPRESS 1       /* by default, include BSD-Compress */
  22 #endif
  23 #ifndef DO_DEFLATE
  24 #define DO_DEFLATE      1       /* by default, include Deflate */
  25 #endif
  26 #define DO_PREDICTOR_1  0
  27 #define DO_PREDICTOR_2  0
  28 
  29 /*
  30  * Structure giving methods for compression/decompression.
  31  */
  32 
  33 struct compressor {
  34         int     compress_proto; /* CCP compression protocol number */
  35 
  36         /* Allocate space for a compressor (transmit side) */
  37         void    *(*comp_alloc) (unsigned char *options, int opt_len);
  38 
  39         /* Free space used by a compressor */
  40         void    (*comp_free) (void *state);
  41 
  42         /* Initialize a compressor */
  43         int     (*comp_init) (void *state, unsigned char *options,
  44                               int opt_len, int unit, int opthdr, int debug);
  45 
  46         /* Reset a compressor */
  47         void    (*comp_reset) (void *state);
  48 
  49         /* Compress a packet */
  50         int     (*compress) (void *state, unsigned char *rptr,
  51                               unsigned char *obuf, int isize, int osize);
  52 
  53         /* Return compression statistics */
  54         void    (*comp_stat) (void *state, struct compstat *stats);
  55 
  56         /* Allocate space for a decompressor (receive side) */
  57         void    *(*decomp_alloc) (unsigned char *options, int opt_len);
  58 
  59         /* Free space used by a decompressor */
  60         void    (*decomp_free) (void *state);
  61 
  62         /* Initialize a decompressor */
  63         int     (*decomp_init) (void *state, unsigned char *options,
  64                                 int opt_len, int unit, int opthdr, int mru,
  65                                 int debug);
  66 
  67         /* Reset a decompressor */
  68         void    (*decomp_reset) (void *state);
  69 
  70         /* Decompress a packet. */
  71         int     (*decompress) (void *state, unsigned char *ibuf, int isize,
  72                                 unsigned char *obuf, int osize);
  73 
  74         /* Update state for an incompressible packet received */
  75         void    (*incomp) (void *state, unsigned char *ibuf, int icnt);
  76 
  77         /* Return decompression statistics */
  78         void    (*decomp_stat) (void *state, struct compstat *stats);
  79 
  80         /* Used in locking compressor modules */
  81         struct module *owner;
  82         /* Extra skb space needed by the compressor algorithm */
  83         unsigned int comp_extra;
  84 };
  85 
  86 /*
  87  * The return value from decompress routine is the length of the
  88  * decompressed packet if successful, otherwise DECOMP_ERROR
  89  * or DECOMP_FATALERROR if an error occurred.
  90  * 
  91  * We need to make this distinction so that we can disable certain
  92  * useful functionality, namely sending a CCP reset-request as a result
  93  * of an error detected after decompression.  This is to avoid infringing
  94  * a patent held by Motorola.
  95  * Don't you just lurve software patents.
  96  */
  97 
  98 #define DECOMP_ERROR            -1      /* error detected before decomp. */
  99 #define DECOMP_FATALERROR       -2      /* error detected after decomp. */
 100 
 101 extern int ppp_register_compressor(struct compressor *);
 102 extern void ppp_unregister_compressor(struct compressor *);
 103 #endif /* _NET_PPP_COMP_H */

/* [<][>][^][v][top][bottom][index][help] */