summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2008-08-18 22:21:18 +1000
committerPaul Mackerras <paulus@samba.org>2008-08-18 22:21:18 +1000
commit6117748f5e7872c78d32c18e68b5fb7ce3f78670 (patch)
tree4bbcf291804e0d63607c39e0bd6c405dde4a5a79
parent5dce043b4b7e32d41598442361736a927a5db5e4 (diff)
downloadppp-6117748f5e7872c78d32c18e68b5fb7ce3f78670.tar.gz
Remove more stuff that we don't need to distribute
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>
-rw-r--r--include/linux/if_ether.h99
-rw-r--r--include/linux/if_pppol2tp.h4
-rw-r--r--include/linux/if_pppox.h145
-rw-r--r--include/linux/if_pppvar.h169
-rw-r--r--include/linux/ppp-comp.h92
-rw-r--r--include/net/ppp-comp.h87
-rw-r--r--include/pcap-int.h117
-rw-r--r--linux/bsd_comp.c1203
-rwxr-xr-xlinux/kinstall.sh257
-rw-r--r--pppd/chap_ms.h2
-rw-r--r--pppd/mppe.h121
11 files changed, 122 insertions, 2174 deletions
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
deleted file mode 100644
index e9191ba..0000000
--- a/include/linux/if_ether.h
+++ /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 */
diff --git a/include/linux/if_pppol2tp.h b/include/linux/if_pppol2tp.h
index a7d6a22..4113d6a 100644
--- a/include/linux/if_pppol2tp.h
+++ b/include/linux/if_pppol2tp.h
@@ -17,10 +17,6 @@
#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
index 79684be..0000000
--- a/include/linux/if_pppox.h
+++ /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
index ff7bd3f..0000000
--- a/include/linux/if_pppvar.h
+++ /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"
diff --git a/include/linux/ppp-comp.h b/include/linux/ppp-comp.h
index fc96d94..d30cacb 100644
--- a/include/linux/ppp-comp.h
+++ b/include/linux/ppp-comp.h
@@ -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 */
diff --git a/include/net/ppp-comp.h b/include/net/ppp-comp.h
index 894bf12..088c73e 100644
--- a/include/net/ppp-comp.h
+++ b/include/net/ppp-comp.h
@@ -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
index ba10a95..0000000
--- a/include/pcap-int.h
+++ /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
index 952b32f..0000000
--- a/linux/bsd_comp.c
+++ /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
index 0391a23..0000000
--- a/linux/kinstall.sh
+++ /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
diff --git a/pppd/chap_ms.h b/pppd/chap_ms.h
index 57e2929..040d80a 100644
--- a/pppd/chap_ms.h
+++ b/pppd/chap_ms.h
@@ -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
index 0000000..5eb3b37
--- /dev/null
+++ b/pppd/mppe.h
@@ -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)