Initial revision
authorPaul Mackerras <paulus@samba.org>
Wed, 31 Aug 1994 23:55:58 +0000 (23:55 +0000)
committerPaul Mackerras <paulus@samba.org>
Wed, 31 Aug 1994 23:55:58 +0000 (23:55 +0000)
include/net/ppp-comp.h [new file with mode: 0644]

diff --git a/include/net/ppp-comp.h b/include/net/ppp-comp.h
new file mode 100644 (file)
index 0000000..aa158ed
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * ppp-comp.h - Definitions for doing PPP packet compression.
+ *
+ * Copyright (c) 1994 The Australian National University.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation is hereby granted, provided that the above copyright
+ * notice appears in all copies.  This software is provided without any
+ * warranty, express or implied. The Australian National University
+ * makes no representations about the suitability of this software for
+ * any purpose.
+ *
+ * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
+ * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+ * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
+ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
+ * OR MODIFICATIONS.
+ *
+ * $Id: ppp-comp.h,v 1.1 1994/08/31 23:55:58 paulus Exp $
+ */
+
+/*
+ * Structure giving methods for compression/decompression.
+ */
+struct compressor {
+       int     compress_proto; /* CCP compression protocol number */
+
+       /* Allocate space for a compressor (transmit side) */
+       void    *(*comp_alloc) __P((u_char *options, int opt_len));
+       /* Free space used by a compressor */
+       void    (*comp_free) __P((void *state));
+       /* Initialize a compressor */
+       int     (*comp_init) __P((void *state, u_char *options, int opt_len,
+                                 int unit, int debug));
+       /* Reset a compressor */
+       void    (*comp_reset) __P((void *state));
+       /* Compress a packet */
+       int     (*compress) __P((void *state, PACKET **mret,
+                                PACKET *mp, int orig_len, int max_len));
+
+       /* Allocate space for a decompressor (receive side) */
+       void    *(*decomp_alloc) __P((u_char *options, int opt_len));
+       /* Free space used by a decompressor */
+       void    (*decomp_free) __P((void *state));
+       /* Initialize a decompressor */
+       int     (*decomp_init) __P((void *state, u_char *options, int opt_len,
+                                   int unit, int mru, int debug));
+       /* Reset a decompressor */
+       void    (*decomp_reset) __P((void *state));
+       /* Decompress a packet. */
+       PACKET  *(*decompress) __P((void *state, PACKET *mp,
+                                        int hdroff));
+       /* Update state for an incompressible packet received */
+       void    (*incomp) __P((void *state, PACKET *mp));
+};
+
+/*
+ * CCP codes.
+ */
+#define CCP_CONFREQ    1
+#define CCP_CONFACK    2
+#define CCP_TERMREQ    5
+#define CCP_TERMACK    6
+#define CCP_RESETREQ   14
+#define CCP_RESETACK   15
+
+/*
+ * Max # bytes for a CCP option
+ */
+#define CCP_MAX_OPTION_LENGTH  32
+
+/*
+ * Parts of a CCP packet.
+ */
+#define CCP_CODE(dp)           ((dp)[0])
+#define CCP_ID(dp)             ((dp)[1])
+#define CCP_LENGTH(dp)         (((dp)[2] << 8) + (dp)[3])
+#define CCP_HDRLEN             4
+
+#define CCP_OPT_CODE(dp)       ((dp)[0])
+#define CCP_OPT_LENGTH(dp)     ((dp)[1])
+#define CCP_OPT_MINLEN         2
+