Remove more stuff that we don't need to distribute
authorPaul Mackerras <paulus@samba.org>
Mon, 18 Aug 2008 12:21:18 +0000 (22:21 +1000)
committerPaul Mackerras <paulus@samba.org>
Mon, 18 Aug 2008 12:21:18 +0000 (22:21 +1000)
This removes some files from include/linux that any halfway-modern
distro will have under /usr/include, and removes the stuff from the
linux/ directory that we haven't included in the tarballs for ages.
This also moves some MPPE macros from include/{linux,net}/ppp-comp.h
to a new pppd/mppe.h.

Signed-off-by: Paul Mackerras <paulus@samba.org>
include/linux/if_ether.h [deleted file]
include/linux/if_pppol2tp.h
include/linux/if_pppox.h [deleted file]
include/linux/if_pppvar.h [deleted file]
include/linux/ppp-comp.h
include/net/ppp-comp.h
include/pcap-int.h [deleted file]
linux/bsd_comp.c [deleted file]
linux/kinstall.sh [deleted file]
pppd/chap_ms.h
pppd/mppe.h [new file with mode: 0644]

diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
deleted file mode 100644 (file)
index e9191ba..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * INET                An implementation of the TCP/IP protocol suite for the LINUX
- *             operating system.  INET is implemented using the  BSD Socket
- *             interface as the means of communication with the user level.
- *
- *             Global definitions for the Ethernet IEEE 802.3 interface.
- *
- * Version:    @(#)if_ether.h  1.0.1a  02/08/94
- *
- * Author:     Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
- *             Donald Becker, <becker@super.org>
- *             Alan Cox, <alan@redhat.com>
- *             Steve Whitehouse, <gw7rrm@eeshack3.swan.ac.uk>
- *
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- */
-#ifndef _LINUX_IF_ETHER_H
-#define _LINUX_IF_ETHER_H
-
-/*
- *     IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
- *     and FCS/CRC (frame check sequence). 
- */
-
-#define ETH_ALEN       6               /* Octets in one ethernet addr   */
-#define ETH_HLEN       14              /* Total octets in header.       */
-#define ETH_ZLEN       60              /* Min. octets in frame sans FCS */
-#define ETH_DATA_LEN   1500            /* Max. octets in payload        */
-#define ETH_FRAME_LEN  1514            /* Max. octets in frame sans FCS */
-
-/*
- *     These are the defined Ethernet Protocol ID's.
- */
-
-#define ETH_P_LOOP     0x0060          /* Ethernet Loopback packet     */
-#define ETH_P_PUP      0x0200          /* Xerox PUP packet             */
-#define ETH_P_PUPAT    0x0201          /* Xerox PUP Addr Trans packet  */
-#define ETH_P_IP       0x0800          /* Internet Protocol packet     */
-#define ETH_P_X25      0x0805          /* CCITT X.25                   */
-#define ETH_P_ARP      0x0806          /* Address Resolution packet    */
-#define        ETH_P_BPQ       0x08FF          /* G8BPQ AX.25 Ethernet Packet  [ NOT AN OFFICIALLY REGISTERED ID ] */
-#define ETH_P_IEEEPUP  0x0a00          /* Xerox IEEE802.3 PUP packet */
-#define ETH_P_IEEEPUPAT        0x0a01          /* Xerox IEEE802.3 PUP Addr Trans packet */
-#define ETH_P_DEC       0x6000          /* DEC Assigned proto           */
-#define ETH_P_DNA_DL    0x6001          /* DEC DNA Dump/Load            */
-#define ETH_P_DNA_RC    0x6002          /* DEC DNA Remote Console       */
-#define ETH_P_DNA_RT    0x6003          /* DEC DNA Routing              */
-#define ETH_P_LAT       0x6004          /* DEC LAT                      */
-#define ETH_P_DIAG      0x6005          /* DEC Diagnostics              */
-#define ETH_P_CUST      0x6006          /* DEC Customer use             */
-#define ETH_P_SCA       0x6007          /* DEC Systems Comms Arch       */
-#define ETH_P_RARP      0x8035         /* Reverse Addr Res packet      */
-#define ETH_P_ATALK    0x809B          /* Appletalk DDP                */
-#define ETH_P_AARP     0x80F3          /* Appletalk AARP               */
-#define ETH_P_IPX      0x8137          /* IPX over DIX                 */
-#define ETH_P_IPV6     0x86DD          /* IPv6 over bluebook           */
-#define ETH_P_PPP_DISC 0x8863          /* PPPoE discovery messages     */
-#define ETH_P_PPP_SES  0x8864          /* PPPoE session messages       */
-#define ETH_P_ATMMPOA  0x884c          /* MultiProtocol Over ATM       */
-#define ETH_P_ATMFATE  0x8884          /* Frame-based ATM Transport
-                                        * over Ethernet
-                                        */
-
-/*
- *     Non DIX types. Won't clash for 1500 types.
- */
-#define ETH_P_802_3    0x0001          /* Dummy type for 802.3 frames  */
-#define ETH_P_AX25     0x0002          /* Dummy protocol id for AX.25  */
-#define ETH_P_ALL      0x0003          /* Every packet (be careful!!!) */
-#define ETH_P_802_2    0x0004          /* 802.2 frames                 */
-#define ETH_P_SNAP     0x0005          /* Internal only                */
-#define ETH_P_DDCMP     0x0006          /* DEC DDCMP: Internal only     */
-#define ETH_P_WAN_PPP   0x0007          /* Dummy type for WAN PPP frames*/
-#define ETH_P_PPP_MP    0x0008          /* Dummy type for PPP MP frames */
-#define ETH_P_LOCALTALK 0x0009         /* Localtalk pseudo type        */
-#define ETH_P_PPPTALK  0x0010          /* Dummy type for Atalk over PPP*/
-#define ETH_P_TR_802_2 0x0011          /* 802.2 frames                 */
-#define ETH_P_MOBITEX  0x0015          /* Mobitex (kaz@cafe.net)       */
-#define ETH_P_CONTROL  0x0016          /* Card specific control frames */
-#define ETH_P_IRDA     0x0017          /* Linux-IrDA                   */
-#define ETH_P_ECONET   0x0018          /* Acorn Econet                 */
-
-/*
- *     This is an Ethernet frame header.
- */
-struct ethhdr 
-{
-       unsigned char   h_dest[ETH_ALEN];       /* destination eth addr */
-       unsigned char   h_source[ETH_ALEN];     /* source ether addr    */
-       unsigned short  h_proto;                /* packet type ID field */
-};
-
-#endif /* _LINUX_IF_ETHER_H */
index a7d6a2234b318c6b90109acec9845ea059bd63b2..4113d6ad435d377b3ce633ecade7d1918c0bf82d 100644 (file)
 
 #include <asm/types.h>
 
-#ifdef __KERNEL__
-#include <linux/in.h>
-#endif
-
 /* Structure used to connect() the socket to a particular tunnel UDP
  * socket.
  */
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h
deleted file mode 100644 (file)
index 79684be..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/***************************************************************************
- * Linux PPP over X - Generic PPP transport layer sockets
- * Linux PPP over Ethernet (PPPoE) Socket Implementation (RFC 2516) 
- *
- * This file supplies definitions required by the PPP over Ethernet driver
- * (pppox.c).  All version information wrt this file is located in pppox.c
- *
- * License:
- *             This program is free software; you can redistribute it and/or
- *             modify it under the terms of the GNU General Public License
- *             as published by the Free Software Foundation; either version
- *             2 of the License, or (at your option) any later version.
- *
- */
-
-#ifndef __LINUX_IF_PPPOX_H
-#define __LINUX_IF_PPPOX_H
-
-
-#include <asm/types.h>
-#include <asm/byteorder.h>
-
-#ifdef  __KERNEL__
-#include <linux/if_ether.h>
-#include <linux/if.h>
-#include <linux/netdevice.h>
-#include <linux/sched.h>
-#include <asm/semaphore.h>
-#include <linux/ppp_channel.h>
-#endif /* __KERNEL__ */
-
-/* For user-space programs to pick up these definitions
- * which they wouldn't get otherwise without defining __KERNEL__
- */
-#ifndef AF_PPPOX
-#define AF_PPPOX       24
-#define PF_PPPOX       AF_PPPOX
-#endif /* !(AF_PPPOX) */
-
-/************************************************************************ 
- * PPPoE addressing definition 
- */ 
-typedef __u16 sid_t; 
-struct pppoe_addr{ 
-       sid_t           sid;                    /* Session identifier */ 
-       unsigned char   remote[ETH_ALEN];       /* Remote address */ 
-       char            dev[IFNAMSIZ];          /* Local device to use */ 
-}; 
-/************************************************************************ 
- * Protocols supported by AF_PPPOX 
- */ 
-#define PX_PROTO_OE    0 /* Currently just PPPoE */
-#define PX_MAX_PROTO   1       
-struct sockaddr_pppox { 
-       sa_family_t     sa_family;            /* address family, AF_PPPOX */ 
-       unsigned int    sa_protocol;          /* protocol identifier */ 
-       union{ 
-               struct pppoe_addr       pppoe; 
-       }sa_addr; 
-}__attribute__ ((packed)); 
-
-
-/*********************************************************************
- *
- * ioctl interface for defining forwarding of connections
- *
- ********************************************************************/
-
-#define PPPOEIOCSFWD   _IOW(0xB1 ,0, sizeof(struct sockaddr_pppox))
-#define PPPOEIOCDFWD   _IO(0xB1 ,1)
-/*#define PPPOEIOCGFWD _IOWR(0xB1,2, sizeof(struct sockaddr_pppox))*/
-
-/* Codes to identify message types */
-#define PADI_CODE      0x09
-#define PADO_CODE      0x07
-#define PADR_CODE      0x19
-#define PADS_CODE      0x65
-#define PADT_CODE      0xa7
-struct pppoe_tag {
-       __u16 tag_type;
-       __u16 tag_len;
-       char tag_data[0];
-} __attribute ((packed));
-
-/* Tag identifiers */
-#define PTT_EOL                __constant_htons(0x0000)
-#define PTT_SRV_NAME   __constant_htons(0x0101)
-#define PTT_AC_NAME    __constant_htons(0x0102)
-#define PTT_HOST_UNIQ  __constant_htons(0x0103)
-#define PTT_AC_COOKIE  __constant_htons(0x0104)
-#define PTT_VENDOR     __constant_htons(0x0105)
-#define PTT_RELAY_SID  __constant_htons(0x0110)
-#define PTT_SRV_ERR     __constant_htons(0x0201)
-#define PTT_SYS_ERR    __constant_htons(0x0202)
-#define PTT_GEN_ERR    __constant_htons(0x0203)
-
-struct pppoe_hdr {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-       __u8 ver : 4;
-       __u8 type : 4;
-#elif defined(__BIG_ENDIAN_BITFIELD)
-       __u8 type : 4;
-       __u8 ver : 4;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
-       __u8 code;
-       __u16 sid;
-       __u16 length;
-       struct pppoe_tag tag[0];
-} __attribute__ ((packed));
-
-#ifdef __KERNEL__
-
-struct pppox_proto {
-       int (*create)(struct socket *sock);
-       int (*ioctl)(struct socket *sock, unsigned int cmd,
-                    unsigned long arg);
-};
-
-extern int register_pppox_proto(int proto_num, struct pppox_proto *pp);
-extern void unregister_pppox_proto(int proto_num);
-extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */
-extern int pppox_channel_ioctl(struct ppp_channel *pc, unsigned int cmd,
-                              unsigned long arg);
-
-/* PPPoE socket states */
-enum {
-    PPPOX_NONE         = 0,  /* initial state */
-    PPPOX_CONNECTED    = 1,  /* connection established ==TCP_ESTABLISHED */
-    PPPOX_BOUND                = 2,  /* bound to ppp device */
-    PPPOX_RELAY                = 4,  /* forwarding is enabled */
-    PPPOX_ZOMBIE        = 8,  /* dead, but still connected */
-    PPPOX_DEAD         = 16
-};
-
-extern struct ppp_channel_ops pppoe_chan_ops;
-
-extern int pppox_proto_init(struct net_proto *np);
-
-#endif /* __KERNEL__ */
-
-#endif /* !(__LINUX_IF_PPPOX_H) */
diff --git a/include/linux/if_pppvar.h b/include/linux/if_pppvar.h
deleted file mode 100644 (file)
index ff7bd3f..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/*     From: if_pppvar.h,v 1.2 1995/06/12 11:36:51 paulus Exp */
-/*
- * if_pppvar.h - private structures and declarations for PPP.
- *
- * Copyright (c) 1989-2002 Paul Mackerras. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The name(s) of the authors of this software must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission.
- *
- * 4. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by Paul Mackerras
- *     <paulus@samba.org>".
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The name "Carnegie Mellon University" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For permission or any legal
- *    details, please contact
- *      Office of Technology Transfer
- *      Carnegie Mellon University
- *      5000 Forbes Avenue
- *      Pittsburgh, PA  15213-3890
- *      (412) 268-4387, fax: (412) 268-7395
- *      tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by Computing Services
- *     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- *  ==FILEVERSION 990911==
- *
- *  NOTE TO MAINTAINERS:
- *   If you modify this file at all, please set the above date.
- *   if_pppvar.h is shipped with a PPP distribution as well as with the kernel;
- *   if everyone increases the FILEVERSION number above, then scripts
- *   can do the right thing when deciding whether to install a new if_pppvar.h
- *   file.  Don't change the format of that line otherwise, so the
- *   installation script can recognize it.
- */
-
-/*
- * Supported network protocols.  These values are used for
- * indexing sc_npmode.
- */
-
-#define NP_IP  0               /* Internet Protocol */
-#define NP_IPX 1               /* IPX protocol */
-#define NP_AT  2               /* Appletalk protocol */
-#define NP_IPV6        3               /* Internet Protocol */
-#define NUM_NP 4               /* Number of NPs. */
-
-#define OBUFSIZE       256     /* # chars of output buffering */
-
-/*
- * Structure describing each ppp unit.
- */
-
-struct ppp {
-       int             magic;          /* magic value for structure    */
-       struct ppp      *next;          /* unit with next index         */
-       unsigned long   inuse;          /* are we allocated?            */
-       int             line;           /* network interface unit #     */
-       __u32           flags;          /* miscellaneous control flags  */
-       int             mtu;            /* maximum xmit frame size      */
-       int             mru;            /* maximum receive frame size   */
-       struct slcompress *slcomp;      /* for TCP header compression   */
-       struct sk_buff_head xmt_q;      /* frames to send from pppd     */
-       struct sk_buff_head rcv_q;      /* frames for pppd to read      */
-       unsigned long   xmit_busy;      /* bit 0 set when xmitter busy  */
-
-       /* Information specific to using ppp on async serial lines. */
-       struct tty_struct *tty;         /* ptr to TTY structure */
-       struct tty_struct *backup_tty;  /* TTY to use if tty gets closed */
-       __u8            escape;         /* 0x20 if prev char was PPP_ESC */
-       __u8            toss;           /* toss this frame              */
-       volatile __u8   tty_pushing;    /* internal state flag          */
-       volatile __u8   woke_up;        /* internal state flag          */
-       __u32           xmit_async_map[8]; /* 1 bit means that given control 
-                                          character is quoted on output*/
-       __u32           recv_async_map; /* 1 bit means that given control 
-                                          character is ignored on input*/
-       __u32           bytes_sent;     /* Bytes sent on frame  */
-       __u32           bytes_rcvd;     /* Bytes recvd on frame */
-
-       /* Async transmission information */
-       struct sk_buff  *tpkt;          /* frame currently being sent   */
-       int             tpkt_pos;       /* how much of it we've done    */
-       __u16           tfcs;           /* FCS so far for it            */
-       unsigned char   *optr;          /* where we're up to in sending */
-       unsigned char   *olim;          /* points past last valid char  */
-
-       /* Async reception information */
-       struct sk_buff  *rpkt;          /* frame currently being rcvd   */
-       __u16           rfcs;           /* FCS so far of rpkt           */
-
-       /* Queues for select() functionality */
-       struct wait_queue *read_wait;   /* queue for reading processes  */
-
-       /* info for detecting idle channels */
-       unsigned long   last_xmit;      /* time of last transmission    */
-       unsigned long   last_recv;      /* time last packet received    */
-
-       /* Statistic information */
-       struct pppstat  stats;          /* statistic information        */
-
-       /* PPP compression protocol information */
-       struct  compressor *sc_xcomp;   /* transmit compressor */
-       void    *sc_xc_state;           /* transmit compressor state */
-       struct  compressor *sc_rcomp;   /* receive decompressor */
-       void    *sc_rc_state;           /* receive decompressor state */
-
-       enum    NPmode sc_npmode[NUM_NP]; /* what to do with each NP */
-       int      sc_xfer;               /* PID of reserved PPP table */
-       char    name[8];                /* space for unit name */
-       struct device   dev;            /* net device structure */
-       struct enet_statistics estats;  /* more detailed stats */
-
-       /* tty output buffer */
-       unsigned char   obuf[OBUFSIZE]; /* buffer for characters to send */
-};
-
-#define PPP_MAGIC      0x5002
-#define PPP_VERSION    "2.3.11"
index fc96d94c7b83cf23a3cc350dcda9abf49ec1a6b5..d30cacbd49ae288be9537c3fd256f972b34ed5c2 100644 (file)
@@ -201,93 +201,6 @@ struct compressor {
 #define CI_MPPE                        18      /* config option for MPPE */
 #define CILEN_MPPE             6       /* length of config option */
 
-#define MPPE_PAD               4       /* MPPE growth per frame */
-#define MPPE_MAX_KEY_LEN       16      /* largest key length (128-bit) */
-
-/* option bits for ccp_options.mppe */
-#define MPPE_OPT_40            0x01    /* 40 bit */
-#define MPPE_OPT_128           0x02    /* 128 bit */
-#define MPPE_OPT_STATEFUL      0x04    /* stateful mode */
-/* unsupported opts */
-#define MPPE_OPT_56            0x08    /* 56 bit */
-#define MPPE_OPT_MPPC          0x10    /* MPPC compression */
-#define MPPE_OPT_D             0x20    /* Unknown */
-#define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D)
-#define MPPE_OPT_UNKNOWN       0x40    /* Bits !defined in RFC 3078 were set */
-
-/*
- * This is not nice ... the alternative is a bitfield struct though.
- * And unfortunately, we cannot share the same bits for the option
- * names above since C and H are the same bit.  We could do a u_int32
- * but then we have to do a htonl() all the time and/or we still need
- * to know which octet is which.
- */
-#define MPPE_C_BIT             0x01    /* MPPC */
-#define MPPE_D_BIT             0x10    /* Obsolete, usage unknown */
-#define MPPE_L_BIT             0x20    /* 40-bit */
-#define MPPE_S_BIT             0x40    /* 128-bit */
-#define MPPE_M_BIT             0x80    /* 56-bit, not supported */
-#define MPPE_H_BIT             0x01    /* Stateless (in a different byte) */
-
-/* Does not include H bit; used for least significant octet only. */
-#define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT)
-
-/* Build a CI from mppe opts (see RFC 3078) */
-#define MPPE_OPTS_TO_CI(opts, ci)              \
-    do {                                       \
-       u_char *ptr = ci; /* u_char[4] */       \
-                                               \
-       /* H bit */                             \
-       if (opts & MPPE_OPT_STATEFUL)           \
-           *ptr++ = 0x0;                       \
-       else                                    \
-           *ptr++ = MPPE_H_BIT;                \
-       *ptr++ = 0;                             \
-       *ptr++ = 0;                             \
-                                               \
-       /* S,L bits */                          \
-       *ptr = 0;                               \
-       if (opts & MPPE_OPT_128)                \
-           *ptr |= MPPE_S_BIT;                 \
-       if (opts & MPPE_OPT_40)                 \
-           *ptr |= MPPE_L_BIT;                 \
-       /* M,D,C bits not supported */          \
-    } while (/* CONSTCOND */ 0)
-
-/* The reverse of the above */
-#define MPPE_CI_TO_OPTS(ci, opts)              \
-    do {                                       \
-       u_char *ptr = ci; /* u_char[4] */       \
-                                               \
-       opts = 0;                               \
-                                               \
-       /* H bit */                             \
-       if (!(ptr[0] & MPPE_H_BIT))             \
-           opts |= MPPE_OPT_STATEFUL;          \
-                                               \
-       /* S,L bits */                          \
-       if (ptr[3] & MPPE_S_BIT)                \
-           opts |= MPPE_OPT_128;               \
-       if (ptr[3] & MPPE_L_BIT)                \
-           opts |= MPPE_OPT_40;                \
-                                               \
-       /* M,D,C bits */                        \
-       if (ptr[3] & MPPE_M_BIT)                \
-           opts |= MPPE_OPT_56;                \
-       if (ptr[3] & MPPE_D_BIT)                \
-           opts |= MPPE_OPT_D;                 \
-       if (ptr[3] & MPPE_C_BIT)                \
-           opts |= MPPE_OPT_MPPC;              \
-                                               \
-       /* Other bits */                        \
-       if (ptr[0] & ~MPPE_H_BIT)               \
-           opts |= MPPE_OPT_UNKNOWN;           \
-       if (ptr[1] || ptr[2])                   \
-           opts |= MPPE_OPT_UNKNOWN;           \
-       if (ptr[3] & ~MPPE_ALL_BITS)            \
-           opts |= MPPE_OPT_UNKNOWN;           \
-    } while (/* CONSTCOND */ 0)
-
 /*
  * Definitions for other, as yet unsupported, compression methods.
  */
@@ -297,9 +210,4 @@ struct compressor {
 #define CI_PREDICTOR_2         2       /* config option for Predictor-2 */
 #define CILEN_PREDICTOR_2      2       /* length of its config option */
 
-#ifdef __KERNEL__
-extern int ppp_register_compressor(struct compressor *);
-extern void ppp_unregister_compressor(struct compressor *);
-#endif /* __KERNEL__ */
-
 #endif /* _NET_PPP_COMP_H */
index 894bf12a8e630b6edf10c265f0e930dd9d5df3a3..088c73e95145e79a4921d3904fa4a63acc669312 100644 (file)
@@ -168,93 +168,6 @@ struct compressor {
 #define CI_MPPE                        18      /* config option for MPPE */
 #define CILEN_MPPE             6       /* length of config option */
 
-#define MPPE_PAD               4       /* MPPE growth per frame */
-#define MPPE_MAX_KEY_LEN       16      /* largest key length (128-bit) */
-
-/* option bits for ccp_options.mppe */
-#define MPPE_OPT_40            0x01    /* 40 bit */
-#define MPPE_OPT_128           0x02    /* 128 bit */
-#define MPPE_OPT_STATEFUL      0x04    /* stateful mode */
-/* unsupported opts */
-#define MPPE_OPT_56            0x08    /* 56 bit */
-#define MPPE_OPT_MPPC          0x10    /* MPPC compression */
-#define MPPE_OPT_D             0x20    /* Unknown */
-#define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D)
-#define MPPE_OPT_UNKNOWN       0x40    /* Bits !defined in RFC 3078 were set */
-
-/*
- * This is not nice ... the alternative is a bitfield struct though.
- * And unfortunately, we cannot share the same bits for the option
- * names above since C and H are the same bit.  We could do a u_int32
- * but then we have to do a htonl() all the time and/or we still need
- * to know which octet is which.
- */
-#define MPPE_C_BIT             0x01    /* MPPC */
-#define MPPE_D_BIT             0x10    /* Obsolete, usage unknown */
-#define MPPE_L_BIT             0x20    /* 40-bit */
-#define MPPE_S_BIT             0x40    /* 128-bit */
-#define MPPE_M_BIT             0x80    /* 56-bit, not supported */
-#define MPPE_H_BIT             0x01    /* Stateless (in a different byte) */
-
-/* Does not include H bit; used for least significant octet only. */
-#define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT)
-
-/* Build a CI from mppe opts (see RFC 3078) */
-#define MPPE_OPTS_TO_CI(opts, ci)              \
-    do {                                       \
-       u_char *ptr = ci; /* u_char[4] */       \
-                                               \
-       /* H bit */                             \
-       if (opts & MPPE_OPT_STATEFUL)           \
-           *ptr++ = 0x0;                       \
-       else                                    \
-           *ptr++ = MPPE_H_BIT;                \
-       *ptr++ = 0;                             \
-       *ptr++ = 0;                             \
-                                               \
-       /* S,L bits */                          \
-       *ptr = 0;                               \
-       if (opts & MPPE_OPT_128)                \
-           *ptr |= MPPE_S_BIT;                 \
-       if (opts & MPPE_OPT_40)                 \
-           *ptr |= MPPE_L_BIT;                 \
-       /* M,D,C bits not supported */          \
-    } while (/* CONSTCOND */ 0)
-
-/* The reverse of the above */
-#define MPPE_CI_TO_OPTS(ci, opts)              \
-    do {                                       \
-       u_char *ptr = ci; /* u_char[4] */       \
-                                               \
-       opts = 0;                               \
-                                               \
-       /* H bit */                             \
-       if (!(ptr[0] & MPPE_H_BIT))             \
-           opts |= MPPE_OPT_STATEFUL;          \
-                                               \
-       /* S,L bits */                          \
-       if (ptr[3] & MPPE_S_BIT)                \
-           opts |= MPPE_OPT_128;               \
-       if (ptr[3] & MPPE_L_BIT)                \
-           opts |= MPPE_OPT_40;                \
-                                               \
-       /* M,D,C bits */                        \
-       if (ptr[3] & MPPE_M_BIT)                \
-           opts |= MPPE_OPT_56;                \
-       if (ptr[3] & MPPE_D_BIT)                \
-           opts |= MPPE_OPT_D;                 \
-       if (ptr[3] & MPPE_C_BIT)                \
-           opts |= MPPE_OPT_MPPC;              \
-                                               \
-       /* Other bits */                        \
-       if (ptr[0] & ~MPPE_H_BIT)               \
-           opts |= MPPE_OPT_UNKNOWN;           \
-       if (ptr[1] || ptr[2])                   \
-           opts |= MPPE_OPT_UNKNOWN;           \
-       if (ptr[3] & ~MPPE_ALL_BITS)            \
-           opts |= MPPE_OPT_UNKNOWN;           \
-    } while (/* CONSTCOND */ 0)
-
 /*
  * Definitions for other, as yet unsupported, compression methods.
  */
diff --git a/include/pcap-int.h b/include/pcap-int.h
deleted file mode 100644 (file)
index ba10a95..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1994, 1995, 1996
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the Computer Systems
- *     Engineering Group at Lawrence Berkeley Laboratory.
- * 4. Neither the name of the University nor of the Laboratory may be used
- *    to endorse or promote products derived from this software without
- *    specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#) $Header: /home/paulus/ppp/samba.org/ppp/include/pcap-int.h,v 1.1 2000/08/01 01:37:24 paulus Exp $ (LBL)
- */
-
-#ifndef pcap_int_h
-#define pcap_int_h
-
-#include <pcap.h>
-
-/*
- * Savefile
- */
-struct pcap_sf {
-       FILE *rfile;
-       int swapped;
-       int version_major;
-       int version_minor;
-       u_char *base;
-};
-
-struct pcap_md {
-       struct pcap_stat stat;
-       /*XXX*/
-       int use_bpf;
-       u_long  TotPkts;        /* can't oflow for 79 hrs on ether */
-       u_long  TotAccepted;    /* count accepted by filter */
-       u_long  TotDrops;       /* count of dropped packets */
-       long    TotMissed;      /* missed by i/f during this run */
-       long    OrigMissed;     /* missed by i/f before this run */
-#ifdef linux
-       int pad;
-       int skip;
-       char *device;
-#endif
-};
-
-struct pcap {
-       int fd;
-       int snapshot;
-       int linktype;
-       int tzoff;              /* timezone offset */
-       int offset;             /* offset for proper alignment */
-
-       struct pcap_sf sf;
-       struct pcap_md md;
-
-       /*
-        * Read buffer.
-        */
-       int bufsize;
-       u_char *buffer;
-       u_char *bp;
-       int cc;
-
-       /*
-        * Place holder for pcap_next().
-        */
-       u_char *pkt;
-
-       
-       /*
-        * Placeholder for filter code if bpf not in kernel.
-        */
-       struct bpf_program fcode;
-
-       char errbuf[PCAP_ERRBUF_SIZE];
-};
-
-int    yylex(void);
-
-#ifndef min
-#define min(a, b) ((a) > (b) ? (b) : (a))
-#endif
-
-/* XXX should these be in pcap.h? */
-int    pcap_offline_read(pcap_t *, int, pcap_handler, u_char *);
-int    pcap_read(pcap_t *, int cnt, pcap_handler, u_char *);
-
-/* Ultrix pads to make everything line up on a nice boundary */
-#if defined(ultrix) || defined(__alpha)
-#define       PCAP_FDDIPAD 3
-#endif
-
-/* XXX */
-extern int pcap_fddipad;
-#endif
diff --git a/linux/bsd_comp.c b/linux/bsd_comp.c
deleted file mode 100644 (file)
index 952b32f..0000000
+++ /dev/null
@@ -1,1203 +0,0 @@
-/* Because this code is derived from the 4.3BSD compress source:
- *
- * Copyright (c) 1985, 1986 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * James A. Woods, derived from original work by Spencer Thomas
- * and Joseph Orost.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * This version is for use with contiguous buffers on Linux-derived systems.
- *
- *  ==FILEVERSION 970607==
- *
- *  NOTE TO MAINTAINERS:
- *     If you modify this file at all, please set the number above to the
- *     date of the modification as YYMMDD (year month day).
- *     bsd_comp.c is shipped with a PPP distribution as well as with
- *     the kernel; if everyone increases the FILEVERSION number above,
- *     then scripts can do the right thing when deciding whether to
- *     install a new bsd_comp.c file. Don't change the format of that
- *     line otherwise, so the installation script can recognize it.
- *
- * From: bsd_comp.c,v 1.3 1994/12/08 01:59:58 paulus Exp
- */
-
-#ifndef MODULE
-#error This file must be compiled as a module.
-#endif
-
-#include <linux/version.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/types.h>
-#include <linux/fcntl.h>
-#include <linux/interrupt.h>
-#include <linux/ptrace.h>
-#include <linux/malloc.h>
-#include <linux/ioport.h>
-#include <linux/in.h>
-
-#undef VERSION
-/* a nice define to generate linux version numbers */
-#define VERSION(major,minor,patch) (((((major)<<8)+(minor))<<8)+(patch))
-
-#if LINUX_VERSION_CODE >= VERSION(2,1,4)
-#include <linux/vmalloc.h>
-#endif
-
-#include <linux/tty.h>
-#include <linux/errno.h>
-#include <linux/sched.h>       /* to get the struct task_struct */
-#include <linux/string.h>      /* used in new tty drivers */
-#include <linux/signal.h>      /* used in new tty drivers */
-
-#include <asm/system.h>
-#include <asm/bitops.h>
-#include <asm/byteorder.h>
-
-#include <linux/if.h>
-
-#include <linux/if_ether.h>
-#include <linux/netdevice.h>
-#include <linux/skbuff.h>
-#include <linux/inet.h>
-#include <linux/ioctl.h>
-
-#include <linux/ppp_defs.h>
-
-#undef   PACKETPTR
-#define  PACKETPTR 1
-#include <linux/ppp-comp.h>
-#undef   PACKETPTR
-
-/*
- * PPP "BSD compress" compression
- *  The differences between this compression and the classic BSD LZW
- *  source are obvious from the requirement that the classic code worked
- *  with files while this handles arbitrarily long streams that
- *  are broken into packets.  They are:
- *
- *     When the code size expands, a block of junk is not emitted by
- *         the compressor and not expected by the decompressor.
- *
- *     New codes are not necessarily assigned every time an old
- *         code is output by the compressor.  This is because a packet
- *         end forces a code to be emitted, but does not imply that a
- *         new sequence has been seen.
- *
- *     The compression ratio is checked at the first end of a packet
- *         after the appropriate gap.  Besides simplifying and speeding
- *         things up, this makes it more likely that the transmitter
- *         and receiver will agree when the dictionary is cleared when
- *         compression is not going well.
- */
-
-/*
- * Macros to extract protocol version and number of bits
- * from the third byte of the BSD Compress CCP configuration option.
- */
-
-#define BSD_VERSION(x) ((x) >> 5)
-#define BSD_NBITS(x)   ((x) & 0x1F)
-
-#define BSD_CURRENT_VERSION    1
-
-/*
- * A dictionary for doing BSD compress.
- */
-
-struct bsd_dict {
-    union {                            /* hash value */
-       unsigned long   fcode;
-       struct {
-#if defined(__LITTLE_ENDIAN)           /* Little endian order */
-           unsigned short      prefix; /* preceding code */
-           unsigned char       suffix; /* last character of new code */
-           unsigned char       pad;
-#elif defined(__BIG_ENDIAN)            /* Big endian order */
-           unsigned char       pad;
-           unsigned char       suffix; /* last character of new code */
-           unsigned short      prefix; /* preceding code */
-#else
-#error Endianness not defined...
-#endif
-       } hs;
-    } f;
-    unsigned short codem1;             /* output of hash table -1 */
-    unsigned short cptr;               /* map code to hash table entry */
-};
-
-struct bsd_db {
-    int            totlen;                     /* length of this structure */
-    unsigned int   hsize;              /* size of the hash table */
-    unsigned char  hshift;             /* used in hash function */
-    unsigned char  n_bits;             /* current bits/code */
-    unsigned char  maxbits;            /* maximum bits/code */
-    unsigned char  debug;              /* non-zero if debug desired */
-    unsigned char  unit;               /* ppp unit number */
-    unsigned short seqno;              /* sequence # of next packet */
-    unsigned int   mru;                        /* size of receive (decompress) bufr */
-    unsigned int   maxmaxcode;         /* largest valid code */
-    unsigned int   max_ent;            /* largest code in use */
-    unsigned int   in_count;           /* uncompressed bytes, aged */
-    unsigned int   bytes_out;          /* compressed bytes, aged */
-    unsigned int   ratio;              /* recent compression ratio */
-    unsigned int   checkpoint;         /* when to next check the ratio */
-    unsigned int   clear_count;                /* times dictionary cleared */
-    unsigned int   incomp_count;       /* incompressible packets */
-    unsigned int   incomp_bytes;       /* incompressible bytes */
-    unsigned int   uncomp_count;       /* uncompressed packets */
-    unsigned int   uncomp_bytes;       /* uncompressed bytes */
-    unsigned int   comp_count;         /* compressed packets */
-    unsigned int   comp_bytes;         /* compressed bytes */
-    unsigned short  *lens;             /* array of lengths of codes */
-    struct bsd_dict *dict;             /* dictionary */
-};
-
-#define BSD_OVHD       2               /* BSD compress overhead/packet */
-#define MIN_BSD_BITS   9
-#define BSD_INIT_BITS  MIN_BSD_BITS
-#define MAX_BSD_BITS   15
-
-static void    bsd_free (void *state);
-static void    *bsd_alloc(unsigned char *options, int opt_len, int decomp);
-static void    *bsd_comp_alloc (unsigned char *options, int opt_len);
-static void    *bsd_decomp_alloc (unsigned char *options, int opt_len);
-
-static int     bsd_init        (void *db, unsigned char *options,
-                                int opt_len, int unit, int debug, int decomp);
-static int     bsd_comp_init   (void *state, unsigned char *options,
-                                int opt_len, int unit, int opthdr, int debug);
-static int     bsd_decomp_init (void *state, unsigned char *options,
-                                int opt_len, int unit, int opthdr, int mru,
-                                int debug);
-
-static void    bsd_reset (void *state);
-static void    bsd_comp_stats (void *state, struct compstat *stats);
-
-static int     bsd_compress (void *state, unsigned char *rptr,
-                             unsigned char *obuf, int isize, int osize);
-static void    bsd_incomp (void *state, unsigned char *ibuf, int icnt);
-
-static int     bsd_decompress (void *state, unsigned char *ibuf, int isize,
-                               unsigned char *obuf, int osize);
-
-/* These are in ppp.c */
-extern int  ppp_register_compressor   (struct compressor *cp);
-extern void ppp_unregister_compressor (struct compressor *cp);
-
-/*
- * the next two codes should not be changed lightly, as they must not
- * lie within the contiguous general code space.
- */
-#define CLEAR  256                     /* table clear output code */
-#define FIRST  257                     /* first free entry */
-#define LAST   255
-
-#define MAXCODE(b)     ((1 << (b)) - 1)
-#define BADCODEM1      MAXCODE(MAX_BSD_BITS);
-
-#define BSD_HASH(prefix,suffix,hshift) ((((unsigned long)(suffix))<<(hshift)) \
-                                        ^ (unsigned long)(prefix))
-#define BSD_KEY(prefix,suffix)         ((((unsigned long)(suffix)) << 16) \
-                                        + (unsigned long)(prefix))
-
-#define CHECK_GAP      10000           /* Ratio check interval */
-
-#define RATIO_SCALE_LOG        8
-#define RATIO_SCALE    (1<<RATIO_SCALE_LOG)
-#define RATIO_MAX      (0x7fffffff>>RATIO_SCALE_LOG)
-
-/*
- * clear the dictionary
- */
-
-static void
-bsd_clear(struct bsd_db *db)
-{
-    db->clear_count++;
-    db->max_ent      = FIRST-1;
-    db->n_bits       = BSD_INIT_BITS;
-    db->bytes_out    = 0;
-    db->in_count     = 0;
-    db->ratio       = 0;
-    db->checkpoint   = CHECK_GAP;
-}
-
-/*
- * If the dictionary is full, then see if it is time to reset it.
- *
- * Compute the compression ratio using fixed-point arithmetic
- * with 8 fractional bits.
- *
- * Since we have an infinite stream instead of a single file,
- * watch only the local compression ratio.
- *
- * Since both peers must reset the dictionary at the same time even in
- * the absence of CLEAR codes (while packets are incompressible), they
- * must compute the same ratio.
- */
-
-static int bsd_check (struct bsd_db *db)       /* 1=output CLEAR */
-  {
-    unsigned int new_ratio;
-
-    if (db->in_count >= db->checkpoint)
-      {
-       /* age the ratio by limiting the size of the counts */
-       if (db->in_count >= RATIO_MAX || db->bytes_out >= RATIO_MAX)
-         {
-           db->in_count  -= (db->in_count  >> 2);
-           db->bytes_out -= (db->bytes_out >> 2);
-         }
-       
-       db->checkpoint = db->in_count + CHECK_GAP;
-       
-       if (db->max_ent >= db->maxmaxcode)
-         {
-           /* Reset the dictionary only if the ratio is worse,
-            * or if it looks as if it has been poisoned
-            * by incompressible data.
-            *
-            * This does not overflow, because
-            *  db->in_count <= RATIO_MAX.
-            */
-
-           new_ratio = db->in_count << RATIO_SCALE_LOG;
-           if (db->bytes_out != 0)
-             {
-               new_ratio /= db->bytes_out;
-             }
-           
-           if (new_ratio < db->ratio || new_ratio < 1 * RATIO_SCALE)
-             {
-               bsd_clear (db);
-               return 1;
-             }
-           db->ratio = new_ratio;
-         }
-      }
-    return 0;
-  }
-
-/*
- * Return statistics.
- */
-
-static void bsd_comp_stats (void *state, struct compstat *stats)
-  {
-    struct bsd_db *db = (struct bsd_db *) state;
-    
-    stats->unc_bytes    = db->uncomp_bytes;
-    stats->unc_packets  = db->uncomp_count;
-    stats->comp_bytes   = db->comp_bytes;
-    stats->comp_packets = db->comp_count;
-    stats->inc_bytes    = db->incomp_bytes;
-    stats->inc_packets  = db->incomp_count;
-    stats->in_count     = db->in_count;
-    stats->bytes_out    = db->bytes_out;
-  }
-
-/*
- * Reset state, as on a CCP ResetReq.
- */
-
-static void bsd_reset (void *state)
-  {
-    struct bsd_db *db = (struct bsd_db *) state;
-
-    bsd_clear(db);
-
-    db->seqno       = 0;
-    db->clear_count = 0;
-  }
-
-/*
- * Release the compression structure
- */
-
-static void bsd_free (void *state)
-  {
-    struct bsd_db *db = (struct bsd_db *) state;
-    
-    if (db)
-      {
-/*
- * Release the dictionary
- */
-       if (db->dict)
-         {
-           vfree (db->dict);
-           db->dict = NULL;
-         }
-/*
- * Release the string buffer
- */
-       if (db->lens)
-         {
-           vfree (db->lens);
-           db->lens = NULL;
-         }
-/*
- * Finally release the structure itself.
- */
-       kfree (db);
-       MOD_DEC_USE_COUNT;
-      }
-  }
-
-/*
- * Allocate space for a (de) compressor.
- */
-
-static void *bsd_alloc (unsigned char *options, int opt_len, int decomp)
-  {
-    int bits;
-    unsigned int hsize, hshift, maxmaxcode;
-    struct bsd_db *db;
-
-    if (opt_len != 3 || options[0] != CI_BSD_COMPRESS || options[1] != 3
-       || BSD_VERSION(options[2]) != BSD_CURRENT_VERSION)
-      {
-       return NULL;
-      }
-
-    bits = BSD_NBITS(options[2]);
-
-    switch (bits)
-      {
-    case 9:                    /* needs 82152 for both directions */
-    case 10:                   /* needs 84144 */
-    case 11:                   /* needs 88240 */
-    case 12:                   /* needs 96432 */
-       hsize = 5003;
-       hshift = 4;
-       break;
-    case 13:                   /* needs 176784 */
-       hsize = 9001;
-       hshift = 5;
-       break;
-    case 14:                   /* needs 353744 */
-       hsize = 18013;
-       hshift = 6;
-       break;
-    case 15:                   /* needs 691440 */
-       hsize = 35023;
-       hshift = 7;
-       break;
-    case 16:                   /* needs 1366160--far too much, */
-       /* hsize = 69001; */    /* and 69001 is too big for cptr */
-       /* hshift = 8; */       /* in struct bsd_db */
-       /* break; */
-    default:
-       return NULL;
-      }
-/*
- * Allocate the main control structure for this instance.
- */
-    maxmaxcode = MAXCODE(bits);
-    db         = (struct bsd_db *) kmalloc (sizeof (struct bsd_db),
-                                           GFP_KERNEL);
-    if (!db)
-      {
-       return NULL;
-      }
-
-    memset (db, 0, sizeof(struct bsd_db));
-/*
- * Allocate space for the dictionary. This may be more than one page in
- * length.
- */
-    db->dict = (struct bsd_dict *) vmalloc (hsize *
-                                           sizeof (struct bsd_dict));
-    if (!db->dict)
-      {
-       bsd_free (db);
-       return NULL;
-      }
-
-    MOD_INC_USE_COUNT;
-/*
- * If this is the compression buffer then there is no length data.
- */
-    if (!decomp)
-      {
-       db->lens = NULL;
-      }
-/*
- * For decompression, the length information is needed as well.
- */
-    else
-      {
-        db->lens = (unsigned short *) vmalloc ((maxmaxcode + 1) *
-                                              sizeof (db->lens[0]));
-       if (!db->lens)
-         {
-           bsd_free (db);
-           return (NULL);
-         }
-      }
-/*
- * Initialize the data information for the compression code
- */
-    db->totlen     = sizeof (struct bsd_db)   +
-                   (sizeof (struct bsd_dict) * hsize);
-
-    db->hsize      = hsize;
-    db->hshift     = hshift;
-    db->maxmaxcode = maxmaxcode;
-    db->maxbits    = bits;
-
-    return (void *) db;
-  }
-
-static void *bsd_comp_alloc (unsigned char *options, int opt_len)
-  {
-    return bsd_alloc (options, opt_len, 0);
-  }
-
-static void *bsd_decomp_alloc (unsigned char *options, int opt_len)
-  {
-    return bsd_alloc (options, opt_len, 1);
-  }
-
-/*
- * Initialize the database.
- */
-
-static int bsd_init (void *state, unsigned char *options,
-                    int opt_len, int unit, int debug, int decomp)
-  {
-    struct bsd_db *db = state;
-    int indx;
-    
-    if ((opt_len != 3) || (options[0] != CI_BSD_COMPRESS) || (options[1] != 3)
-       || (BSD_VERSION(options[2]) != BSD_CURRENT_VERSION)
-       || (BSD_NBITS(options[2]) != db->maxbits)
-       || (decomp && db->lens == NULL))
-      {
-       return 0;
-      }
-
-    if (decomp)
-      {
-       indx = LAST;
-       do
-         {
-           db->lens[indx] = 1;
-         }
-       while (indx-- > 0);
-      }
-
-    indx = db->hsize;
-    while (indx-- != 0)
-      {
-       db->dict[indx].codem1 = BADCODEM1;
-       db->dict[indx].cptr   = 0;
-      }
-
-    db->unit = unit;
-    db->mru  = 0;
-#ifndef DEBUG
-    if (debug)
-#endif
-      db->debug = 1;
-    
-    bsd_reset(db);
-    
-    return 1;
-  }
-
-static int bsd_comp_init (void *state, unsigned char *options,
-                         int opt_len, int unit, int opthdr, int debug)
-  {
-    return bsd_init (state, options, opt_len, unit, debug, 0);
-  }
-
-static int bsd_decomp_init (void *state, unsigned char *options,
-                           int opt_len, int unit, int opthdr, int mru,
-                           int debug)
-  {
-    return bsd_init (state, options, opt_len, unit, debug, 1);
-  }
-
-/*
- * Obtain pointers to the various structures in the compression tables
- */
-
-#define dict_ptrx(p,idx) &(p->dict[idx])
-#define lens_ptrx(p,idx) &(p->lens[idx])
-
-#ifdef DEBUG
-static unsigned short *lens_ptr(struct bsd_db *db, int idx)
-  {
-    if ((unsigned int) idx > (unsigned int) db->maxmaxcode)
-      {
-       printk ("<9>ppp: lens_ptr(%d) > max\n", idx);
-       idx = 0;
-      }
-    return lens_ptrx (db, idx);
-  }
-
-static struct bsd_dict *dict_ptr(struct bsd_db *db, int idx)
-  {
-    if ((unsigned int) idx >= (unsigned int) db->hsize)
-      {
-       printk ("<9>ppp: dict_ptr(%d) > max\n", idx);
-       idx = 0;
-      }
-    return dict_ptrx (db, idx);
-  }
-
-#else
-#define lens_ptr(db,idx) lens_ptrx(db,idx)
-#define dict_ptr(db,idx) dict_ptrx(db,idx)
-#endif
-
-/*
- * compress a packet
- *
- *     The result of this function is the size of the compressed
- *     packet. A zero is returned if the packet was not compressed
- *     for some reason, such as the size being larger than uncompressed.
- *
- *     One change from the BSD compress command is that when the
- *     code size expands, we do not output a bunch of padding.
- */
-
-static int bsd_compress (void *state, unsigned char *rptr, unsigned char *obuf,
-                        int isize, int osize)
-  {
-    struct bsd_db *db;
-    int hshift;
-    unsigned int max_ent;
-    unsigned int n_bits;
-    unsigned int bitno;
-    unsigned long accm;
-    int ent;
-    unsigned long fcode;
-    struct bsd_dict *dictp;
-    unsigned char c;
-    int hval;
-    int disp;
-    int ilen;
-    int mxcode;
-    unsigned char *wptr;
-    int olen;
-
-#define PUTBYTE(v)                     \
-  {                                    \
-    ++olen;                            \
-    if (wptr)                          \
-      {                                        \
-       *wptr++ = (unsigned char) (v);  \
-       if (olen >= osize)              \
-         {                             \
-           wptr = NULL;                \
-         }                             \
-      }                                        \
-  }
-
-#define OUTPUT(ent)                    \
-  {                                    \
-    bitno -= n_bits;                   \
-    accm |= ((ent) << bitno);          \
-    do                                 \
-      {                                        \
-       PUTBYTE(accm >> 24);            \
-       accm <<= 8;                     \
-       bitno += 8;                     \
-      }                                        \
-    while (bitno <= 24);               \
-  }
-
-  /*
-   * If the protocol is not in the range we're interested in,
-   * just return without compressing the packet.  If it is,
-   * the protocol becomes the first byte to compress.
-   */
-
-    ent = PPP_PROTOCOL(rptr);
-    if (ent < 0x21 || ent > 0xf9)
-      {
-       return 0;
-      }
-
-    db      = (struct bsd_db *) state;
-    hshift  = db->hshift;
-    max_ent = db->max_ent;
-    n_bits  = db->n_bits;
-    bitno   = 32;
-    accm    = 0;
-    mxcode  = MAXCODE (n_bits);
-
-    /* Initialize the output pointers */
-    wptr  = obuf;
-    olen  = PPP_HDRLEN + BSD_OVHD;
-
-    if (osize > isize)
-      {
-       osize = isize;
-      }
-
-    /* This is the PPP header information */
-    if (wptr)
-      {
-       *wptr++ = PPP_ADDRESS(rptr);
-       *wptr++ = PPP_CONTROL(rptr);
-       *wptr++ = 0;
-       *wptr++ = PPP_COMP;
-       *wptr++ = db->seqno >> 8;
-       *wptr++ = db->seqno;
-      }
-
-    /* Skip the input header */
-    rptr  += PPP_HDRLEN;
-    isize -= PPP_HDRLEN;
-    ilen   = ++isize;  /* Low byte of protocol is counted as input */
-
-    while (--ilen > 0)
-      {
-       c     = *rptr++;
-       fcode = BSD_KEY  (ent, c);
-       hval  = BSD_HASH (ent, c, hshift);
-       dictp = dict_ptr (db, hval);
-       
-       /* Validate and then check the entry. */
-       if (dictp->codem1 >= max_ent)
-         {
-           goto nomatch;
-         }
-
-       if (dictp->f.fcode == fcode)
-         {
-           ent = dictp->codem1 + 1;
-           continue;   /* found (prefix,suffix) */
-         }
-       
-       /* continue probing until a match or invalid entry */
-       disp = (hval == 0) ? 1 : hval;
-
-       do
-         {
-           hval += disp;
-           if (hval >= db->hsize)
-             {
-               hval -= db->hsize;
-             }
-           dictp = dict_ptr (db, hval);
-           if (dictp->codem1 >= max_ent)
-             {
-               goto nomatch;
-             }
-         }
-       while (dictp->f.fcode != fcode);
-
-       ent = dictp->codem1 + 1;        /* finally found (prefix,suffix) */
-       continue;
-       
-nomatch:
-       OUTPUT(ent);            /* output the prefix */
-       
-       /* code -> hashtable */
-       if (max_ent < db->maxmaxcode)
-         {
-           struct bsd_dict *dictp2;
-           struct bsd_dict *dictp3;
-           int    indx;
-
-           /* expand code size if needed */
-           if (max_ent >= mxcode)
-             {
-               db->n_bits = ++n_bits;
-               mxcode     = MAXCODE (n_bits);
-             }
-           
-           /* Invalidate old hash table entry using
-            * this code, and then take it over.
-            */
-
-           dictp2 = dict_ptr (db, max_ent + 1);
-           indx   = dictp2->cptr;
-           dictp3 = dict_ptr (db, indx);
-
-           if (dictp3->codem1 == max_ent)
-             {
-               dictp3->codem1 = BADCODEM1;
-             }
-
-           dictp2->cptr   = hval;
-           dictp->codem1  = max_ent;
-           dictp->f.fcode = fcode;
-           db->max_ent    = ++max_ent;
-
-           if (db->lens)
-             {
-               unsigned short *len1 = lens_ptr (db, max_ent);
-               unsigned short *len2 = lens_ptr (db, ent);
-               *len1 = *len2 + 1;
-             }
-         }
-       ent = c;
-      }
-    
-    OUTPUT(ent);               /* output the last code */
-
-    db->bytes_out    += olen - PPP_HDRLEN - BSD_OVHD;
-    db->uncomp_bytes += isize;
-    db->in_count     += isize;
-    ++db->uncomp_count;
-    ++db->seqno;
-
-    if (bitno < 32)
-      {
-       ++db->bytes_out; /* must be set before calling bsd_check */
-      }
-
-    /*
-     * Generate the clear command if needed
-     */
-
-    if (bsd_check(db))
-      {
-       OUTPUT (CLEAR);
-      }
-    
-    /*
-     * Pad dribble bits of last code with ones.
-     * Do not emit a completely useless byte of ones.
-     */
-
-    if (bitno != 32)
-      {
-       PUTBYTE((accm | (0xff << (bitno-8))) >> 24);
-      }
-    
-    /*
-     * Increase code size if we would have without the packet
-     * boundary because the decompressor will do so.
-     */
-
-    if (max_ent >= mxcode && max_ent < db->maxmaxcode)
-      {
-       db->n_bits++;
-      }
-
-    /* If output length is too large then this is an incomplete frame. */
-    if (wptr == NULL)
-      {
-       ++db->incomp_count;
-       db->incomp_bytes += isize;
-       olen              = 0;
-      }
-    else /* Count the number of compressed frames */
-      {
-       ++db->comp_count;
-       db->comp_bytes += olen;
-      }
-
-    /* Return the resulting output length */
-    return olen;
-#undef OUTPUT
-#undef PUTBYTE
-  }
-
-/*
- * Update the "BSD Compress" dictionary on the receiver for
- * incompressible data by pretending to compress the incoming data.
- */
-
-static void bsd_incomp (void *state, unsigned char *ibuf, int icnt)
-  {
-    (void) bsd_compress (state, ibuf, (char *) 0, icnt, 0);
-  }
-
-/*
- * Decompress "BSD Compress".
- *
- * Because of patent problems, we return DECOMP_ERROR for errors
- * found by inspecting the input data and for system problems, but
- * DECOMP_FATALERROR for any errors which could possibly be said to
- * be being detected "after" decompression.  For DECOMP_ERROR,
- * we can issue a CCP reset-request; for DECOMP_FATALERROR, we may be
- * infringing a patent of Motorola's if we do, so we take CCP down
- * instead.
- *
- * Given that the frame has the correct sequence number and a good FCS,
- * errors such as invalid codes in the input most likely indicate a
- * bug, so we return DECOMP_FATALERROR for them in order to turn off
- * compression, even though they are detected by inspecting the input.
- */
-
-static int bsd_decompress (void *state, unsigned char *ibuf, int isize,
-                          unsigned char *obuf, int osize)
-  {
-    struct bsd_db *db;
-    unsigned int max_ent;
-    unsigned long accm;
-    unsigned int bitno;                /* 1st valid bit in accm */
-    unsigned int n_bits;
-    unsigned int tgtbitno;     /* bitno when we have a code */
-    struct bsd_dict *dictp;
-    int explen;
-    int seq;
-    unsigned int incode;
-    unsigned int oldcode;
-    unsigned int finchar;
-    unsigned char *p;
-    unsigned char *wptr;
-    int adrs;
-    int ctrl;
-    int ilen;
-    int codelen;
-    int extra;
-
-    db       = (struct bsd_db *) state;
-    max_ent  = db->max_ent;
-    accm     = 0;
-    bitno    = 32;             /* 1st valid bit in accm */
-    n_bits   = db->n_bits;
-    tgtbitno = 32 - n_bits;    /* bitno when we have a code */
-    
-    /*
-     * Save the address/control from the PPP header
-     * and then get the sequence number.
-     */
-
-    adrs  = PPP_ADDRESS (ibuf);
-    ctrl  = PPP_CONTROL (ibuf);
-
-    seq   = (ibuf[4] << 8) + ibuf[5];
-
-    ibuf += (PPP_HDRLEN + 2);
-    ilen  = isize - (PPP_HDRLEN + 2);
-    
-    /*
-     * Check the sequence number and give up if it differs from
-     * the value we're expecting.
-     */
-
-    if (seq != db->seqno)
-      {
-       if (db->debug)
-         {
-           printk("bsd_decomp%d: bad sequence # %d, expected %d\n",
-                  db->unit, seq, db->seqno - 1);
-         }
-       return DECOMP_ERROR;
-      }
-
-    ++db->seqno;
-    db->bytes_out += ilen;
-
-    /*
-     * Fill in the ppp header, but not the last byte of the protocol
-     * (that comes from the decompressed data).
-     */
-
-    wptr    = obuf;
-    *wptr++ = adrs;
-    *wptr++ = ctrl;
-    *wptr++ = 0;
-    
-    oldcode = CLEAR;
-    explen  = 3;
-
-    /*
-     * Keep the checkpoint correctly so that incompressible packets
-     * clear the dictionary at the proper times.
-     */
-
-    for (;;)
-      {
-       if (ilen-- <= 0)
-         {
-           db->in_count += (explen - 3); /* don't count the header */
-           break;
-         }
-
-       /*
-        * Accumulate bytes until we have a complete code.
-        * Then get the next code, relying on the 32-bit,
-        * unsigned accm to mask the result.
-        */
-
-       bitno -= 8;
-       accm  |= *ibuf++ << bitno;
-       if (tgtbitno < bitno)
-         {
-           continue;
-         }
-
-       incode = accm >> tgtbitno;
-       accm <<= n_bits;
-       bitno += n_bits;
-
-       /*
-        * The dictionary must only be cleared at the end of a packet.
-        */
-       
-       if (incode == CLEAR)
-         {
-           if (ilen > 0)
-             {
-               if (db->debug)
-                 {
-                   printk("bsd_decomp%d: bad CLEAR\n", db->unit);
-                 }
-               return DECOMP_FATALERROR;       /* probably a bug */
-             }
-           
-           bsd_clear(db);
-           break;
-         }
-
-       if ((incode > max_ent + 2) || (incode > db->maxmaxcode)
-           || (incode > max_ent && oldcode == CLEAR))
-         {
-           if (db->debug)
-             {
-               printk("bsd_decomp%d: bad code 0x%x oldcode=0x%x ",
-                      db->unit, incode, oldcode);
-               printk("max_ent=0x%x explen=%d seqno=%d\n",
-                      max_ent, explen, db->seqno);
-             }
-           return DECOMP_FATALERROR;   /* probably a bug */
-         }
-       
-       /* Special case for KwKwK string. */
-       if (incode > max_ent)
-         {
-           finchar = oldcode;
-           extra   = 1;
-         }
-       else
-         {
-           finchar = incode;
-           extra   = 0;
-         }
-       
-       codelen = *(lens_ptr (db, finchar));
-       explen += codelen + extra;
-       if (explen > osize)
-         {
-           if (db->debug)
-             {
-               printk("bsd_decomp%d: ran out of mru\n", db->unit);
-#ifdef DEBUG
-               printk("  len=%d, finchar=0x%x, codelen=%d, explen=%d\n",
-                      ilen, finchar, codelen, explen);
-#endif
-             }
-           return DECOMP_FATALERROR;
-         }
-       
-       /*
-        * Decode this code and install it in the decompressed buffer.
-        */
-
-       wptr += codelen;
-       p     = wptr;
-       while (finchar > LAST)
-         {
-           struct bsd_dict *dictp2 = dict_ptr (db, finchar);
-           
-           dictp = dict_ptr (db, dictp2->cptr);
-#ifdef DEBUG
-           if (--codelen <= 0 || dictp->codem1 != finchar-1)
-             {
-               if (codelen <= 0)
-                 {
-                   printk("bsd_decomp%d: fell off end of chain ", db->unit);
-                   printk("0x%x at 0x%x by 0x%x, max_ent=0x%x\n",
-                          incode, finchar, dictp2->cptr, max_ent);
-                 }
-               else
-                 {
-                   if (dictp->codem1 != finchar-1)
-                     {
-                       printk("bsd_decomp%d: bad code chain 0x%x "
-                              "finchar=0x%x ",
-                              db->unit, incode, finchar);
-
-                       printk("oldcode=0x%x cptr=0x%x codem1=0x%x\n",
-                              oldcode, dictp2->cptr, dictp->codem1);
-                     }
-                 }
-               return DECOMP_FATALERROR;
-             }
-#endif
-           *--p    = dictp->f.hs.suffix;
-           finchar = dictp->f.hs.prefix;
-         }
-       *--p = finchar;
-       
-#ifdef DEBUG
-       if (--codelen != 0)
-         {
-           printk("bsd_decomp%d: short by %d after code 0x%x, max_ent=0x%x\n",
-                  db->unit, codelen, incode, max_ent);
-         }
-#endif
-       
-       if (extra)              /* the KwKwK case again */
-         {
-           *wptr++ = finchar;
-         }
-       
-       /*
-        * If not first code in a packet, and
-        * if not out of code space, then allocate a new code.
-        *
-        * Keep the hash table correct so it can be used
-        * with uncompressed packets.
-        */
-
-       if (oldcode != CLEAR && max_ent < db->maxmaxcode)
-         {
-           struct bsd_dict *dictp2, *dictp3;
-           unsigned short  *lens1,  *lens2;
-           unsigned long fcode;
-           int hval, disp, indx;
-           
-           fcode = BSD_KEY(oldcode,finchar);
-           hval  = BSD_HASH(oldcode,finchar,db->hshift);
-           dictp = dict_ptr (db, hval);
-           
-           /* look for a free hash table entry */
-           if (dictp->codem1 < max_ent)
-             {
-               disp = (hval == 0) ? 1 : hval;
-               do
-                 {
-                   hval += disp;
-                   if (hval >= db->hsize)
-                     {
-                       hval -= db->hsize;
-                     }
-                   dictp = dict_ptr (db, hval);
-                 }
-               while (dictp->codem1 < max_ent);
-             }
-           
-           /*
-            * Invalidate previous hash table entry
-            * assigned this code, and then take it over
-            */
-
-           dictp2 = dict_ptr (db, max_ent + 1);
-           indx   = dictp2->cptr;
-           dictp3 = dict_ptr (db, indx);
-
-           if (dictp3->codem1 == max_ent)
-             {
-               dictp3->codem1 = BADCODEM1;
-             }
-
-           dictp2->cptr   = hval;
-           dictp->codem1  = max_ent;
-           dictp->f.fcode = fcode;
-           db->max_ent    = ++max_ent;
-
-           /* Update the length of this string. */
-           lens1  = lens_ptr (db, max_ent);
-           lens2  = lens_ptr (db, oldcode);
-           *lens1 = *lens2 + 1;
-           
-           /* Expand code size if needed. */
-           if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode)
-             {
-               db->n_bits = ++n_bits;
-               tgtbitno   = 32-n_bits;
-             }
-         }
-       oldcode = incode;
-      }
-
-    ++db->comp_count;
-    ++db->uncomp_count;
-    db->comp_bytes   += isize - BSD_OVHD - PPP_HDRLEN;
-    db->uncomp_bytes += explen;
-
-    if (bsd_check(db))
-      {
-       if (db->debug)
-         {
-           printk("bsd_decomp%d: peer should have cleared dictionary on %d\n",
-                  db->unit, db->seqno - 1);
-         }
-      }
-    return explen;
-  }
-     
-/*************************************************************
- * Table of addresses for the BSD compression module
- *************************************************************/
-
-static struct compressor ppp_bsd_compress = {
-    CI_BSD_COMPRESS,           /* compress_proto */
-    bsd_comp_alloc,            /* comp_alloc */
-    bsd_free,                  /* comp_free */
-    bsd_comp_init,             /* comp_init */
-    bsd_reset,                 /* comp_reset */
-    bsd_compress,              /* compress */
-    bsd_comp_stats,            /* comp_stat */
-    bsd_decomp_alloc,          /* decomp_alloc */
-    bsd_free,                  /* decomp_free */
-    bsd_decomp_init,           /* decomp_init */
-    bsd_reset,                 /* decomp_reset */
-    bsd_decompress,            /* decompress */
-    bsd_incomp,                        /* incomp */
-    bsd_comp_stats             /* decomp_stat */
-};
-
-/*************************************************************
- * Module support routines
- *************************************************************/
-
-int
-init_module(void)
-{
-       int answer = ppp_register_compressor (&ppp_bsd_compress);
-       if (answer == 0)
-               printk (KERN_INFO "PPP BSD Compression module registered\n");
-       return answer;
-}
-
-void
-cleanup_module(void)
-{
-       ppp_unregister_compressor (&ppp_bsd_compress);
-}
diff --git a/linux/kinstall.sh b/linux/kinstall.sh
deleted file mode 100755 (executable)
index 0391a23..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-#!/bin/sh
-#
-#  kinstall.sh -- install updated kernel PPP driver in Linux kernel source
-#     Michael Callahan callahan@maths.ox.ac.uk 17 May 1995
-#
-#  This script is complicated because we want to avoid installing a driver
-#  in a kernel if it won't work in that kernel.  This means two things:
-#    1) we check the version of the kernel and refuse to install if the
-#       kernel is too old;
-#    2) we check that the files already in the kernel aren't more recent
-#       than the one we're about to install.
-#  If either 1) or 2) occurs then we exit with an error message and don't
-#  touch anything.
-#
-#  In addition, we have to edit the Makefile in the drivers/net
-#  directory to add support for the ppp-comp compression option.
-
-LINUXSRC=/usr/src/linux
-
-if [ $# -gt 1 ]; then
-   echo usage: $0 [linux-source-directory]
-   exit 1
-fi
-
-if [ $# -eq 1 ]; then
-   LINUXSRC=$1
-fi
-
-#
-#  Make sure we can find the kernel source
-
-LINUXMK=$LINUXSRC/Makefile
-
-if [ ! -r $LINUXMK -o ! -d $LINUXSRC/drivers ]; then
-  echo There appears to be no kernel source distribution in $LINUXSRC.
-  echo Give the top-level kernel source directory as the argument to
-  echo this script.
-  echo usage: $0 [linux-source-directory]
-  exit 1
-fi
-
-#
-#  Check that the kernel source Makefile includes the 
-#    VERSION, PATCHLEVEL, SUBLEVEL version-numbering scheme
-#    introduced in 1.0.1
-if [ `egrep '^VERSION|^PATCHLEVEL|^SUBLEVEL' $LINUXMK | wc -l` -ne 3 ]; then
-  echo You appear to have a very old kernel. You must upgrade.
-  echo It is recommended that you upgrade to the most recent 2.0.x kernel.
-  exit 1
-fi
-
-#
-#  Set the VERSION, PATCHLEVEL, SUBLEVEL variables
-VERSION=`egrep '^VERSION' $LINUXMK | sed 's/[^0-9]//g'`
-PATCHLEVEL=`egrep '^PATCHLEVEL' $LINUXMK | sed 's/[^0-9]//g'`
-SUBLEVEL=`egrep '^SUBLEVEL' $LINUXMK | sed 's/[^0-9]//g'`
-
-KERNEL=$VERSION.$PATCHLEVEL.$SUBLEVEL
-
-#
-#  Pass judgement on the kernel version
-if [ $VERSION -lt 2 ]; then
-    echo You appear to be running $KERNEL. There is no support for
-    echo kernels predating 2.0.0.  It is recommended that you upgrade
-    echo to the most recent 2.0.x kernel.
-    exit 1
-fi
-
-#
-# convenience function to exit if the last command failed
-
-bombiffailed () {
-  STATUS=$?
-  if [ $STATUS -ne 0 ]; then
-    echo "=== kinstall.sh exiting with failure status $STATUS"
-    exit $STATUS
-  fi
-}
-
-#
-# convenience function to compare two files marked with ==FILEVERSION
-# version numbers; returns success if $1 is not older than $2
-
-newer () {
-  file1=$1
-  file2=$2
-  pat='==FILEVERSION[ \t]+[0-9]+[ \t]*=='
-
-  # Find the revision in the kernel
-  f1rev=""
-  if [ -r $file1 ]; then
-    f1rev=`egrep "$pat" $file1 | head -1 | sed 's/[^0-9]//g'`
-  fi
-
-  # Find the revision of the local file
-  f2rev=""
-  if [ -r $file2 ]; then
-    f2rev=`egrep "$pat" $file2 | head -1 | sed 's/[^0-9]//g'`
-  fi
-
-  # Make the strings the same length to avoid comparison problems
-  f1rev=`echo "0000000000"$f1rev | tail -c 10`
-  f2rev=`echo "0000000000"$f2rev | tail -c 10`
-
-  # Test the order of the two revisions
-  if [ $f1rev -ge $f2rev ]; then
-    true ; return
-  fi
-
-  false ; return
-}
-
-#
-#  Install the files.
-
-installfile () {
-  BASE=`basename $1`
-  if [ ! -e $BASE ]; then
-    if [ -e ../include/linux/$BASE ]; then
-      BASE=../include/linux/$BASE
-    else
-      echo Could not find source file $BASE !
-      false ; return
-    fi
-  fi
-  if newer $1 $BASE; then
-    echo $1 is not older than $BASE, skipping
-    return 0
-  fi
-  BACKUP=`echo $1 | sed 's/.c$/.old.c/;s/.h$/.old.h/'`
-  if [ -f $1 -a $BACKUP != $1 ]; then
-    echo Saving old $1 as `basename $BACKUP`
-    mv $1 $BACKUP
-    bombiffailed
-  fi
-  echo Installing new $1
-  cp $BASE $1
-  bombiffailed
-  touch $1
-  bombiffailed
-}
-
-#
-# Check for the root user
-test_root() {
-  my_uid=`id -u`
-  my_name=`id -u -n`
-  if [ $my_uid -ne 0 ]; then
-    echo
-    echo "********************************************************************"
-    echo "Hello, $my_name. Since you are not running as the root user, it"
-    echo "is possible that this script will fail to install the needed files."
-    echo "If this happens then please use the root account and re-execute the"
-    echo "'make kernel' command.  (This script is paused for 10 seconds.)"
-    echo "********************************************************************"
-    echo
-    sleep 10s
-  fi
-}
-
-test_root
-
-echo
-echo "Notice to the user:"
-echo
-echo "It is perfectly legal for this script to run without making any changes"
-echo "to your system. This means that the system currently contains the"
-echo "necessary changes to support this package. Please do not attempt to"
-echo "force this script to replace any file nor make any patch. If you do so"
-echo "then it is probable that you are actually putting older, buggier, code"
-echo "over the newer, fixed, code. Thank you."
-echo
-echo Installing into kernel version $KERNEL in $LINUXSRC
-echo
-
-if [ -f $LINUXSRC/drivers/net/ppp.h ]; then
-  echo Moving old $LINUXSRC/drivers/net/ppp.h file out of the way
-  mv $LINUXSRC/drivers/net/ppp.h $LINUXSRC/drivers/net/ppp.old.h
-  bombiffailed
-fi
-
-for FILE in $LINUXSRC/drivers/net/bsd_comp.c \
-           $LINUXSRC/drivers/net/ppp_deflate.c \
-           $LINUXSRC/drivers/net/zlib.c \
-           $LINUXSRC/drivers/net/zlib.h \
-            $LINUXSRC/include/linux/if_ppp.h \
-            $LINUXSRC/include/linux/if_pppvar.h \
-            $LINUXSRC/include/linux/ppp-comp.h \
-            $LINUXSRC/include/linux/ppp_defs.h
-  do
-  installfile $FILE no
-done
-
-installfile $LINUXSRC/drivers/net/ppp.c yes
-
-echo -n 'Adding BSD compression module to drivers makefile...'
-NETMK=$LINUXSRC/drivers/net/Makefile
-fgrep bsd_comp.o $NETMK >/dev/null
-if [ ! "$?" = "0" ]; then
-   if [ -f $NETMK.orig ]; then
-      mv $NETMK.orig $NETMK
-   fi
-   sed 's/ppp.o$/ppp.o bsd_comp.o/g' <$NETMK >$NETMK.temp
-   bombiffailed
-   echo -n '.'
-   mv $NETMK $NETMK.orig
-   bombiffailed
-   echo -n '.'
-   mv $NETMK.temp $NETMK
-   bombiffailed
-else
-   echo -n '(already there--skipping)'
-fi
-echo
-echo -n 'Adding Deflate compression module to drivers makefile...'
-NETMK=$LINUXSRC/drivers/net/Makefile
-fgrep ppp_deflate.o $NETMK >/dev/null
-if [ ! "$?" = "0" ]; then
-   echo -n '.'
-   sed 's/bsd_comp.o$/bsd_comp.o ppp_deflate.o/g' <$NETMK >$NETMK.temp
-   bombiffailed
-   echo -n '.'
-   mv $NETMK $NETMK.orig
-   bombiffailed
-   echo -n '.'
-   mv $NETMK.temp $NETMK
-   bombiffailed
-else
-   echo -n '(already there--skipping)'
-fi
-echo
-
-# #
-# # install header stub files in /usr/include/net
-
-# for FILE in if_ppp.h \
-#             if_pppvar.h \
-#             ppp-comp.h \
-#          if.h \
-#             ppp_defs.h
-#   do
-#   if [ ! -f /usr/include/net/$FILE ]; then
-#     echo Installing stub include file in /usr/include/net/$FILE
-#     echo "#include <linux/$FILE>" > /usr/include/net/$FILE
-#     bombiffailed
-#     chown 0:0 /usr/include/net/$FILE
-#     bombiffailed
-#     chmod 444 /usr/include/net/$FILE
-#     bombiffailed
-#     touch /usr/include/net/$FILE
-#     bombiffailed
-#   fi
-# done
-
-echo "Kernel driver files installation done."
-
-exit 0
index 57e2929373695159be2baa1622f1675b75081fbf..040d80adbeab088477df6239746979e7b937e622 100644 (file)
@@ -68,7 +68,7 @@
 #define MS_CHAP2_FLAGS         48
 
 #ifdef MPPE
-#include <net/ppp-comp.h>      /* MPPE_MAX_KEY_LEN */
+#include "mppe.h"      /* MPPE_MAX_KEY_LEN */
 extern u_char mppe_send_key[MPPE_MAX_KEY_LEN];
 extern u_char mppe_recv_key[MPPE_MAX_KEY_LEN];
 extern int mppe_keys_set;
diff --git a/pppd/mppe.h b/pppd/mppe.h
new file mode 100644 (file)
index 0000000..5eb3b37
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * mppe.h - Definitions for MPPE
+ *
+ * Copyright (c) 2008 Paul Mackerras. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The name(s) of the authors of this software must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission.
+ *
+ * 4. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by Paul Mackerras
+ *     <paulus@samba.org>".
+ *
+ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define MPPE_PAD               4       /* MPPE growth per frame */
+#define MPPE_MAX_KEY_LEN       16      /* largest key length (128-bit) */
+
+/* option bits for ccp_options.mppe */
+#define MPPE_OPT_40            0x01    /* 40 bit */
+#define MPPE_OPT_128           0x02    /* 128 bit */
+#define MPPE_OPT_STATEFUL      0x04    /* stateful mode */
+/* unsupported opts */
+#define MPPE_OPT_56            0x08    /* 56 bit */
+#define MPPE_OPT_MPPC          0x10    /* MPPC compression */
+#define MPPE_OPT_D             0x20    /* Unknown */
+#define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D)
+#define MPPE_OPT_UNKNOWN       0x40    /* Bits !defined in RFC 3078 were set */
+
+/*
+ * This is not nice ... the alternative is a bitfield struct though.
+ * And unfortunately, we cannot share the same bits for the option
+ * names above since C and H are the same bit.  We could do a u_int32
+ * but then we have to do a htonl() all the time and/or we still need
+ * to know which octet is which.
+ */
+#define MPPE_C_BIT             0x01    /* MPPC */
+#define MPPE_D_BIT             0x10    /* Obsolete, usage unknown */
+#define MPPE_L_BIT             0x20    /* 40-bit */
+#define MPPE_S_BIT             0x40    /* 128-bit */
+#define MPPE_M_BIT             0x80    /* 56-bit, not supported */
+#define MPPE_H_BIT             0x01    /* Stateless (in a different byte) */
+
+/* Does not include H bit; used for least significant octet only. */
+#define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT)
+
+/* Build a CI from mppe opts (see RFC 3078) */
+#define MPPE_OPTS_TO_CI(opts, ci)              \
+    do {                                       \
+       u_char *ptr = ci; /* u_char[4] */       \
+                                               \
+       /* H bit */                             \
+       if (opts & MPPE_OPT_STATEFUL)           \
+           *ptr++ = 0x0;                       \
+       else                                    \
+           *ptr++ = MPPE_H_BIT;                \
+       *ptr++ = 0;                             \
+       *ptr++ = 0;                             \
+                                               \
+       /* S,L bits */                          \
+       *ptr = 0;                               \
+       if (opts & MPPE_OPT_128)                \
+           *ptr |= MPPE_S_BIT;                 \
+       if (opts & MPPE_OPT_40)                 \
+           *ptr |= MPPE_L_BIT;                 \
+       /* M,D,C bits not supported */          \
+    } while (/* CONSTCOND */ 0)
+
+/* The reverse of the above */
+#define MPPE_CI_TO_OPTS(ci, opts)              \
+    do {                                       \
+       u_char *ptr = ci; /* u_char[4] */       \
+                                               \
+       opts = 0;                               \
+                                               \
+       /* H bit */                             \
+       if (!(ptr[0] & MPPE_H_BIT))             \
+           opts |= MPPE_OPT_STATEFUL;          \
+                                               \
+       /* S,L bits */                          \
+       if (ptr[3] & MPPE_S_BIT)                \
+           opts |= MPPE_OPT_128;               \
+       if (ptr[3] & MPPE_L_BIT)                \
+           opts |= MPPE_OPT_40;                \
+                                               \
+       /* M,D,C bits */                        \
+       if (ptr[3] & MPPE_M_BIT)                \
+           opts |= MPPE_OPT_56;                \
+       if (ptr[3] & MPPE_D_BIT)                \
+           opts |= MPPE_OPT_D;                 \
+       if (ptr[3] & MPPE_C_BIT)                \
+           opts |= MPPE_OPT_MPPC;              \
+                                               \
+       /* Other bits */                        \
+       if (ptr[0] & ~MPPE_H_BIT)               \
+           opts |= MPPE_OPT_UNKNOWN;           \
+       if (ptr[1] || ptr[2])                   \
+           opts |= MPPE_OPT_UNKNOWN;           \
+       if (ptr[3] & ~MPPE_ALL_BITS)            \
+           opts |= MPPE_OPT_UNKNOWN;           \
+    } while (/* CONSTCOND */ 0)