[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     ! 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