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 | struct compstat; |
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 ; |
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 */ |
104 | |