[BACK]Return to ppp-comp.h CVS log [TXT][DIR] Up to [local] / sys / net

Annotation of sys/net/ppp-comp.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: ppp-comp.h,v 1.8 2002/09/13 00:12:07 deraadt Exp $    */
                      2:
                      3: /*
                      4:  * ppp-comp.h - Definitions for doing PPP packet compression.
                      5:  *
                      6:  * Copyright (c) 1989-2002 Paul Mackerras. All rights reserved.
                      7:  *
                      8:  * Redistribution and use in source and binary forms, with or without
                      9:  * modification, are permitted provided that the following conditions
                     10:  * are met:
                     11:  *
                     12:  * 1. Redistributions of source code must retain the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer.
                     14:  *
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in
                     17:  *    the documentation and/or other materials provided with the
                     18:  *    distribution.
                     19:  *
                     20:  * 3. The name(s) of the authors of this software must not be used to
                     21:  *    endorse or promote products derived from this software without
                     22:  *    prior written permission.
                     23:  *
                     24:  * 4. Redistributions of any form whatsoever must retain the following
                     25:  *    acknowledgment:
                     26:  *    "This product includes software developed by Paul Mackerras
                     27:  *     <paulus@samba.org>".
                     28:  *
                     29:  * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
                     30:  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
                     31:  * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
                     32:  * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     33:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
                     34:  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
                     35:  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     36:  */
                     37:
                     38: #ifndef _NET_PPP_COMP_H_
                     39: #define _NET_PPP_COMP_H_
                     40:
                     41: /*
                     42:  * The following symbols control whether we include code for
                     43:  * various compression methods.
                     44:  */
                     45: #ifndef DO_BSD_COMPRESS
                     46: #define DO_BSD_COMPRESS        1       /* by default, include BSD-Compress */
                     47: #endif
                     48: #ifndef DO_DEFLATE
                     49: #define DO_DEFLATE     1       /* by default, include Deflate */
                     50: #endif
                     51: #define DO_PREDICTOR_1 0
                     52: #define DO_PREDICTOR_2 0
                     53:
                     54: /*
                     55:  * Structure giving methods for compression/decompression.
                     56:  */
                     57: #ifdef PACKETPTR
                     58: struct compressor {
                     59:        int     compress_proto; /* CCP compression protocol number */
                     60:
                     61:        /* Allocate space for a compressor (transmit side) */
                     62:        void    *(*comp_alloc)(u_char *options, int opt_len);
                     63:        /* Free space used by a compressor */
                     64:        void    (*comp_free)(void *state);
                     65:        /* Initialize a compressor */
                     66:        int     (*comp_init)(void *state, u_char *options, int opt_len,
                     67:                                  int unit, int hdrlen, int debug);
                     68:        /* Reset a compressor */
                     69:        void    (*comp_reset)(void *state);
                     70:        /* Compress a packet */
                     71:        int     (*compress)(void *state, PACKETPTR *mret,
                     72:                                 PACKETPTR mp, int orig_len, int max_len);
                     73:        /* Return compression statistics */
                     74:        void    (*comp_stat)(void *state, struct compstat *stats);
                     75:
                     76:        /* Allocate space for a decompressor (receive side) */
                     77:        void    *(*decomp_alloc)(u_char *options, int opt_len);
                     78:        /* Free space used by a decompressor */
                     79:        void    (*decomp_free)(void *state);
                     80:        /* Initialize a decompressor */
                     81:        int     (*decomp_init)(void *state, u_char *options, int opt_len,
                     82:                                    int unit, int hdrlen, int mru, int debug);
                     83:        /* Reset a decompressor */
                     84:        void    (*decomp_reset)(void *state);
                     85:        /* Decompress a packet. */
                     86:        int     (*decompress)(void *state, PACKETPTR mp,
                     87:                                   PACKETPTR *dmpp);
                     88:        /* Update state for an incompressible packet received */
                     89:        void    (*incomp)(void *state, PACKETPTR mp);
                     90:        /* Return decompression statistics */
                     91:        void    (*decomp_stat)(void *state, struct compstat *stats);
                     92: };
                     93: #endif /* PACKETPTR */
                     94:
                     95: /*
                     96:  * Return values for decompress routine.
                     97:  * We need to make these distinctions so that we can disable certain
                     98:  * useful functionality, namely sending a CCP reset-request as a result
                     99:  * of an error detected after decompression.  This is to avoid infringing
                    100:  * a patent held by Motorola.
                    101:  * Don't you just lurve software patents.
                    102:  */
                    103: #define DECOMP_OK              0       /* everything went OK */
                    104: #define DECOMP_ERROR           1       /* error detected before decomp. */
                    105: #define DECOMP_FATALERROR      2       /* error detected after decomp. */
                    106:
                    107: /*
                    108:  * CCP codes.
                    109:  */
                    110: #define CCP_CONFREQ    1
                    111: #define CCP_CONFACK    2
                    112: #define CCP_TERMREQ    5
                    113: #define CCP_TERMACK    6
                    114: #define CCP_RESETREQ   14
                    115: #define CCP_RESETACK   15
                    116:
                    117: /*
                    118:  * Max # bytes for a CCP option
                    119:  */
                    120: #define CCP_MAX_OPTION_LENGTH  32
                    121:
                    122: /*
                    123:  * Parts of a CCP packet.
                    124:  */
                    125: #define CCP_CODE(dp)           ((dp)[0])
                    126: #define CCP_ID(dp)             ((dp)[1])
                    127: #define CCP_LENGTH(dp)         (((dp)[2] << 8) + (dp)[3])
                    128: #define CCP_HDRLEN             4
                    129:
                    130: #define CCP_OPT_CODE(dp)       ((dp)[0])
                    131: #define CCP_OPT_LENGTH(dp)     ((dp)[1])
                    132: #define CCP_OPT_MINLEN         2
                    133:
                    134: /*
                    135:  * Definitions for BSD-Compress.
                    136:  */
                    137: #define CI_BSD_COMPRESS                21      /* config. option for BSD-Compress */
                    138: #define CILEN_BSD_COMPRESS     3       /* length of config. option */
                    139:
                    140: /* Macros for handling the 3rd byte of the BSD-Compress config option. */
                    141: #define BSD_NBITS(x)           ((x) & 0x1F)    /* number of bits requested */
                    142: #define BSD_VERSION(x)         ((x) >> 5)      /* version of option format */
                    143: #define BSD_CURRENT_VERSION    1               /* current version number */
                    144: #define BSD_MAKE_OPT(v, n)     (((v) << 5) | (n))
                    145:
                    146: #define BSD_MIN_BITS           9       /* smallest code size supported */
                    147: #define BSD_MAX_BITS           15      /* largest code size supported */
                    148:
                    149: /*
                    150:  * Definitions for Deflate.
                    151:  */
                    152: #define CI_DEFLATE             26      /* config option for Deflate */
                    153: #define CI_DEFLATE_DRAFT       24      /* value used in original draft RFC */
                    154: #define CILEN_DEFLATE          4       /* length of its config option */
                    155:
                    156: #define DEFLATE_MIN_SIZE       8
                    157: #define DEFLATE_MAX_SIZE       15
                    158: #define DEFLATE_METHOD_VAL     8
                    159: #define DEFLATE_SIZE(x)                (((x) >> 4) + DEFLATE_MIN_SIZE)
                    160: #define DEFLATE_METHOD(x)      ((x) & 0x0F)
                    161: #define DEFLATE_MAKE_OPT(w)    ((((w) - DEFLATE_MIN_SIZE) << 4) \
                    162:                                 + DEFLATE_METHOD_VAL)
                    163: #define DEFLATE_CHK_SEQUENCE   0
                    164:
                    165: /*
                    166:  * Definitions for other, as yet unsupported, compression methods.
                    167:  */
                    168: #define CI_PREDICTOR_1         1       /* config option for Predictor-1 */
                    169: #define CILEN_PREDICTOR_1      2       /* length of its config option */
                    170: #define CI_PREDICTOR_2         2       /* config option for Predictor-2 */
                    171: #define CILEN_PREDICTOR_2      2       /* length of its config option */
                    172:
                    173: #endif /* _NET_PPP_COMP_H_ */

CVSweb