]> git.ozlabs.org Git - ppp.git/commitdiff
Putting remaining PPP files under version control
authorPaul Mackerras <paulus@samba.org>
Thu, 1 Jun 1995 04:39:06 +0000 (04:39 +0000)
committerPaul Mackerras <paulus@samba.org>
Thu, 1 Jun 1995 04:39:06 +0000 (04:39 +0000)
20 files changed:
README [new file with mode: 0644]
README.aix4 [new file with mode: 0644]
README.bsd [new file with mode: 0644]
README.linux [new file with mode: 0644]
README.osf [new file with mode: 0644]
README.sun [new file with mode: 0644]
README.ultrix [new file with mode: 0644]
SETUP [new file with mode: 0644]
TODO [new file with mode: 0644]
aix4/load [new file with mode: 0644]
aix4/ppp_async.exp [new file with mode: 0644]
aix4/ppp_if.exp [new file with mode: 0644]
freebsd-2.0/Makefile.top [new file with mode: 0644]
freebsd-2.0/files.patch [new file with mode: 0644]
linux/Makefile.top [new file with mode: 0644]
ppp.texi [new file with mode: 0644]
svr4/ppp.conf [new file with mode: 0644]
ultrix/Makefile.top [new file with mode: 0644]
ultrix/patches [new file with mode: 0644]
ultrix/upgrade [new file with mode: 0644]

diff --git a/README b/README
new file mode 100644 (file)
index 0000000..8b928a6
--- /dev/null
+++ b/README
@@ -0,0 +1,175 @@
+This is the README file for ppp-2.2, a package which implements the
+Point-to-Point Protocol (PPP) to provide Internet connections over
+serial lines.
+
+
+Introduction.
+*************
+
+The Point-to-Point Protocol (PPP) provides a standard way to transmit
+datagrams over a serial link, as well as a standard way for the
+machines at either end of the link (the `peers') to negotiate various
+optional characteristics of the link.  Using PPP, a serial link can be
+used to transmit Internet Protocol (IP) datagrams, allowing TCP/IP
+connections between the peers.  PPP is defined in several RFC (Request
+For Comments) documents, in particular RFCs 1661, 1662, 1332 and 1334.
+Other RFCs describe standard ways to transmit datagrams from other
+network protocols (e.g., DECnet, OSI, Appletalk), but this package
+only supports IP.
+
+This software consists of two parts:
+
+- Kernel code, which establishes a network interface and passes
+packets between the serial port, the kernel networking code and the
+PPP daemon (pppd).  This code is implemented using STREAMS modules on
+SunOS 4.x, AIX 4.1 and OSF/1, and as a line discipline under Ultrix,
+NextStep, NetBSD, FreeBSD, and Linux.
+
+- The PPP daemon (pppd), which negotiates with the peer to establish
+the link and sets up the ppp network interface.  Pppd includes support
+for authentication, so you can control which other systems may make a
+PPP connection and what IP addresses they may use.
+
+
+Installation.
+*************
+
+The file SETUP contains general information about setting up your
+system for using PPP.  There is also a README file for each supported
+system, which contains more specific details for installing PPP on
+that system.  The supported systems, and the corresponding README
+files, are:
+
+       SunOS 4.x                       README.sun
+       NetBSD, FreeBSD                 README.bsd
+       Ultrix 4.x                      README.ultrix
+       Linux                           README.linux
+       OSF/1                           README.osf
+       AIX 4.x                         README.aix4
+       NeXTStep                        README.next
+
+In each case you start by running the ./configure script.  This works
+out which operating system you are using and creates symbolic links to
+the appropriate makefiles.  You then run `make' to compile the
+user-level code, and (as root) `make install' to install the
+user-level programs pppd, chat and pppstats.
+
+The procedures for installing the kernel code vary from system to
+system.  On some systems, the kernel code can be loaded into a running
+kernel using a `modload' facility.  On others, the kernel image has to
+be recompiled and the system rebooted.  See the README.* files for
+details.
+
+
+What is new in ppp-2.2.
+***********************
+
+* More systems are now supported:
+
+  AIX 4, thanks to Charlie Wick (cwick@quaver.urbana.mcd.mot.com)
+  OSF/1 on DEC Alpha, thanks to Steve Tate (srt@zaphod.csci.unt.edu)
+  NextStep 3.2 and 3.3, thanks to Philip-Andrew Prindeville
+       (philipp@res.enst.fr) and Steve Perkins (perkins@cps.msu.edu)
+
+in addition to NetBSD 1.0, SunOS 4.x, Ultrix 4.x, FreeBSD 2.0, and
+Linux.
+
+* Packet compression has been implemented.  This version implements
+CCP (Compression Control Protocol) and the BSD-Compress compression
+scheme according to the current draft RFCs.  This means that incoming
+and outgoing packets can be compressed with the LZW scheme (same as
+the `compress' command) using a code size of up to 15 bits.
+
+* Some bug fixes to the LCP protocol code.  In particular, pppd now
+correctly replies with a Configure-NAK (instead of a Configure-Reject)
+if the peer asks for CHAP and pppd is willing to do PAP but not CHAP.
+
+* The ip-up and ip-down scripts are now run with the real user ID set
+to root, and with an empty environment.  Clearing the environment
+fixes a security hole.
+
+* The kernel code on NetBSD, FreeBSD, NextStep and Ultrix has been
+restructured to make it easier to implement PPP over devices other
+than asynchronous tty ports (for example, synchronous serial ports).
+
+* pppd now looks at the list of interfaces in the system to determine
+what the netmask should be.  In most cases, this should eliminate the
+need to use the `netmask' option.
+
+* There is a new `papcrypt' option to pppd, which specifies that
+secrets in /etc/ppp/pap-secrets used for authenticating the peer are
+encrypted, so pppd always encrypts the peer's password before
+comparing it with the secret from /etc/ppp/pap-secrets.  This gives
+better security.
+
+
+Patents.
+********
+
+The BSD-Compress algorithm used for packet compression is the same as
+that used in the Unix "compress" command.  It is apparently covered by
+U.S. patents 4,814,746 (owned by IBM) and 4,558,302 (owned by Unisys),
+and corresponding patents in various other countries (but not
+Australia).  If this is of concern, you can build the package without
+including BSD-Compress.  To do this, edit net/ppp-comp.h to change the
+definition of DO_BSD_COMPRESS to 0.  The bsd-comp.c files are then no
+longer needed, so the references to bsd-comp.o may optionally be
+removed from the Makefiles.
+
+
+Contacts.
+*********
+
+Bugs in the the SunOS, NetBSD and Ultrix ports and bugs in pppd, chat
+or pppstats should be reported to:
+
+       paulus@cs.anu.edu.au
+       Paul Mackerras
+       Dept. of Computer Science
+       Australian National University
+       Canberra  ACT  0200
+       AUSTRALIA
+
+Bugs in other ports should be reported to the maintainer for that port
+(see the appropriate README.* file) or to the above.
+
+Thanks to:
+
+       Brad Parker  (brad@fcr.com)
+       Greg Christy (gmc@quotron.com)
+       Drew D. Perkins (ddp@andrew.cmu.edu)
+       Rick Adams (rick@seismo.ARPA)
+       Chris Torek (chris@mimsy.umd.edu, umcp-cs!chris).
+
+
+Copyrights:
+
+Most of the code can be freely used and redistributed.  The STREAMS
+code for SunOS 4.x, OSF/1 and AIX 4 is under a more restrictive
+copyright:
+
+       This code is Copyright (C) 1989, 1990 By Brad K. Clements, 
+       All Rights Reserved.
+
+       You may use this code for your personal use, to provide a non-profit
+       service to others, or to use as a test platform for a commercial
+       implementation.
+
+       You may NOT use this code in a commercial product, nor to provide a 
+       commercial service, nor may you sell this code without express
+       written permission of the author.
+
+       Otherwise, Enjoy!
+
+This copyright applies to (parts of) the following files:
+
+       sunos/ppp_async.c
+       sunos/ppp_if.c
+       osf1/ppp_async.c
+       osf1/ppp_if.c
+       aix4/ppp_async.c
+       aix4/ppp_if.c
+       net/ppp_str.h
+       pppd/sys-str.c
+       pppd/sys-osf.c
+       pppd/sys-aix4.c
diff --git a/README.aix4 b/README.aix4
new file mode 100644 (file)
index 0000000..956c8c6
--- /dev/null
@@ -0,0 +1,100 @@
+
+AIX 4.1 support is ported from the SunOS code for ppp 2.2. It requires
+a streams-based tty and will not work on AIX 3.2. This is the first
+release of this package for AIX. It is provided free and without warranty
+of any kind. I can't make any promise to support this, but if you e-mail
+me with problems I'll try to help you. Please let me know about any bugs
+you might find.
+
+Introduction
+
+  PPP implements TCP/IP through serial connections. In ppp 2.2, an
+  interface is established by running the program 'pppd'. pppd opens
+  a serial connection, negotiates link attributes with the peer and
+  configures a TCP/IP interface. The interface remains up as long as
+  the peer stays up and 'pppd' remains running. There are no SMIT menus
+  and ppp interfaces can not be defined through ifconfig. An interface 
+  can be brought down by killing pppd.
+
+  The program 'chat' processes send-expect sequences similar to UUCP
+  Dialers commands or a Systems chat string. It can be used to dial
+  a modem.
+
+  'pppstats' prints interface statistics similar to netstat. Some of the
+  statistics are the same as netstat but pppstat also provides additional
+  info specific to ppp interfaces. 
+
+Installation
+
+  First execute the following commands in the ppp-2.2 directory:
+
+       ./configure
+       make install            (you need to be root for this)
+
+  By default, pppd, chat and pppstats are placed in /usr/sbin and the
+  streams modules in /usr/lib/drivers. The modules are loaded by the following
+  'strload' commands.
+  
+  strload -m /usr/lib/drivers/ppp_if
+  strload -m /usr/lib/drivers/ppp_comp
+  strload -m /usr/lib/drivers/ppp_async
+  
+  'make install' appends the strloads to /etc/rc.tcpip so the modules
+  will be loaded at boot.  A 'pppd' command can be added to start
+  up an interface.
+  
+  'make install' will also create /etc/ppp/options containing the option
+  'lock' only (lock tty device when in use). Any other options which will
+  always be used should be added by hand.
+  
+  Man pages for pppd and pppstats are installed.
+
+Examples
+
+  To answer a modem and accept connections, use something like
+
+    pppd tty1 myhostname:remotehostname persist
+
+  This will wait for calls on tty1 and establish a connection with any
+  ppp caller. The server will use myhostname and tell the caller
+  to use remotehostname. The persist option tells pppd to remain 
+  active and accept another connection after the call terminates.
+  You can use the 'auth' option to force callers to authenticate
+  themselves. See pppd man page for details of authentication protocols.
+
+  To dial in to a user account and start PPP, use something like
+
+    pppd tty1 myhostname: connect 'chat -f /etc/ppp/chat-script'
+
+  where the file /etc/ppp/chat-script should contain something like
+
+    "" ATDT5551212 CONNECT "" ogin: myname sword: mypassword $ pppd
+
+  This command uses the chat program to dial the modem, log in and
+  start pppd on the server. No ttyname is needed when starting pppd on the
+  server side because pppd will attach to the current terminal (the tty line),
+  if no device is specified. Any pppd options needed can be set in ~/.ppprc
+  on the called system.
+
+  The chat -v option may be helpful in debugging connection failures. The
+  chat output and other debug messages are sent to syslog. You may need
+  to edit /etc/syslog.conf and "refresh -s syslogd" to see the debug messages.
+
+  The simplest way to allow a remote dial-in host to use your network is
+  to use the 'proxyarp' option on the server. This will cause the
+  server to publish an arp entry with the remote's IP address and the 
+  server's hardware address. The remote will then appear to be part of
+  local network to other hosts. The address/netmask used by the remote
+  must be suitable for the subnet you wish to connect to.  If the remote
+  is a standalone system, or has no other default route, use the
+  'defaultroute' option when dialing in. This will create a default route
+  on the remote system through the server. If the remote is on another
+  local network, you might not want this because it could conflict with
+  an existing default route.
+
+  These are just a few examples to help the new user get started. The
+  man page for pppd describes all the options in detail.
+
+       Charlie Wick
+       cwick@prairienet.org
+
diff --git a/README.bsd b/README.bsd
new file mode 100644 (file)
index 0000000..1d8988f
--- /dev/null
@@ -0,0 +1,138 @@
+Installation instructions for installing ppp-2.2 on FreeBSD and
+NetBSD systems.
+
+This package supports NetBSD-1.0 and FreeBSD-2.0.  It should work
+on later systems (it works on NetBSD-current as of this writing).
+Modloading is not yet supported.
+
+I have code which should work on earlier systems (386BSD, NetBSD-0.9,
+FreeBSD-1.1.5.1, etc.), but it is not included in this package because
+I have no way to test or support it.  If you are committed to one of
+these earlier versions and you are willing to try out some code
+without needing major hand-holding, contact me (paulus@cs.anu.edu.au).
+
+To install PPP, you need to rebuild your kernel to include the latest
+version of the PPP driver, as well as compiling and installing the
+user-level applications: pppd, pppstats and chat.  The user-level
+applications can be compiled and installed either before or after you
+reboot with the new kernel (you'll have to reboot with the new kernel
+before you can run them, of course).
+
+The following commands should compile and install the user-level
+applications (in the ppp-2.2 directory):
+
+       ./configure
+       make
+       make install            (you need to be root for this)
+
+The process of updating the kernel source files is now largely
+automated.  In the ppp-2.2 directory, issue the command:
+
+       make kernel
+
+(you probably need to be root for this).  This will copy new versions
+of several files into /sys, patch other files, and finally give you
+instructions about modifying your kernel configuration file (if
+necessary), rebuilding the kernel and rebooting.
+
+If you want to do the process by hand, read on...
+
+
+Updating the kernel ppp code.
+-----------------------------
+
+You need to update several files in the /sys/net directory, and patch
+some other files under /sys.
+
+For NetBSD-1.0, copy the following files to /sys/net:
+
+       net/if_ppp.h
+       net/ppp-comp.h
+       net/ppp_defs.h
+       netbsd/bsd-comp.c
+       netbsd/if_ppp.c
+       netbsd/if_pppvar.h
+       netbsd/netisr.h
+       netbsd/ppp_tty.c
+       netbsd/slcompress.c
+       netbsd/slcompress.h
+
+You then need to patch /sys/conf/files and /sys/conf/files.newconf
+using the commands:
+
+       patch -p -N -d /sys/conf <netbsd/files.patch
+       patch -p -N -d /sys/conf <netbsd/files.newconf.patch
+
+The next step is to patch the file containing the code which
+dispatches software interrupts.  Unfortunately, this code is in the
+architecture-dependent files, so the file to patch depends on which
+NetBSD port you are using:
+
+Port   File to patch                      Patch file
+----   -------------                      ----------
+amiga  /sys/arch/amiga/amiga/machdep.c    netbsd/arch/amiga/machdep.c.patch
+hp300  /sys/arch/hp300/hp300/machdep.c    netbsd/arch/hp300/machdep.c.patch
+i386   /sys/arch/i386/isa/icu.s           netbsd/arch/i386/icu.s.patch
+mac68k /sys/arch/mac68k/mac68k/machdep.c  netbsd/arch/mac68k/machdep.c.patch
+pc532  /sys/arch/pc532/pc532/locore.s     netbsd/arch/pc532/locore.s.patch
+pmax   /sys/arch/pmax/pmax/trap.c         netbsd/arch/pmax/trap.c.patch
+sparc  /sys/arch/sparc/sparc/intr.c       netbsd/arch/sparc/intr.c.patch
+sun3   /sys/arch/sun3/sun3/isr.c          netbsd/arch/sun3/isr.c.patch
+
+To do the patch, you would use a command something like this:
+
+       patch -p -d /sys/arch/i386/isa <netbsd/arch/i386/icu.s.patch
+
+
+For FreeBSD-2.0, copy the following files to /sys/net:
+
+       net/if_ppp.h
+       net/ppp-comp.h
+       net/ppp_defs.h
+       freebsd-2.0/bsd-comp.c
+       freebsd-2.0/if_ppp.c
+       freebsd-2.0/if_pppvar.h
+       freebsd-2.0/ppp_tty.c
+       freebsd-2.0/pppcompress.c
+       freebsd-2.0/pppcompress.h
+
+You then need to patch /sys/conf/files using the command:
+
+       patch -p -N -d /sys/conf <freebsd-2.0/files.patch
+
+
+Configuring and making the new kernel.
+--------------------------------------
+
+First, make sure that the configuration file you are using includes a
+line something like
+
+       pseudo-device ppp 2
+
+If it doesn't, add one.  The `2' is the number of ppp interfaces to
+configure, that is, the maximum number of simultaneous ppp connections
+you will be able to have; change it as required.
+
+Next, run config or config.new in the directory containing the
+configuration file, giving the configuration file name as an argument.
+Then cd to the compilation directory and make the kernel.  For the
+i386 port of NetBSD, with a configuration file called CONF, this
+involves the following commands:
+
+       cd /sys/arch/i386/conf
+       /usr/sbin/config CONF
+       cd ../compile/CONF
+       make
+
+For FreeBSD, the commands are similar except for different
+directories:
+
+       cd /sys/i386/conf
+       /usr/sbin/config CONF
+       cd ../../compile/CONF
+       make
+
+The result should be a new kernel image (usually called `netbsd' under
+NetBSD, `kernel' under FreeBSD).  Save a copy of the kernel image
+you're currently using, copy the new kernel image file to /, and
+reboot.
diff --git a/README.linux b/README.linux
new file mode 100644 (file)
index 0000000..abe7af4
--- /dev/null
@@ -0,0 +1,646 @@
+
+PPP for Linux                                             Version 0.2.8
+=============                                                  based on
+                                                              ppp-2.1.0
+                                                               May 1994
+
+Michael Callahan    callahan@maths.ox.ac.uk
+Al Longyear         longyear@netcom.com
+
+  Contents:
+    INTRODUCTION
+    CREDITS
+    FUTURE PLANS
+    INSTALLATION
+    GENERAL NETWORK CONFIGURATION
+    CONNECTING TO A PPP SERVER
+    IF IT WORKS
+    IF IT DOESN'T WORK
+    IF IT STILL DOESN'T WORK (OR, BUG REPORTS)
+    DYNAMIC ADDRESS ASSIGNMENT
+    SETTING UP A MACHINE FOR INCOMING PPP CONNECTIONS
+    ADDING MORE PPP CHANNELS
+    CHANGES FROM LINUX PPP 0.1.x
+    CONCLUSION
+
+
+INTRODUCTION
+
+This is a PPP driver for Linux.  It has been used by many people and
+seems to be quite stable.  It is capable of being used either as a
+'client'--for connecting a Linux machine to a local Internet provider,
+for example--or as a 'server'--allowing a Linux machine with a modem
+and an Ethernet connection to the Internet to provide dial-in PPP
+links.  (In fact, the PPP protocol does not make the distinction
+between client and server, but this is the way people often think
+about it.)
+
+The PPP protocol consists of two parts.  One is a scheme for framing
+and encoding packets, the other is a series of protocols called LCP,
+IPCP, UPAP and CHAP, for negotiating link options and for
+authentication.  This package similarly consists of two parts: a
+kernel module which handles PPP's low-level framing protocol, and a
+user-level program called pppd which implements PPP's negotiation
+protocols.
+
+The kernel module assembles/disassembles PPP frames, handles error
+detection, and forwards packets between the serial port and either the
+kernel network code or the user-level program pppd.  IP packets go
+directly to the kernel network code.  So once pppd has negotiated the
+link, it in practice lies completely dormant until you want to take
+the link down, when it negotiates a graceful disconnect.
+
+CREDITS
+
+I (MJC) wrote the original kernel driver from scratch.  Laurence
+Culhane and Fred van Kempen's slip.c was priceless as a model (a
+perusal of the files will reveal that I often mimicked what slip.c
+did).  Otherwise I just implemented what pppd needs, using RFC1331 as
+a guide.  For the most part, the Linux driver provides the same
+interface as the free 386BSD and SunOS drivers.  The exception is that
+Linux has no support for asynchronous I/O, so I hacked an ioctl into
+the PPP kernel module that provides a signal when packets appear and
+made pppd use this instead.
+
+Al Longyear ported version 2.0.4 of pppd (from the free package
+ppp-2.0.4) to Linux.  He also provided several enhancements to both
+the kernel driver and the OS-independent part of pppd.  His
+contributions to Linux PPP have been immense, and so this release
+is being distributed over both our names.
+
+The pppd program comes from the free distribution of PPP for Suns and
+386BSD machines, maintained by Paul Mackerras.  This package lists
+"thanks to" Brad Parker, Greg Christy, Drew D. Perkins, Rick Adams and
+Chris Torek.
+
+
+FUTURE PLANS
+
+The main missing feature is the ability to fire up a PPP connection
+automatically when a packet destined for the remote host is generated
+("demand-dialing").  Work is progressing on this, but it involves some
+nontrivial design issues.
+
+
+INSTALLATION
+
+This version of PPP has been tested on 1.0.x (x=0..9) and 1.1.x
+(x=0..14) kernels.  It will probably not work on kernels much earlier
+than this due to a change in the routing code.  If you have an earlier
+kernel, please upgrade.
+
+joining the PPP channel of linux-activists:
+
+      This isn't really part of installation, but if you DO use
+      Linux PPP you should do this.  Send a message with the line
+       X-Mn-Admin: join PPP
+      contained in the body to linux-activists-request@niksula.hut.fi
+      You can send to the list by mailing to
+      linux-activists@niksula.hut.fi and putting the line
+        X-Mn-Key: PPP
+      at the start of your message.
+
+      The advantage of subscribing is that you'll be informed of
+      updates and patches, and you'll be able to draw on the
+      experience of many PPP users.  If you have a problem, I may not
+      be able to diagnose it, but someone else may have solved it
+      already.
+
+      Note also that I do not read the linux Usenet newsgroups
+      regularly enough to catch any discussions of PPP; if you want to
+      reach the PPP audience you should join the linux-activists
+      channel.
+
+      To leave the PPP mailing list :-(, send a message with the line
+        X-Mn-Admin: leave PPP
+      to linux-activists-request.
+
+kernel driver installation:
+
+      This depends on the kernel version you're using.
+
+      Since 1.1.14, Linux kernels have had built-in support for PPP.
+      You'll be asked whether you want PPP when you run "make config".
+      It's as easy as that.
+
+      In 1.1.13, PPP is there but the PPP line in config.in is
+      commented out.  If you have 1.1.13, you probably should just
+      upgrade anyway.
+
+      Kernel versions prior to 1.1.13 (including all 1.0.x kernels)
+      have had (hidden) support for PPP in the kernel configuration
+      setup for quite some time.  Adding the PPP kernel driver is
+      easy:
+
+       1) copy ppp.c from the linux subdirectory of the distribution
+           to drivers/net and ppp.h to include/linux
+       2) uncomment the CONFIG_PPP line in config.in
+        3) if you are using 1.1.3 or earlier (including 1.0.x):
+           uncomment the line in ppp.c that begins
+            /* #define NET02D
+           by removing the "/* " characters
+        4) in the top level of the kernel source
+               make config
+               make dep
+               make
+
+      Reboot with the new kernel.  At startup, you should see
+      something line this:
+
+  PPP: version 0.2.8 (4 channels)
+  TCP compression code copyright 1989 Regents of the University of California
+  PPP line discipline registered.
+
+      (If you want more than 4 channels, see the section "ADDING MORE
+      PPP CHANNELS" below.)
+
+      Now, try looking at the contents of /proc/net/dev.  It should
+      look something like this:
+
+  Inter-|   Receive                  |  Transmit
+   face |packets errs drop fifo frame|packets errs drop fifo colls carrier
+      lo:      0    0    0    0    0        0    0    0    0     0    0
+    ppp0:      0    0    0    0    0        0    0    0    0     0    0
+    ppp1:      0    0    0    0    0        0    0    0    0     0    0
+    ppp2:      0    0    0    0    0        0    0    0    0     0    0
+    ppp3:      0    0    0    0    0        0    0    0    0     0    0
+
+      This indicates that the driver is successfully installed.
+
+      (Of course, you should keep a kernel without PPP around, in case
+      something goes wrong.)
+
+pppd installation:
+
+      First execute the following commands (in the ppp-2.2 directory):
+
+       ./configure
+       make
+
+      This will make the pppd and chat programs.
+
+      To install, type 'make install' (in the ppp-2.2 directory).
+      This will put chat and pppd binaries in /usr/etc
+      and the pppd.8 manual page in /usr/man/man8.
+
+      pppd needs to be run as root.  You can either make it setuid
+      root or just use it when you are root.  'make install' will try
+      to install it setuid root.  Making pppd setuid root is
+      convenient for a single-user machine, but has security
+      implications which you should investigate carefully before
+      making it available on a multiuser machine.
+
+GENERAL NETWORK CONFIGURATION
+
+Since many people don't use the Linux networking code at all until
+they get a PPP link, this section describes generally what's needed to
+get things running.  In principle none of this is special to PPP.  For
+more details, you should consult the relevant Linux HOWTOs.  If you
+already understand network setup, you can skip this section.
+
+The first file that requires attention is the rc script that does
+network configuration at boot time, called /etc/rc.net or
+/etc/rc.d/rc.net.{1,2} or something similar, depending on your Linux
+distribution.  This file should 'ifconfig' the loopback interface lo,
+and should add an interface route for it.  These lines might look
+something like this:
+        $CONFIG lo 127.0.0.1
+       $ROUTE add loopback
+or
+        /sbin/ifconfig lo 127.0.0.1
+        /sbin/route add 127.0.0.1
+
+However, it should *not* config an ethernet card or install any other
+routes (unless you actually have an ethernet card, in which case I'll
+assume you know what to do).  Many distributions will provide scripts
+that expect you to have an ethernet card.
+
+You also need to decide whether you want to allow incoming
+telnet/ftp/finger, etc.  If so, you should have the rc startup script
+run the 'inetd' daemon.
+
+Next, you should set up /etc/hosts to have two lines.  The first
+should just give the loopback or localhost address and the second
+should give your own host name and the IP address your PPP connection
+will use.  For example:
+     127.0.0.1  loopback localhost   # useful aliases
+     192.1.1.17  billpc.whitehouse.gov bill  # my hostname
+where my IP address is 192.1.1.17 and my hostname is
+billpc.whitehouse.gov.  (Not really, you understand.)  If your PPP
+server does dynamic IP address assignment, give a guess as to an
+address you might get (see also "Dynamic Address Assignment" below).
+
+Finally, you need to configure the domain name system by putting
+appropriate lines in /etc/resolv.conf .  It should look something like
+this:
+     domain whitehouse.gov
+     nameserver 192.1.2.1
+     nameserver 192.1.2.10
+Assuming there are nameservers at 192.1.2.1 and 192.1.2.10, then when
+you get connected with PPP, you can reach hosts whose full names are
+'hillarypc.whitehouse.gov' and 'chelseapc.whitehouse.gov' by the names
+'hillarypc' and 'chelseapc'.  You can probably find out the right
+domain name to use and the IP numbers of nameservers from whoever's
+providing your PPP link.
+
+CONNECTING TO A PPP SERVER
+
+To use PPP, you invoke the pppd program with appropriate options.
+Everything you need to know is contained in the pppd(8) manual page.
+However, it's useful to see some examples:
+
+Example 1: A simple dial-up connection.
+
+Here's a command for connecting to a PPP server by modem.
+
+  pppd connect 'chat -v -f chat-script' \
+      /dev/cua1 38400 -detach debug crtscts modem defaultroute 192.1.1.17:
+
+where the file chat-script contains:
+
+  "" ATDT5551212 CONNECT "" ogin: ppp word: whitewater
+
+Going through pppd's options in order:
+   connect 'chat ...'  This gives a command to run to contact the
+    PPP server.  Here the supplied 'chat' program is used to dial a
+    remote computer.  The whole command is enclosed in single quotes
+    because pppd expects a one-word argument for the 'connect' option.
+    The options to 'chat' itself are:
+         -v              verbose mode; log what we do to syslog
+        -f chat-script  expect-send strings are in the file chat-script
+    The strings for chat to look for and to send are stored in the
+    chat-script file.  The strings can be put on the chat command line,
+    but this is not recommended because it makes your password visible
+    to anyone running ps while chat is running.  The strings are:
+         ""            don't wait for any prompt, but instead...
+         ATDT5551212   dial the modem, then
+         CONNECT       wait for answer
+         ""            send a return (null text followed by usual return)
+         ogin: ppp word: whitewater    log in.
+   /dev/cua1  specify the callout serial port cua1
+   38400  specify baud rate
+   -detach   normally, pppd forks and puts itself in the background;
+        this option prevents this
+   debug  log status in syslog
+   crtscts  use hardware flow control between computer and modem
+        (at 38400 this is a must)
+   modem  indicate that this is a modem device; pppd will hang up the
+        phone before and after making the call
+   defaultroute  once the PPP link is established, make it the
+        default route; if you have a PPP link to the Internet this
+        is probably what you want
+   192.1.1.17:  this is a degenerate case of a general option
+        of the form  x.x.x.x:y.y.y.y  .  Here x.x.x.x is the local IP
+        address and y.y.y.y is the IP address of the remote end of the
+        PPP connection.  If this option is not specified, or if just
+        one side is specified, then x.x.x.x defaults to the IP address
+        associated with the local machine's hostname (in /etc/hosts),
+        and y.y.y.y is determined by the remote machine.  So if this
+        example had been taken from the fictional machine 'billpc',
+        this option would actually be redundant.
+
+pppd will write error messages and debugging logs to the syslogd
+daemon using the facility name "daemon".  (Verbose output from chat
+uses facility "local2".)  These messages may already be logged to the
+console or to a file like /usr/adm/messages; consult your
+/etc/syslog.conf file to see.  If you want to make all pppd and chat
+messages go to the console, add the line
+   daemon,local2.*                             /dev/console
+to syslog.conf; make sure to put one or more TAB characters between
+the two fields.
+
+Example 2: Connecting to PPP server over hard-wired link.
+
+This is a slightly more complicated example.  This is the script I run
+to make my own PPP link, which is over a hard-wired Gandalf link to an
+Ultrix machine running Morningstar PPP.
+
+  pppd connect /etc/ppp/ppp-connect defaultroute noipdefault debug \
+      kdebug 2 /dev/cua0 9600
+
+Here /etc/ppp/ppp-connect is the following script:
+  #! /bin/sh
+  /etc/ppp/sendbreak
+  chat -v -t60 "" \; "service :" blackice ogin: callahan word: PASSWORD \
+      black% "stty -echo; ppp" "Starting PPP now"  && sleep 5
+
+This sends a break to wake up my terminal server, sends a semicolon
+(which lets my terminal server do autobaud detection), then says we
+want the service "blackice".  It logs in, waits for a shell prompt
+("black%"), then starts PPP.  The -t60 argument sets the timeout to a
+minute, since things here are sometimes very slow.  (Ideally the
+expect-send strings for chat should be in a file.)
+
+The "&& sleep 5" causes the script to pause for 5 seconds, unless chat
+fails in which case it exits immediately.  This is just to give the
+PPP server time to start (it's very slow).  Also, the "stty -echo"
+turned out to be very important for me; without it, my pppd would
+sometimes start to send negotiation packets before the remote PPP
+server had time to turn off echoing.  The negotiation packets would
+then get sent back to my local machine, be rejected (PPP is able to
+detect loopback) and pppd would fail before the remote PPP server even
+got going.  The "stty -echo" command prevents this confusion.  This
+kind of problem should only ever affect a *very* few people who
+connect to a PPP server that runs as a command on a slow Unix machine,
+but I wanted to mention it because it took me several frustrating
+hours to figure out.
+
+The pppd options are mostly familiar.  Two that are new are
+"noipdefault" and "kdebug 2".  "noipdefault" tells pppd to ask the
+remote end for the IP address to use; this is necessary if the PPP
+server implements dynamic IP address assignment as mine does (i.e., I
+don't know what address I'll get ahead of time).  "kdebug 2" sets the
+kernel debugging level to 2, enabling slightly chattier messages from
+the ppp kernel code.
+
+
+
+Anyway, assuming your connection is working, you should see chat dial
+the modem, then perhaps some messages from pppd (depending on your
+syslog.conf setup), then some kernel messages like this:
+
+       ppp: channel ppp0 mtu changed to 1500
+       ppp: channel ppp0 open
+       ppp: channel ppp0 going up for IP packets!
+
+(These messages will only appear if you gave the option "kdebug 2" and
+have kern.info messages directed to the screen.)  Simultaneously, pppd
+is also writing interesting things to /usr/adm/messages (or other log
+file, depending on syslog.conf).
+
+IF IT WORKS
+
+If you think you've got a connection, there are a number of things you
+can do to test it.
+
+First, type
+       /sbin/ifconfig
+(ifconfig may live elsewhere, depending on your distribution.)  This
+should show you all the network interfaces that are 'UP'.  ppp0 should
+be one of them, and you should recognize the first IP address as your
+own and the "POINT-TO-POINT ADDR" as the address of your server.
+Here's what it looks like on my machine:
+
+lo        Link encap Local Loopback  
+          inet addr 127.0.0.1  Bcast 127.255.255.255  Mask 255.0.0.0
+          UP LOOPBACK RUNNING  MTU 2000  Metric 1
+          RX packets 0 errors 0 dropped 0 overrun 0
+          TX packets 0 errors 0 dropped 0 overrun 0
+
+ppp0      Link encap Serial Line IP  
+          inet addr 192.76.32.2  P-t-P 129.67.1.165  Mask 255.255.255.0
+          UP POINTOPOINT RUNNING  MTU 1500  Metric 1
+          RX packets 33 errors 0 dropped 0 overrun 0
+          TX packets 42 errors 0 dropped 0 overrun 0
+
+Now, type
+       ping z.z.z.z
+where z.z.z.z is the address of your server.  This should work.
+Here's what it looks like for me:
+  waddington:~$ ping 129.67.1.165
+  PING 129.67.1.165 (129.67.1.165): 56 data bytes
+  64 bytes from 129.67.1.165: icmp_seq=0 ttl=255 time=268 ms
+  64 bytes from 129.67.1.165: icmp_seq=1 ttl=255 time=247 ms
+  64 bytes from 129.67.1.165: icmp_seq=2 ttl=255 time=266 ms
+  ^C
+  --- 129.67.1.165 ping statistics ---
+  3 packets transmitted, 3 packets received, 0% packet loss
+  round-trip min/avg/max = 247/260/268 ms
+  waddington:~$
+
+Try typing:
+       netstat -nr
+This should show three routes, something like this:
+Kernel routing table
+Destination     Gateway         Genmask         Flags Metric Ref Use    Iface
+129.67.1.165    0.0.0.0         255.255.255.255 UH    0      0        6 ppp0
+127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
+0.0.0.0         129.67.1.165    0.0.0.0         UG    0      0     6298 ppp0
+
+If your output looks similar but doesn't have the destination 0.0.0.0
+line (which refers to the default route used for connections), you may
+have run pppd without the 'defaultroute' option.
+
+At this point you can try telnetting/ftping/fingering whereever you
+want, bearing in mind that you'll have to use numeric IP addresses
+unless you've set up your /etc/resolv.conf correctly.
+
+IF IT DOESN'T WORK
+
+If you don't seem to get a connection, the thing to do is to collect
+'debug' output from pppd.  To do this, make sure you run pppd with the
+'debug' option, and put the following two lines in your
+/etc/syslog.conf file:
+    daemon,local2.*                            /dev/console
+    daemon,local2.*                            /usr/adm/ppplog
+This will cause pppd's messages to be written to the current virtual
+console and to the file /usr/adm/ppplog.  Note that the left-hand
+field and the right-hand field must be separated by at least one TAB
+character.  After modifying /etc/syslog.conf, you must execute the
+command 'kill -HUP <pid>' where <pid> is the process ID of the
+currently running syslogd process to cause it to re-read the
+configuration file.
+
+Some messages to look for: 
+  - "pppd[NNN]: Connected..." means that the "connect" script has
+    completed successfully.  
+  - "pppd[NNN]: sent [LCP ConfReq"... means that pppd has attempted to
+    begin negotiation with the remote end.  
+  - "pppd[NNN]: recv [LCP ConfReq"... means that pppd has received a
+    negotiation frame from the remote end.
+  - "pppd[NNN]: ipcp up" means that pppd has reached the point where
+    it believes the link is ready for IP traffic to travel across it.
+
+If you never see a "recv" message then there may be serious problems
+with your link.  (For example, the link may not be passing all 8
+bits.)  If that's the case, it would be useful to collect a debug log
+which contains all the bytes being passed between your computer and
+the remote PPP server.  To do this, alter your syslog.conf lines to
+look like this
+    local2.*,kern.*                            /dev/console
+    local2.*,kern.*                            /usr/adm/ppplog
+and HUP the syslog daemon as before.  Then, run pppd with the option
+"kdebug 5".  Whatever characters arrive over the PPP terminal line
+will appear in the debugging output.
+
+Occasionally you may see a message like
+   ppp_toss: tossing frame, reason = 4
+The PPP code is throwing away a packet ("frame") from the remote
+server because of a serial overrun.  This means your CPU isn't able to
+read characters from the serial port as quickly as they arrive; the
+best solution is to get a 16550A serial chip, which gives the CPU some
+grace period.  Reasons other than 4 indicate other kinds of serial
+errors, which should not occur.
+
+During the initial connection sequence, you may see one or more
+messages which indicate "bad fcs".  This refers to a checksum error in
+a received PPP frame, and usually occurs at the start of a session
+when the peer system is sending some "text" messages, such as "hello
+this is the XYZ company".  Messages of "bad fcs" once the link is
+established and the routes have been added are not normal and indicate
+transmssion errors or noise on the telephone line.
+
+IF IT STILL DOESN'T WORK (OR, BUG REPORTS)
+
+If you're still having difficulty, send the linux-activists PPP
+channel a bug report.  It is extremely important to include as much
+information as possible; for example:
+ - the version number of the kernel you are using
+ - the version number of Linux PPP you are using
+ - the exact command you use to start the PPP session
+ - log output from a session run with the 'debug' option, captured
+   using local2.*,kern.* in your syslog.conf file
+ - the type of PPP peer that you are connecting to (eg, Xyzzy Corp
+   terminal server, Morningstar PPP software, etc)
+ - the kind of connection you use (modem, hardwired, etc...)
+
+DYNAMIC ADDRESS ASSIGNMENT
+
+You can use Linux PPP with a PPP server which assigns a different IP
+address every time you connect.  You need to use the 'noipdefault'
+option to tell pppd to request the IP address from the remote host.
+
+Sometimes you may get an error message like "Cannot assign requested
+address" when you use a Linux client (for example, "talk").  This
+happens when the IP address given in /etc/hosts for our hostname
+differs from the IP address used by the PPP interface.  The solution
+is to use ifconfig ppp0 to get the interface address and then edit
+/etc/hosts appropriately.
+
+SETTING UP A MACHINE FOR INCOMING PPP CONNECTIONS
+
+Suppose you want to permit another machine to call yours up and start
+a PPP session.  This is possible using Linux PPP.
+
+One way is to create an account named, say, 'ppp', with the login
+shell being a short script that starts pppd.  For example, the passwd
+entry might look like this:
+  ppp:(encrypted password):102:50:PPP client login:/tmp:/etc/ppp/ppplogin
+Here the file /etc/ppp/ppplogin would be an executable script
+containing something like:
+  #!/bin/sh
+  exec /usr/etc/pppd passive :192.1.2.23
+Here we will insist that the remote machine use IP address 192.1.2.23,
+while the local PPP interface will use the IP address associated with
+this machine's hostname in /etc/hosts.  The 'passive' option (which is
+not required) just means that pppd will try to open negotiations when
+it starts, but if it receives no reply it will just wait silently.
+This is appropriate if the remote end might take some time before it's
+ready to negotiate.  (Note that the meaning of the 'passive' option
+changed between ppp-1.3 and ppp-2.0.)
+
+This setup is sufficient if you just want to connect two machines so
+that they can talk to one another.  If you want to use Linux PPP to
+connect a single machine to an entire network, or to connect two
+networks together, then you need to arrange for packets to be routed
+from the networks to the PPP link.  Setting up a link between networks
+is beyond the scope of this document; you should examine the routing
+options in the manual page for pppd carefully and find out about
+routed, etc.
+
+Let's consider just the first case.  Suppose you have a Linux machine
+attached to an Ethernet, and you want to allow its PPP peer to be able
+to communicate with hosts on that Ethernet.  To do this, you should
+have the remote machine use an IP address that would normally appear
+to be on the local Ethernet segment and you should give the 'proxyarp'
+option to pppd on the server.  Suppose, for example, we have this
+setup:
+
+ 192.1.2.23                        192.1.2.17
++-----------+      PPP link       +----------+
+| chelseapc | ------------------- |  billpc  |
++-----------+                    +----------+
+                                        |           Ethernet 
+                            ----------------------------------- 192.1.2.x 
+
+Here the PPP and Ethernet interfaces of billpc will have IP address
+192.1.2.17.  (It's OK for one or more PPP interfaces on a machine to
+share an IP address with an Ethernet interface.)  There is an
+appropriate entry in /etc/passwd on billpc to allow chelseapc to call
+in, with the /etc/ppp/ppplogin script containing
+  #!/bin/sh
+  exec /usr/etc/pppd passive proxyarp :192.1.2.23
+When the link comes up, pppd will enter a "proxy arp" entry for
+chelseapc into the arp table on billpc.  What this means effectively
+is that billpc will pretend to the other machines on the 192.1.2.x
+Ethernet that its Ethernet interface is ALSO the interface for
+chelseapc (192.1.2.23) as well as billpc (192.1.2.17).  In practice
+this means that chelseapc can communicate just as if it was directly
+connected to the Ethernet.
+
+ADDING MORE PPP CHANNELS
+
+By default, Linux PPP comes with 4 kernel channels, which means that
+at most 4 simultaneous PPP sessions are possible.  If you desire more
+such sessions (for example if you are serving many dialup lines), you
+can easily reconfigure the kernel to add new channels.  There are two
+steps.
+
+First you need to edit the kernel file drivers/net/Space.c .  As
+distributed, it contains a section that looks like this:
+  
+#if defined(CONFIG_PPP)
+extern int ppp_init(struct device *);
+static struct device ppp3_dev = {
+    "ppp3", 0x0, 0x0, 0x0, 0x0, 3, 0, 0, 0, 0, NEXT_DEV,  ppp_init, };
+static struct device ppp2_dev = {
+    "ppp2", 0x0, 0x0, 0x0, 0x0, 2, 0, 0, 0, 0, &ppp3_dev, ppp_init, };
+static struct device ppp1_dev = {
+    "ppp1", 0x0, 0x0, 0x0, 0x0, 1, 0, 0, 0, 0, &ppp2_dev, ppp_init, };
+static struct device ppp0_dev = {
+    "ppp0", 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, &ppp1_dev, ppp_init, };
+#undef NEXT_DEV
+#define NEXT_DEV (&ppp0_dev)
+#endif   /* PPP */
+
+The pattern should be obvious.  For more channels, you need to add
+more "static struct device pppN_dev" lines, changing the first, sixth
+and eleventh structure entries as appropriate.  The highest numbered
+PPP device should have NEXT_DEV in its eleventh structure field, and
+you should change the ppp3_dev structure to have &ppp4_dev there
+instead.
+
+For example, to add 2 extra channels, you would have
+
+#if defined(CONFIG_PPP)
+extern int ppp_init(struct device *);
+static struct device ppp5_dev = {
+    "ppp5", 0x0, 0x0, 0x0, 0x0, 5, 0, 0, 0, 0, NEXT_DEV,  ppp_init, };
+static struct device ppp4_dev = {
+    "ppp4", 0x0, 0x0, 0x0, 0x0, 4, 0, 0, 0, 0, &ppp5_dev,  ppp_init, };
+static struct device ppp3_dev = {
+    "ppp3", 0x0, 0x0, 0x0, 0x0, 3, 0, 0, 0, 0, &ppp4_dev,  ppp_init, };
+... etc.
+
+Second, you need to change the line in ppp.h (in include/linux) to
+change the line that reads
+
+#define PPP_NRUNIT     4
+
+to show the new number of channels; in our case it would become
+
+#define PPP_NRUNIT     6
+
+Finally, recompile and reboot.  The bootup message and the contents of
+/proc/net/dev should show the correct number of channels.
+
+CHANGES FROM LINUX PPP 0.1.x
+
+Linux PPP 0.1.x was based on the free PPP package PPP-1.3.  Linux PPP
+0.2.1 is based on PPP-2.0.4.  There have been some changes to the pppd
+options along with significant enhancements.  You should read
+"RELNOTES" in the pppd directory for a description of the changes.
+
+Also, some options which were added to PPP-1.3 for the Linux version
+have now changed names:
+    'defroute'  is now 'defaultroute'
+    'kerndebug' is now 'kdebug'
+    'dropdtr'   is now 'modem'
+In addition, it is now necessary to use the 'noipdefault' option if
+you want to get the local IP address from the remote PPP server.
+
+CONCLUSION
+
+Good luck!
+
+Michael
diff --git a/README.osf b/README.osf
new file mode 100644 (file)
index 0000000..5fd84ae
--- /dev/null
@@ -0,0 +1,102 @@
+
+This file (README.osf) contains instructions for installing ppp-2.2 on a
+DEC Alpha running OSF/1 version 2.0 or 3.0.  The original STREAMS
+module code is by (and copyrighted by) Brad Clements.  See the source 
+files and the general README file for full credits and copyright notices.
+
+If you would like to be on a mailing list concerning the ppp package,
+send mail to srt@cs.unt.edu and let me know.  This mailing list should
+not have any regular traffic --- I will use it only if bugs are reported
+to notify everyone of bug-fixes.
+
+Note for users of the ppp-2.1.2 package:  I have included a fix
+for the non-STREAMS tty drivers in this release.  If you were using
+version 2.1.2 with a hardware serial port, then you probably used the
+"rlogin-kludge" that I described in the README that came with 2.1.2.
+You don't need this any more, and will have a more efficient connection
+if you get rid of this old work-around.
+
+Below are the steps for installing PPP on a DEC AXP system running OSF/1.
+You must do all of the following as "root".
+
+1.  Make the kernel sources, daemon, chat, and pppstat program by typing 
+
+        ./configure
+        make install
+
+    in the directory that this file unpacked into.  This installs the
+    binaries for the PPP daemon and the statistics program in 
+    /usr/local/etc/ppp.  If you want them somewhere else, just change 
+    the definition of BINDIR in the top level Makefile.osf.
+
+2.  This step differs depending on whether you are running OSF/1 V3.0
+    or later.
+
+    FOR OSF/1 VERSIONS PRIOR TO V3.0:
+
+    | Add the following lines to the file /sys/conf/files:
+    |
+    |      streamsm/ppp_if.c                    optional ppp Notbinary
+    |      streamsm/ppp_async.c                 optional ppp Notbinary
+    |      streamsm/ppp_init.c                  optional ppp Notbinary
+    |      streamsm/vjcompress.c                optional ppp Notbinary
+    |      streamsm/bsd-comp.c                  optional ppp Notbinary
+    |      streamsm/ppp_comp.c                  optional ppp Notbinary
+    |
+    |
+    | Edit the file /sys/streams/str_config.c --- at the end there will be a
+    | comment to the effect of "add new configurations above this comment".
+    | Add the following lines above this comment:
+    |
+    |      bzero((caddr_t)&sb, sizeof(sb));
+    |      sb.sc_version = OSF_STREAMS_CONFIG_10;
+    |
+    |      retval = ppp_configure(SYSCONFIG_CONFIGURE,
+    |                             &sb, sc_size, &sc, sc_size);
+
+    FOR OSF/1 VERSIONS V3.0 AND LATER:
+
+    | Add the following lines to the file /sys/conf/files:
+    |
+    |      streamsm/ppp_if.c          optional ppp if_dynamic ppp Notbinary
+    |      streamsm/ppp_async.c       optional ppp if_dynamic ppp Notbinary
+    |      streamsm/ppp_init.c        optional ppp if_dynamic ppp Notbinary
+    |      streamsm/vjcompress.c      optional ppp if_dynamic ppp Notbinary
+    |      streamsm/bsd-comp.c        optional ppp if_dynamic ppp Notbinary
+    |      streamsm/ppp_comp.c        optional ppp if_dynamic ppp Notbinary
+
+4.  Find your system's configuration file.  This should be called
+    /sys/conf/SYSNAME, where SYSNAME is replaced by the name of your
+    host.  For example, on my machine (zaphod.csci.unt.edu) it it called
+    /sys/conf/ZAPHOD.  I will refer to this file from now on as 
+    /sys/conf/SYSNAME.
+
+5.  Add the following line at the end of /sys/conf/SYSNAME:
+
+       pseudo-device   ppp     2
+
+6.  Build a new kernel by using the command
+
+       doconfig -c SYSNAME
+
+    (say "n" to "Do you want to edit...").
+
+7.  Copy the new kernel to /vmunix --- I'm usually pretty nervous about
+    writing over a perfectly good kernel with one that I'm not sure
+    about, so I will usually "mv /vmunix /vmunix.old" first.  To put
+    the new kernel in place, do a "cp /sys/SYSNAME/vmunix /vmunix".
+
+8.  Make sure your system is set up so that it can act like a gateway
+    for messages to your new connection.  In particular, check the file
+    /etc/rc.config for the line define ROUTER, and make sure it is
+    defined as "yes".
+
+9.  Reboot and you're ready to go!
+
+Hopefully, that should work with no hitches.  If there are problems, or
+if I have made a mistake in these instructions, please let me know.
+
+Steve Tate
+University of North Texas
+srt@cs.unt.edu
+
diff --git a/README.sun b/README.sun
new file mode 100644 (file)
index 0000000..3bc2e2e
--- /dev/null
@@ -0,0 +1,46 @@
+This file describes the installation process for ppp-2.2 on systems
+running SunOS 4.x (or the equivalent).  This package does not
+currently work under Solaris 2.
+
+The STREAMS modules in the sunos directory provide kernel support for
+PPP on SunOS 4.x systems.  They have been tested under SunOS 4.1.3 on
+a SparcStation 10.  They should work under earlier SunOS 4.x systems,
+but no guarantees are given.
+
+The easiest way to install these modules is to load them into the
+running kernel using the `modload' command.  They can alternatively be
+linked into the kernel image, but this requires rebuilding the kernel.
+
+
+Installation.
+*************
+
+1. Run the configure script and make the user-level programs and the
+kernel modules.
+
+       ./configure
+       make
+
+2. Install the pppd and chat programs (you need to be root to do this):
+
+       make install
+
+3. Load the ppp module (you need to be root for this too).  In the
+sunos directory, do:
+
+       /usr/etc/modload ppp_driver.o
+
+You will want to do this "modloading" in your /etc/rc.local file
+once you have everything installed.  The ppp module is copied to
+/usr/local/etc by default, so you can put something like the following
+in /etc/rc.local:
+
+       if [ -f /usr/local/etc/ppp_driver.o ]; then 
+               /usr/etc/modload /usr/local/etc/ppp_driver.o
+       fi
+
+On some systems, /usr/local/etc is mounted read-only.  On such
+systems, add `-o /etc/ppp/ppp_driver' to the modload command line.
+
+NOTE: pppstats now works differently, so there is no need to use the
+-sym flag to modload, as required with earlier versions.
diff --git a/README.ultrix b/README.ultrix
new file mode 100644 (file)
index 0000000..08d1968
--- /dev/null
@@ -0,0 +1,123 @@
+
+Installing PPP on an Ultrix system requires rebuilding the kernel and
+rebooting, in addition to making and installing the pppd and chat
+programs.  These instructions apply to RISC (MIPS) systems.  This
+software has been tested under Ultrix 4.4; it should also work under
+Ultrix 4.2 or 4.3.
+
+
+Kernel installation procedure.
+******************************
+
+If you have not previously had an earlier version of this package
+installed in the kernel, follow these steps:
+
+1. Become root.
+
+2. Apply the patches in the file ultrix/patches using the command:
+
+       patch -p <ultrix/patches
+
+This will edit the following files, saving the original versions in a
+file with `.orig' appended to the name:
+
+       /usr/sys/h/ioctl.h
+       /usr/sys/net/net/if.h
+       /usr/sys/net/net/netisr.h
+       /usr/sys/net/net/conf_net.c
+       /usr/sys/data/pseudo_data.c
+       /usr/sys/data/tty_conf_data.c
+       /usr/sys/conf/mips/files.mips
+
+Alternatively, edit these files according to the differences shown in
+ultrix/patches.
+
+3. Copy the following files to /sys/io/netif:
+
+       net/if_ppp.h
+       net/ppp-comp.h
+       net/ppp_defs.h
+       net/slcompress.h
+       ultrix/bsd-comp.c
+       ultrix/if_ppp.c
+       ultrix/if_pppvar.h
+       ultrix/ppp_tty.c
+       ultrix/slcompress.c
+
+4. Add a line like this to the configuration file for your kernel:
+
+       pseudo-device ppp       2
+
+The `2' indicates the number of interfaces desired.  The configuration
+file should be in /usr/sys/conf/mips.
+
+5. Rebuild your kernel.  The simplest way to do this is with the
+`doconfig' command, like this:
+
+       /etc/doconfig -c kernel-name
+
+where `kernel-name' should be replaced by the name of your kernel
+configuration file.  Alternatively, run config, cd to the compilation
+directory, and run make.
+
+6. Copy the new /vmunix to /.  It would be a good idea to keep a copy
+of your old /vmunix in / under a different name.
+
+7. Reboot the system.
+
+
+If you have ppp-2.1.2 or earlier already installed in your kernel,
+some files will already have been modified as required.  The files
+which still need to be modified are:
+
+       /usr/sys/net/net/netisr.h
+       /usr/sys/net/net/conf_net.c
+       /usr/sys/conf/mips/files.mips
+
+The file ultrix/upgrade is a patch file to modify these files.  The
+upgrade procedure is much the same as the installation procedure
+described above, except that you use ultrix/upgrade in step 2 instead
+of ultrix/patches, and step 4 should already have been done.
+
+Earlier versions of ppp-2.x replaced if.o with a modified version.
+This version does not need the modifications, so you can use either
+the original or the modified version.
+
+
+Installing pppd and chat.
+*************************
+
+1. cd to the ppp-2.2 directory and do:
+
+       ./configure
+       make
+
+2. Become root, and do:
+
+       make install
+
+
+Credits.
+********
+
+The original port to Ultrix was done by:
+
+       Per Sundstrom 
+       DEC, Sweden
+       email: sundstrom@stkhlm.enet.dec.com
+
+and
+
+       Robert Olsson 
+       Swedish University of Agricultural Sciences
+       and also RO Komm. & Konsult
+       email: robert@robur.slu.se
+
+It was updated to ppp-2.2 by
+
+       Paul Mackerras
+       Dept. of Computer Science
+       Australian National University
+       paulus@cs.anu.edu.au
+
+(with some assistance from Per Sundstrom).
diff --git a/SETUP b/SETUP
new file mode 100644 (file)
index 0000000..fd56419
--- /dev/null
+++ b/SETUP
@@ -0,0 +1,253 @@
+               Setting up a PPP link.
+
+Setting up a PPP link between two machines involves several steps:
+
+1. Prepare both of the machines which are to be connected:
+   1A. Make and install the pppd, pppstats and chat programs.
+   1B. Install the ppp driver in the kernel.
+The README.* files give details on this step.
+
+2. Decide on the IP addresses to be used and the level of
+authentication required by each machine, and set up the /etc/ppp
+directories accordingly.
+
+3. Set up the serial link between the two machines and run pppd on
+each machine.  The two pppd's then negotiate and set up the link.
+
+Step 1 is described in the system-specific README.* files.  The
+remaining steps are described below.  Steps 1 and 2 need only be done
+once; step 3 is done each time the link is to be established.
+
+
+Choosing IP addresses.
+
+If a host is already connected to the Internet via a LAN such as
+Ethernet, then it will already have at least one IP address assigned,
+which will usually be the IP address of the LAN interface.  In such
+cases, it is usually most convenient to use that address as the local
+IP address of the PPP interface(s) on that host.  This is OK because
+the PPP interface(s) are point-to-point interfaces.
+
+If a host is not connected to the Internet, then an IP address needs
+to be assigned for it.  If PPP is to be used to link it to another
+host which is connected to the Internet, is is usually most convenient
+to assign it an address on the same subnet as the remote host.  If the
+other host is not connected to the Internet either, then the choice of
+IP addresses is quite arbitrary.
+
+Authentication.
+
+The level of authentication required depends on the situation, but
+generally hosts which are connected to the Internet via a LAN should
+be set up to (a) require the remote host to authenticate itself, and
+(b) restrict the remote host's choice of IP address, based on its
+identity.  Otherwise the possibility exists for a remote host to
+impersonate another host on the local subnet.  (However, when you are
+first installing PPP, it is probably easier to leave authentication
+disabled until you get to the point where you can successfully
+establish a link.)
+
+Setting up /etc/ppp.
+
+The /etc/ppp directory contains various files used by pppd; it should
+be created by the system administrator when installing PPP.  It would
+typically contain the following files:
+
+    chap-secrets       Secrets used for authenticating with CHAP
+    pap-secrets                Secrets used for authenticating with PAP
+    options            Options that the system administrator wants to
+                       apply whenever pppd is run
+
+Since this directory contains files of secrets used for
+authentication, it should not be in a partition which is accessible
+from other hosts (e.g., exported by NFS).
+
+The `options' file contains any options which the system administrator
+wants pppd to use whenever it is run.  If authentication is to be
+required, this should contain the `auth' and `usehostname' options.
+If the /etc/ppp/options file does not exist, or is not readable by
+pppd, it will refuse to run.
+
+Secrets for PAP (Password Authentication Protocol) authentication are
+stored in /etc/ppp/pap-secrets; secrets for CHAP (Cryptographic
+Authentication Protocol) are stored in /etc/ppp/chap-secrets.  These
+files have the same format, and store secrets both for authenticating
+other hosts, and for authenticating this host to others.  The format
+is that there are 3 or more words per line, which are:
+
+       client - name of the machine to be authenticated
+       server - name of the machine requiring the authentication
+       secret - password or CHAP secret known by both client and server
+       IP addresses - zero or more IP addresses which the client may
+               use (this field is only used on the server).
+
+For example, if a LAN-connected host called "worksun" is to require
+authentication, and a host "bsdbox" is to connect to it and
+authenticate itself using CHAP, then both machines should have a
+/etc/ppp/chap-secrets file, which should contain a line something
+like:
+
+       bsdbox  worksun "an unguessable secret" bsdbox.my.domain
+
+Setting up syslog.
+
+pppd issues messages using syslog facility daemon (or local2 if it has
+been compiled with debugging enabled); chat uses facility local2.  It
+is useful to see messages of priority notice or higher on the console.
+To see these, find the line in /etc/syslog.conf which has /dev/console
+on the right-hand side, and add `daemon.notice' on the left.  This
+line should end up something like this:
+
+*.err;kern.debug;daemon,local2,auth.notice;mail.crit   /dev/console
+
+If you want to see more messages from pppd, request messages of
+priority info or higher for facility daemon, like this:
+
+*.err;kern.debug;daemon.info;local2,auth.notice;mail.crit  /dev/console
+
+It is also useful to add a line like this:
+
+daemon,local2.debug            /etc/ppp/ppp-log
+
+If you do this, you will need to create an empty /etc/ppp/ppp-log
+file.
+
+After modifying syslog.conf, you will then need to send a HUP signal
+to syslogd (or reboot).
+
+
+Setting up a PPP link.
+
+Establishing a PPP connection between two machines basically involves
+setting up a serial link and running pppd on both ends of the link.
+How this is done depends on the nature of the serial link, which may
+be as simple as a null modem cable between two machines, or it may
+involve modems, terminal servers, telnet sessions, etc.  The `chat'
+program is very useful in setting up the serial link because it
+enables you to automate any dialog which may be required, e.g.,
+logging in to the remote machine with a username and password, issuing
+a command to start ppp on the remote machine, etc.  As an example,
+the link could be started by issuing a command like
+
+       pppd /dev/ttya 38400 connect 'chat -f /etc/ppp/chat-script'
+
+where the file /etc/ppp/chat-script contains
+
+       "" atdt2135476
+       login: myname
+       Password: "\qmypassword"
+       "$ " "\qpppd"
+
+The words in this script are alternately strings to look for and
+strings to send.  In this example, we start by sending a dial command
+to the modem; then we look for "login:", send "myname", look for
+"Password:", send "mypassword" (the "\q" prevents chat from logging it
+when you use the -v option), look for "$ " (the end of the shell
+prompt) and send "pppd" to start up ppp on the remote machine (the
+"\q" cancels the effect of the previous "\q").
+
+In another scenario, you could establish the serial link manually,
+e.g. using Kermit to dial out, log into the remote machine, and issue
+the commands to start ppp there.  Then you have to exit Kermit without
+having the modem hang up, and then start pppd locally, using a command
+like this:
+
+       pppd /dev/ttya 38400
+
+When a device is given, as in this command line, pppd will put itself
+in the background.  The two pppd's should then negotiate and bring up
+the link.  If you have edited /etc/syslog.conf as described above, you
+will see messages from pppd giving the local and remote IP addresses
+of the link when it is successfully established.
+
+If the local machine has no other connection to the Internet, you can
+ask pppd to add a default route via the remote host by adding the
+`defaultroute' option to the pppd command.
+
+N.B. When you run pppd on the remote machine, you usually want it to
+use the tty device where you logged in.  In this case, do not give a
+device name to pppd; it uses the controlling tty by default.  This may
+be a pty, e.g., if the serial link contains a telnet session, except
+under Ultrix (pppd will not run on a pty under Ultrix, due to the pty
+driver not passing ioctls to the ppp line discipline code).
+
+If the remote machine is connected to the Internet via a LAN, it is
+often useful to add the `proxyarp' option.  The `asyncmap' option is
+also useful if the serial line is not completely transparent;
+`asyncmap 200a0000' is appropriate if the serial link includes a
+telnet.
+
+Some people find it convenient to set up a `ppp' username on the
+remote machine, with no password, and a shell script which runs pppd
+as its login shell.
+
+Other random points about running pppd:
+       - If you want the local address of the PPP link to be
+         different from the (first) IP address of the host, you need
+         to put the desired address on the pppd command line with a
+         colon appended.
+       - The performance will probably be better if you reduce the
+         MRU (maximum receive unit) on both ends; 296 is a good
+         value.  To do this, use the option `mru 296'.
+       - You DO NOT need to use ifconfig to configure the addresses
+         of the ppp interface.  Pppd does all the necessary work
+         (assigning addresses, marking the interface up, etc.).
+
+
+Terminating the PPP link.
+
+When you wish terminate the PPP link, you should send a TERM or INTR
+signal to one of the pppd's, e.g., with a command like:
+
+       kill `cat /etc/ppp/ppp0.pid`
+
+on SunOS or Ultrix, or
+
+       kill `cat /var/run/ppp0.pid`
+
+on {386,Net,Free}BSD.
+
+That pppd will inform the other pppd to terminate, and they will both
+clean up and exit.
+
+If pppd is attached to a hardware serial port connected to a modem,
+then it should get a HUP signal when the modem hangs up, which will
+cause it to clean up and exit.  Whether it does or not depends on the
+driver, and on Suns, on the setting of the `tty soft carrier' flag,
+which is manipulated by the /usr/etc/ttysoftcar program (see
+ttysoftcar(8)).
+
+
+Debugging.
+
+If the link comes up successfully, you should see messages logged to
+the console like "Local IP address:  xx.xx.xx.xx" and "Remote IP
+address: yy.yy.yy.yy" (assuming you've edited /etc/syslog.conf as
+described above).  If the link doesn't come up, it could be due to any
+of several factors:
+
+- Perhaps the serial connection is not being set up successfully, or
+you haven't succeeded in getting ppp running on the remote machine.
+You can use the -v flag to chat; it will then log the characters it
+sends and receives (using syslog with facility `local2' and level
+`debug').
+
+- Perhaps the PPP negotiation with the peer is failing.  You can use
+the `debug' option to pppd; it will then log the contents of all
+control packets sent and received (using syslog with facility `daemon'
+and level `debug').
+
+In some cases, the link will come up successfully, but you may then be
+unable to use network-based applications over the link.  This usually
+indicates an IP-address assignment problem or a routing problem.  Or
+you may be able to communicate with the peer machine but not any
+machine beyond that.  Typically this is a routing problem.  For the
+common case where the local machine is only connected to the Internet
+via the peer, this problem can usually be solved if you:
+       - assign the local machine an IP address on the same subnet
+         as the remote machine
+       - use the `defaultroute' option on the local pppd
+       - use the `proxyarp' option on the remote pppd.
+
+For solving routing and network problems, the ifconfig, netstat -i,
+netstat -r, ping and traceroute commands are useful.
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..14110df
--- /dev/null
+++ b/TODO
@@ -0,0 +1,7 @@
+* Things to do *
+
+1. Support dial-on-demand in PPP
+
+2. Implement link quality monitoring
+
+3. Implement other network control protocols
diff --git a/aix4/load b/aix4/load
new file mode 100644 (file)
index 0000000..af6b750
--- /dev/null
+++ b/aix4/load
@@ -0,0 +1,4 @@
+
+strload -m ppp_async
+strload -m ppp_if
+strload -m ppp_comp
diff --git a/aix4/ppp_async.exp b/aix4/ppp_async.exp
new file mode 100644 (file)
index 0000000..a1992d2
--- /dev/null
@@ -0,0 +1 @@
+ppp_async_load
diff --git a/aix4/ppp_if.exp b/aix4/ppp_if.exp
new file mode 100644 (file)
index 0000000..7f2de25
--- /dev/null
@@ -0,0 +1 @@
+ppp_load
diff --git a/freebsd-2.0/Makefile.top b/freebsd-2.0/Makefile.top
new file mode 100644 (file)
index 0000000..4f1ea08
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# ppp top level makefile for *bsd systems
+#
+
+BINDIR?= /usr/sbin
+
+SUBDIR=        chat pppd pppstats
+MAKE+=  BINDIR=$(BINDIR)
+
+kernel:
+       @sh -e freebsd-2.0/kinstall.sh
+
+.include <bsd.subdir.mk>
diff --git a/freebsd-2.0/files.patch b/freebsd-2.0/files.patch
new file mode 100644 (file)
index 0000000..56fb2b7
--- /dev/null
@@ -0,0 +1,13 @@
+*** files.orig Wed Dec 14 13:11:12 1994
+--- files      Wed Dec 14 13:13:56 1994
+***************
+*** 139,144 ****
+--- 139,146 ----
+  net/if_ethersubr.c   optional ether
+  net/if_loop.c                optional loop
+  net/if_ppp.c         optional ppp
++ net/ppp_tty.c                optional ppp
++ net/bsd-comp.c               optional ppp
+  net/if_sl.c          optional sl
+  net/pppcompress.c    optional ppp
+  net/radix.c          standard
diff --git a/linux/Makefile.top b/linux/Makefile.top
new file mode 100644 (file)
index 0000000..00ca83d
--- /dev/null
@@ -0,0 +1,13 @@
+# PPP top-level Makefile for Linux.
+
+all:
+       cd chat; $(MAKE) all
+       cd pppd; $(MAKE) all
+
+install:
+       cd chat; $(MAKE) install
+       cd pppd; $(MAKE) install
+
+clean:
+       cd chat; $(MAKE) clean
+       cd pppd; $(MAKE) clean
diff --git a/ppp.texi b/ppp.texi
new file mode 100644 (file)
index 0000000..02bce41
--- /dev/null
+++ b/ppp.texi
@@ -0,0 +1,214 @@
+\input texinfo @c -*-texinfo-*-
+@setfilename ppp.info
+@settitle PPP
+
+@iftex
+@finalout
+@end iftex
+
+@ifinfo
+@format
+START-INFO-DIR-ENTRY
+* PPP: (ppp).                   Point-to-Point Protocol.
+END-INFO-DIR-ENTRY
+@end format
+
+@titlepage
+@title PPP-2.x
+@author by Paul Mackerras
+@end titlepage
+
+@node Top, Introduction, (dir), (dir)
+
+@ifinfo
+This file documents the ppp-2.x package for setting up network links
+over serial lines using the Point-to-Point Protocol.
+
+@end ifinfo
+
+@menu
+* Introduction::                What PPP is and what you can use it for.
+* Installation::                How to compile and install the software.
+* Configuration::               How to set up your system for
+establishing a link to another system.
+* Security::                    Potential dangers and how to avoid them.
+* Compression::                 
+@end menu
+
+@node Introduction, Installation, Top, Top
+@chapter Introduction
+
+The Point-to-Point Protocol (PPP) is the protocol of choice for
+establishing network links over serial lines.  This package (ppp-2.x)
+provides an implementation of PPP which supports the Internet Protocols
+(TCP/IP, UDP/IP, etc.) and which runs on a range of Unix
+workstations.
+
+As an example, an otherwise isolated system could connect to another
+system via a modem using PPP.  Suppose that the second system was
+connected to the Internet.  When the PPP link is established, the first
+system is then also connected to the Internet.  It can establish
+connections with any other Internet host.  Users can then use
+a wide range of network-based applications on the first system, such as
+telnet, ftp, rlogin, email, Mosaic, sup, and X clients and servers.
+
+Features of PPP include:
+@itemize
+@item
+Multi-protocol support.  The PPP packet encapsulation includes a
+protocol field, allowing packets from many different protocols to be
+multiplexed across a single link.
+@item
+Negotiation of link characteristics.  During link establishment, the two
+systems negotiate about the link configuration parameters, such as the
+IP addresses of each end of the link.
+@item
+Authentication.  Optionally, each system can be configured to require the
+other system to authenticate itself.  In this way, access can be
+restricted to authorized systems.
+@item
+Transparency.  On asynchronous serial lines, PPP can be configured to
+transmit certain characters as a two-character escape sequence.
+@item
+Compression.  PPP includes support for various kinds of compression to
+be applied to the packets before they are transmitted.
+@end itemize
+
+This software consists of two parts:
+
+@itemize @bullet
+
+@item
+Kernel code, which establishes a network interface and passes
+packets between the serial port, the kernel networking code and the
+PPP daemon (pppd).  This code is implemented using STREAMS modules on
+SunOS 4.x, AIX 4.1 and OSF/1, and as a line discipline under Ultrix,
+NextStep, NetBSD, FreeBSD, and Linux.
+
+@item
+The PPP daemon (@code{pppd}), which negotiates with the peer to establish
+the link and sets up the ppp network interface.  Pppd includes support
+for authentication, so you can control which other systems may make a
+PPP connection and what IP addresses they may use.
+@end itemize
+
+@menu
+* PPP Concepts::                
+@end menu
+
+@node PPP Concepts,  , Introduction, Introduction
+@section PPP Concepts
+
+Establishing a PPP link involves communication between two systems.  The
+two systems are called ``peers''.  When we are talking from the point of
+view of one of the systems, the other is often referred to as ``the
+peer''.  Although we may sometimes refer to one system as a ``client''
+and the other as a ``server'', this distinction is not made in the PPP
+protocols.
+
+PPP requires the use of a communications medium which transmits 8 bits
+per character.  Typically this is a serial line, perhaps including
+modems and telephone lines, but other media can be used (even a telnet
+session).  The medium must be full duplex---capable of transmitting
+characters independently in both directions.  Note that PPP cannot work
+over a serial link which transmits only 7 bits per character.
+
+PPP has a mechanism to avoid sending certain characters if it is known
+that the medium interprets them specially.  For example, the DC1 and DC3
+ASCII characters (control-Q and control-S) may be trapped by a modem if
+it is set for ``software'' flow control.  PPP can send these characters
+as a two-character ``escape'' sequence.  The set of characters which are
+to be transmitted as an escape sequence is represented in an ``async
+control character map'' (ACCM).  The ``async'' part refers to the fact
+that this facility is used for asynchronous serial lines.  For
+synchronous serial connections, the HDLC bit-stuffing procedure is used
+instead.
+
+During the lifetime of a PPP link, it proceeds through several phases:
+
+@enumerate
+@item
+Communications establishment.  In this phase, the underlying
+communications medium is prepared for use.  This may involve sending
+commands to a modem to cause it to dial the remote system.  When the
+remote system answers, there may be a dialog involving a username and
+password.  Or, in the case of two systems connected directly by a cable,
+there may be nothing to do.
+
+@item
+Link Control Protocol (LCP) negotiation.  In this phase, the peers send
+LCP packets to each other to negotiate various parameters of the
+link, such as the ACCM to be used in each direction, whether
+authentication is required, and whether or not to use various forms of
+compression.  When the peers reach agreement on these parameters, LCP is
+said to be ``up''.
+
+@item
+Authentication.  If one (or both) of the peers requires the other
+peer to authenticate itself, that occurs next.  If one of the peers
+cannot successfully authenticate itself, the other peer terminates the
+link.
+
+@item
+Network Control Protocol (NP) negotiation.  PPP can potentially support
+several different network protocols, although IP is the only network
+protocol (NP) supported by the ppp-2.x package.  Each NP has an
+associated Network Control Protocol defined for it, which is used to
+negotiate the specific parameters which affect that NP.  For example,
+the IP Control Protocol (IPCP) is used to negotiate the IP addresses for
+each end of the link, and whether the TCP header compression method
+described by Van Jacobsen in RFC 1144 is to be used.
+
+@item
+Network communication.  When each NCP has successfully negotiated the
+parameters for its NP, that NCP is said to be ``up''.  At that point,
+the PPP link is made available for data traffic from that NP.  For
+example, when IPCP comes up, the PPP link is then available for carrying
+IP packets (which of course includes packets from those protocols which
+sit above IP, such as TCP, UDP, etc.)
+
+@item
+Termination.  When the link is no longer required, it is terminated.
+Usually this involves an exchange of LCP packets so that one peer can
+notify the other that it is shutting down the link, enabling both peers
+to shut down in an orderly manner.  But of course there are occasions
+when the link terminates because the underlying communications medium is
+interrupted, for example when the modem loses carrier and hangs up.
+
+@end enumerate
+
+PPP is defined in several RFC (Request For Comments) documents, in
+particular RFCs 1661, 1662, and 1334.  IPCP is defined in RFC 1332.
+Other RFCs describe the control protocols for other network protocols
+(e.g., DECnet, OSI, Appletalk).
+
+@node Installation, Configuration, Introduction, Top
+@chapter Installation
+
+Because ppp-2.x includes code which must be incorporated into the
+kernel, its installation process is necessarily quite heavily
+system-dependent.  In addition, you will require super-user privileges
+(root access) to install the code.
+
+Some systems provide a ``modload'' facility, which
+allows you to load new code into a running kernel without relinking the
+kernel or rebooting.  Under SunOS 4.x, AIX 4.1, OSF/1 and NextStep, this
+is the recommended (or only) way to install the kernel portion of the
+ppp-2.x package.  
+
+Under the remaining supported operating systems
+(NetBSD, FreeBSD, Ultrix, Linux), it is necessary to go through the
+process of creating a new kernel image and reboot.  (Note that NetBSD
+and FreeBSD have a modload facility, but ppp-2.x is currently not
+configured to take advantage of it.)
+
+@node Configuration, Security, Installation, Top
+@chapter Configuration
+
+@node Security, Compression, Configuration, Top
+@chapter Security
+
+@node Compression,  , Security, Top
+@chapter Compression
+
+@bye
diff --git a/svr4/ppp.conf b/svr4/ppp.conf
new file mode 100644 (file)
index 0000000..e443a7a
--- /dev/null
@@ -0,0 +1 @@
+name="ppp" parent="pseudo" instance=0;
diff --git a/ultrix/Makefile.top b/ultrix/Makefile.top
new file mode 100644 (file)
index 0000000..11954bf
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# ppp top level makefile
+#
+
+BINDIR = /usr/local/etc
+MANDIR = /usr/local/man
+
+all:
+       cd chat; $(MAKE) all
+       cd pppd; $(MAKE) all
+       cd pppstats; $(MAKE) all
+
+install:
+       cd chat; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
+       cd pppd; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
+       cd pppstats; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) install
+
+clean:
+       rm -f *~
+       cd chat; $(MAKE) clean
+       cd pppd; $(MAKE) clean
+       cd pppstats; $(MAKE) clean
+
diff --git a/ultrix/patches b/ultrix/patches
new file mode 100644 (file)
index 0000000..53e5ddf
--- /dev/null
@@ -0,0 +1,150 @@
+*** /usr/sys/h/ioctl.h.orig    Fri Dec  9 10:05:18 1994
+--- /usr/sys/h/ioctl.h Fri Dec  9 10:06:06 1994
+***************
+*** 405,410 ****
+--- 405,411 ----
+  #define SLPDISC              0x07            /* BSD Serial Line IP           */
+  #define PCMDISC              0x08            /* Peripheral Control Module
+                                          for dial and button boxex */
++ #define PPPDISC              0x09            /* PPP Point-to-Point Protocol  */
+                                       /* Line disc #'s 16-23 are 
+                                          reserved for local extension.*/
+  
+*** /usr/sys/net/net/if.h.orig Wed Aug  4 01:57:00 1993
+--- /usr/sys/net/net/if.h      Fri Dec  9 09:29:11 1994
+***************
+*** 231,236 ****
+--- 231,237 ----
+  #define      IFT_XETHER      0x1a            /* obsolete 3MB experimental ethernet */
+  #define      IFT_NSIP        0x1b            /* XNS over IP */
+  #define      IFT_SLIP        0x1c            /* IP over generic TTY */
++ #define      IFT_PPP         0x1d            /* PPP over generic TTY */
+  
+  /*
+   * Output queues (ifp->if_snd) and internetwork datagram level (pup level 1)
+*** /usr/sys/net/net/netisr.h.orig     Fri Dec  9 09:53:17 1994
+--- /usr/sys/net/net/netisr.h  Fri Dec  9 09:54:14 1994
+***************
+*** 77,82 ****
+--- 77,83 ----
+  #define NETISR_LAT   14              /* same as AF_LAT */
+  #define NETISR_BSC   15              /* same as AF_BSC */
+  #define NETISR_DLO      19              /* same as AF_OSI */
++ #define NETISR_PPP   26              /* Point-to-Point Protocol */
+  
+  #define      schednetisr(anisr)      { set_bit_atomic(anisr,&netisr); setsoftnet(); }
+  
+*** /usr/sys/net/net/conf_net.c.orig   Fri Dec  9 13:29:49 1994
+--- /usr/sys/net/net/conf_net.c        Fri Dec  9 13:32:50 1994
+***************
+*** 84,89 ****
+--- 84,90 ----
+  #ifdef vax
+  #include "bsc.h"
+  #endif vax
++ #include "ppp.h"
+  
+  
+  #if ((NETHER==0 && NFDDI==0) || NINET==0)
+***************
+*** 251,257 ****
+  };
+  
+  
+! extern int rawintr(), ipintr(), nsintr(), dnetintr(), dlointr(), dliintr(), latintr(), bscintr();
+  #ifdef       __mips
+  extern int scsiisr();
+  #endif
+--- 252,258 ----
+  };
+  
+  
+! extern int rawintr(), ipintr(), nsintr(), dnetintr(), dlointr(), dliintr(), latintr(), bscintr(), pppintr();
+  #ifdef       __mips
+  extern int scsiisr();
+  #endif
+***************
+*** 289,294 ****
+--- 290,298 ----
+          {NETISR_SCSI,scsiisr},
+  #endif /* NSCSI > 0 || NSII > 0 || NASC > 0 */
+  #endif       /* __mips */
++ #if NPPP > 0
++      {NETISR_PPP,pppintr},
++ #endif /* NPPP */
+  
+       {-1     ,0}
+  };
+*** /usr/sys/data/pseudo_data.c.orig   Sat Sep 19 06:20:31 1992
+--- /usr/sys/data/pseudo_data.c        Fri Dec  9 09:32:23 1994
+***************
+*** 25,30 ****
+--- 25,35 ----
+  
+  #endif /* NSL > 0 */
+  
++ #include "ppp.h"
++ #if NPPP > 0
++        pppattach();
++ #endif
++ 
+  return;
+  }
+  
+*** /usr/sys/data/tty_conf_data.c.orig Sat Sep 19 06:19:21 1992
+--- /usr/sys/data/tty_conf_data.c      Fri Dec  9 09:32:38 1994
+***************
+*** 83,88 ****
+--- 83,94 ----
+  int   slopen(), slclose(), slinput(), sltioctl(), slstart();
+  #endif
+  
++ #include "ppp.h"
++ #if NPPP > 0
++ int   pppopen(), pppclose(), pppread(), pppwrite(), pppinput();
++ int   ppptioctl(), pppstart();
++ #endif
++ 
+  #ifdef BINARY
+  
+  extern       int     nldisp;
+***************
+*** 141,146 ****
+--- 147,161 ----
+       nodev, nodev, nodev, nodev, nodev,
+       nodev, nodev, nodev, nodev, nodev,
+  #endif
++ 
++ #if NPPP > 0   
++        pppopen, pppclose, pppread, pppwrite, ppptioctl,
++        pppinput, nodev, nulldev, pppstart, nulldev,   /* 9 - PPPDISC */
++ #else
++        nodev, nodev, nodev, nodev, nodev,
++        nodev, nodev, nodev, nodev, nodev,
++ #endif
++ 
+  
+  };
+  
+*** /usr/sys/conf/mips/files.mips.orig Sat Sep 11 06:09:28 1993
+--- /usr/sys/conf/mips/files.mips      Fri Dec  9 09:32:01 1994
+***************
+*** 114,120 ****
+  io/netif/if_ln_copy.s                optional ln Binary 
+  io/netif/if_ne.c             optional ne device-driver Binary
+  io/netif/if_sl.c             optional sl device-driver Binary Unsupported
+! io/netif/slcompress.c                optional sl device-driver Binary Unsupported
+  io/netif/if_qe.c             optional qe device-driver Binary
+  io/netif/if_uba.c            optional inet device-driver Binary
+  io/netif/if_ni.c             optional bvpni device-driver Binary
+--- 114,123 ----
+  io/netif/if_ln_copy.s                optional ln Binary 
+  io/netif/if_ne.c             optional ne device-driver Binary
+  io/netif/if_sl.c             optional sl device-driver Binary Unsupported
+! io/netif/if_ppp.c            optional ppp device-driver Notbinary
+! io/netif/ppp_tty.c           optional ppp device-driver Notbinary
+! io/netif/bsd-comp.c          optional ppp device-driver Notbinary
+! io/netif/slcompress.c                optional sl or ppp device-driver Notbinary
+  io/netif/if_qe.c             optional qe device-driver Binary
+  io/netif/if_uba.c            optional inet device-driver Binary
+  io/netif/if_ni.c             optional bvpni device-driver Binary
diff --git a/ultrix/upgrade b/ultrix/upgrade
new file mode 100644 (file)
index 0000000..4512a23
--- /dev/null
@@ -0,0 +1,66 @@
+*** /usr/sys/net/net/netisr.h.orig     Fri Dec  9 09:53:17 1994
+--- /usr/sys/net/net/netisr.h  Fri Dec  9 09:54:14 1994
+***************
+*** 77,82 ****
+--- 77,83 ----
+  #define NETISR_LAT   14              /* same as AF_LAT */
+  #define NETISR_BSC   15              /* same as AF_BSC */
+  #define NETISR_DLO      19              /* same as AF_OSI */
++ #define NETISR_PPP   26              /* Point-to-Point Protocol */
+  
+  #define      schednetisr(anisr)      { set_bit_atomic(anisr,&netisr); setsoftnet(); }
+  
+*** /usr/sys/net/net/conf_net.c.orig   Fri Dec  9 13:29:49 1994
+--- /usr/sys/net/net/conf_net.c        Fri Dec  9 13:32:50 1994
+***************
+*** 84,89 ****
+--- 84,90 ----
+  #ifdef vax
+  #include "bsc.h"
+  #endif vax
++ #include "ppp.h"
+  
+  
+  #if ((NETHER==0 && NFDDI==0) || NINET==0)
+***************
+*** 251,257 ****
+  };
+  
+  
+! extern int rawintr(), ipintr(), nsintr(), dnetintr(), dlointr(), dliintr(), latintr(), bscintr();
+  #ifdef       __mips
+  extern int scsiisr();
+  #endif
+--- 252,258 ----
+  };
+  
+  
+! extern int rawintr(), ipintr(), nsintr(), dnetintr(), dlointr(), dliintr(), latintr(), bscintr(), pppintr();
+  #ifdef       __mips
+  extern int scsiisr();
+  #endif
+***************
+*** 289,294 ****
+--- 290,298 ----
+          {NETISR_SCSI,scsiisr},
+  #endif /* NSCSI > 0 || NSII > 0 || NASC > 0 */
+  #endif       /* __mips */
++ #if NPPP > 0
++      {NETISR_PPP,pppintr},
++ #endif /* NPPP */
+  
+       {-1     ,0}
+  };
+*** /usr/sys/conf/mips/files.mips.orig Sat Sep 11 06:09:28 1993
+--- /usr/sys/conf/mips/files.mips      Fri Dec  9 09:32:01 1994
+***************
+*** 115,120 ****
+--- 115,122 ----
+  io/netif/if_ne.c             optional ne device-driver Binary
+  io/netif/if_sl.c             optional sl device-driver Binary Unsupported
+  io/netif/if_ppp.c            optional ppp device-driver Notbinary
++ io/netif/ppp_tty.c           optional ppp device-driver Notbinary
++ io/netif/bsd-comp.c          optional ppp device-driver Notbinary
+  io/netif/slcompress.c                optional sl or ppp device-driver Notbinary
+  io/netif/if_qe.c             optional qe device-driver Binary
+  io/netif/if_uba.c            optional inet device-driver Binary