1*10465441SEvalZero /* 2*10465441SEvalZero * ccp.h - Definitions for PPP Compression Control Protocol. 3*10465441SEvalZero * 4*10465441SEvalZero * Copyright (c) 1994-2002 Paul Mackerras. All rights reserved. 5*10465441SEvalZero * 6*10465441SEvalZero * Redistribution and use in source and binary forms, with or without 7*10465441SEvalZero * modification, are permitted provided that the following conditions 8*10465441SEvalZero * are met: 9*10465441SEvalZero * 10*10465441SEvalZero * 1. Redistributions of source code must retain the above copyright 11*10465441SEvalZero * notice, this list of conditions and the following disclaimer. 12*10465441SEvalZero * 13*10465441SEvalZero * 2. The name(s) of the authors of this software must not be used to 14*10465441SEvalZero * endorse or promote products derived from this software without 15*10465441SEvalZero * prior written permission. 16*10465441SEvalZero * 17*10465441SEvalZero * 3. Redistributions of any form whatsoever must retain the following 18*10465441SEvalZero * acknowledgment: 19*10465441SEvalZero * "This product includes software developed by Paul Mackerras 20*10465441SEvalZero * <[email protected]>". 21*10465441SEvalZero * 22*10465441SEvalZero * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO 23*10465441SEvalZero * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 24*10465441SEvalZero * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY 25*10465441SEvalZero * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 26*10465441SEvalZero * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 27*10465441SEvalZero * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 28*10465441SEvalZero * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 29*10465441SEvalZero * 30*10465441SEvalZero * $Id: ccp.h,v 1.12 2004/11/04 10:02:26 paulus Exp $ 31*10465441SEvalZero */ 32*10465441SEvalZero 33*10465441SEvalZero #include "netif/ppp/ppp_opts.h" 34*10465441SEvalZero #if PPP_SUPPORT && CCP_SUPPORT /* don't build if not configured for use in lwipopts.h */ 35*10465441SEvalZero 36*10465441SEvalZero #ifndef CCP_H 37*10465441SEvalZero #define CCP_H 38*10465441SEvalZero 39*10465441SEvalZero /* 40*10465441SEvalZero * CCP codes. 41*10465441SEvalZero */ 42*10465441SEvalZero 43*10465441SEvalZero #define CCP_CONFREQ 1 44*10465441SEvalZero #define CCP_CONFACK 2 45*10465441SEvalZero #define CCP_TERMREQ 5 46*10465441SEvalZero #define CCP_TERMACK 6 47*10465441SEvalZero #define CCP_RESETREQ 14 48*10465441SEvalZero #define CCP_RESETACK 15 49*10465441SEvalZero 50*10465441SEvalZero /* 51*10465441SEvalZero * Max # bytes for a CCP option 52*10465441SEvalZero */ 53*10465441SEvalZero 54*10465441SEvalZero #define CCP_MAX_OPTION_LENGTH 32 55*10465441SEvalZero 56*10465441SEvalZero /* 57*10465441SEvalZero * Parts of a CCP packet. 58*10465441SEvalZero */ 59*10465441SEvalZero 60*10465441SEvalZero #define CCP_CODE(dp) ((dp)[0]) 61*10465441SEvalZero #define CCP_ID(dp) ((dp)[1]) 62*10465441SEvalZero #define CCP_LENGTH(dp) (((dp)[2] << 8) + (dp)[3]) 63*10465441SEvalZero #define CCP_HDRLEN 4 64*10465441SEvalZero 65*10465441SEvalZero #define CCP_OPT_CODE(dp) ((dp)[0]) 66*10465441SEvalZero #define CCP_OPT_LENGTH(dp) ((dp)[1]) 67*10465441SEvalZero #define CCP_OPT_MINLEN 2 68*10465441SEvalZero 69*10465441SEvalZero #if BSDCOMPRESS_SUPPORT 70*10465441SEvalZero /* 71*10465441SEvalZero * Definitions for BSD-Compress. 72*10465441SEvalZero */ 73*10465441SEvalZero 74*10465441SEvalZero #define CI_BSD_COMPRESS 21 /* config. option for BSD-Compress */ 75*10465441SEvalZero #define CILEN_BSD_COMPRESS 3 /* length of config. option */ 76*10465441SEvalZero 77*10465441SEvalZero /* Macros for handling the 3rd byte of the BSD-Compress config option. */ 78*10465441SEvalZero #define BSD_NBITS(x) ((x) & 0x1F) /* number of bits requested */ 79*10465441SEvalZero #define BSD_VERSION(x) ((x) >> 5) /* version of option format */ 80*10465441SEvalZero #define BSD_CURRENT_VERSION 1 /* current version number */ 81*10465441SEvalZero #define BSD_MAKE_OPT(v, n) (((v) << 5) | (n)) 82*10465441SEvalZero 83*10465441SEvalZero #define BSD_MIN_BITS 9 /* smallest code size supported */ 84*10465441SEvalZero #define BSD_MAX_BITS 15 /* largest code size supported */ 85*10465441SEvalZero #endif /* BSDCOMPRESS_SUPPORT */ 86*10465441SEvalZero 87*10465441SEvalZero #if DEFLATE_SUPPORT 88*10465441SEvalZero /* 89*10465441SEvalZero * Definitions for Deflate. 90*10465441SEvalZero */ 91*10465441SEvalZero 92*10465441SEvalZero #define CI_DEFLATE 26 /* config option for Deflate */ 93*10465441SEvalZero #define CI_DEFLATE_DRAFT 24 /* value used in original draft RFC */ 94*10465441SEvalZero #define CILEN_DEFLATE 4 /* length of its config option */ 95*10465441SEvalZero 96*10465441SEvalZero #define DEFLATE_MIN_SIZE 9 97*10465441SEvalZero #define DEFLATE_MAX_SIZE 15 98*10465441SEvalZero #define DEFLATE_METHOD_VAL 8 99*10465441SEvalZero #define DEFLATE_SIZE(x) (((x) >> 4) + 8) 100*10465441SEvalZero #define DEFLATE_METHOD(x) ((x) & 0x0F) 101*10465441SEvalZero #define DEFLATE_MAKE_OPT(w) ((((w) - 8) << 4) + DEFLATE_METHOD_VAL) 102*10465441SEvalZero #define DEFLATE_CHK_SEQUENCE 0 103*10465441SEvalZero #endif /* DEFLATE_SUPPORT */ 104*10465441SEvalZero 105*10465441SEvalZero #if MPPE_SUPPORT 106*10465441SEvalZero /* 107*10465441SEvalZero * Definitions for MPPE. 108*10465441SEvalZero */ 109*10465441SEvalZero 110*10465441SEvalZero #define CI_MPPE 18 /* config option for MPPE */ 111*10465441SEvalZero #define CILEN_MPPE 6 /* length of config option */ 112*10465441SEvalZero #endif /* MPPE_SUPPORT */ 113*10465441SEvalZero 114*10465441SEvalZero #if PREDICTOR_SUPPORT 115*10465441SEvalZero /* 116*10465441SEvalZero * Definitions for other, as yet unsupported, compression methods. 117*10465441SEvalZero */ 118*10465441SEvalZero 119*10465441SEvalZero #define CI_PREDICTOR_1 1 /* config option for Predictor-1 */ 120*10465441SEvalZero #define CILEN_PREDICTOR_1 2 /* length of its config option */ 121*10465441SEvalZero #define CI_PREDICTOR_2 2 /* config option for Predictor-2 */ 122*10465441SEvalZero #define CILEN_PREDICTOR_2 2 /* length of its config option */ 123*10465441SEvalZero #endif /* PREDICTOR_SUPPORT */ 124*10465441SEvalZero 125*10465441SEvalZero typedef struct ccp_options { 126*10465441SEvalZero #if DEFLATE_SUPPORT 127*10465441SEvalZero unsigned int deflate :1; /* do Deflate? */ 128*10465441SEvalZero unsigned int deflate_correct :1; /* use correct code for deflate? */ 129*10465441SEvalZero unsigned int deflate_draft :1; /* use draft RFC code for deflate? */ 130*10465441SEvalZero #endif /* DEFLATE_SUPPORT */ 131*10465441SEvalZero #if BSDCOMPRESS_SUPPORT 132*10465441SEvalZero unsigned int bsd_compress :1; /* do BSD Compress? */ 133*10465441SEvalZero #endif /* BSDCOMPRESS_SUPPORT */ 134*10465441SEvalZero #if PREDICTOR_SUPPORT 135*10465441SEvalZero unsigned int predictor_1 :1; /* do Predictor-1? */ 136*10465441SEvalZero unsigned int predictor_2 :1; /* do Predictor-2? */ 137*10465441SEvalZero #endif /* PREDICTOR_SUPPORT */ 138*10465441SEvalZero 139*10465441SEvalZero #if MPPE_SUPPORT 140*10465441SEvalZero u8_t mppe; /* MPPE bitfield */ 141*10465441SEvalZero #endif /* MPPE_SUPPORT */ 142*10465441SEvalZero #if BSDCOMPRESS_SUPPORT 143*10465441SEvalZero u_short bsd_bits; /* # bits/code for BSD Compress */ 144*10465441SEvalZero #endif /* BSDCOMPRESS_SUPPORT */ 145*10465441SEvalZero #if DEFLATE_SUPPORT 146*10465441SEvalZero u_short deflate_size; /* lg(window size) for Deflate */ 147*10465441SEvalZero #endif /* DEFLATE_SUPPORT */ 148*10465441SEvalZero u8_t method; /* code for chosen compression method */ 149*10465441SEvalZero } ccp_options; 150*10465441SEvalZero 151*10465441SEvalZero extern const struct protent ccp_protent; 152*10465441SEvalZero 153*10465441SEvalZero void ccp_resetrequest(ppp_pcb *pcb); /* Issue a reset-request. */ 154*10465441SEvalZero 155*10465441SEvalZero #endif /* CCP_H */ 156*10465441SEvalZero #endif /* PPP_SUPPORT && CCP_SUPPORT */ 157