INTRODUCTION

PPP is a protocol worth trying on non-transparent lines, where SLIP
doesn't work. But it is not faster than SLIP, and if you have been
successfully using SLiRP before (with SLIP protocol), then you won't
need PPP. But if your line has for example XON/XOFF flow control
or eats other control characters, then you should try PPP.


SUPPORTED PLATFORMS

I have been able to test PPP for SLiRP on the following platforms:

486DX4-100 	running	Linux 1.1.59
DECstation 3100		ULTRIX 4.2
Sun SPARCstation 2	SunOS 5.3
Solbourne Series6/702	SunOS OS/MP 4.1B (=SunOS 4.1.2)
HP 9000/735		HP-UX 9.01
Axil 320		SunOS 5.4

I can't guarantee anything about other environments, and in
fact I don't even guarantee that it would work on these
platforms. The chances are better though. 

On the client side I have used Trumpet Winsock 2.0b and Linux's
ppp (in fact the same ppp-2.1.2b). Both work well, and I believe
that any client written according to the standards will.


CREDITS & COPYRIGHTS

PPP for SLiRP on a free PPP package ppp-2.1.2b maintained by
Paul Mackerras. The package lists thanks to Brad Parker, Greg Christy,
Drew D. Perkins, Rick Adams and Chris Torek. The files taken from
this package are copyrighted as follows:

auth.c:  	Copyright (c) 1993 The Australian National University.
auth.c:  	Copyright (c) 1989 Carnegie Mellon University.
chap.c:  	Copyright (c) 1991 Gregory M. Christy.
chap.h:  	Copyright (c) 1991 Gregory M. Christy
fsm.c:   	Copyright (c) 1989 Carnegie Mellon University.
fsm.h:   	Copyright (c) 1989 Carnegie Mellon University.
ipcp.c:  	Copyright (c) 1989 Carnegie Mellon University.
ipcp.h:  	Copyright (c) 1989 Carnegie Mellon University.
lcp.c:   	Copyright (c) 1989 Carnegie Mellon University.
lcp.h:   	Copyright (c) 1989 Carnegie Mellon University.
magic.c: 	Copyright (c) 1989 Carnegie Mellon University.
magic.h: 	Copyright (c) 1989 Carnegie Mellon University.
md5.c:   	Copyright (C) 1990, RSA Data Security, Inc. All rights reserved.  **
md5.h:   	Copyright (C) 1990, RSA Data Security, Inc. All rights reserved.  **
options.c:  	Copyright (c) 1989 Carnegie Mellon University.
ppp.h:   	Copyright (c) 1989 Carnegie Mellon University.
pppd.h:  	Copyright (c) 1989 Carnegie Mellon University.
pppdfncs.c:  	Copyright (c) 1989 Carnegie Mellon University. 
upap.c:  	Copyright (c) 1989 Carnegie Mellon University.
upap.h:		Copyright (c) 1989 Carnegie Mellon University.

All original copyright notices are retained in the original files 
and apply to those files.  

SLiRP, of course, is Copyright (c) 1995 Danny Gasparovski.
Read file COPYRIGHT for related terms and conditions.

Files ppp.c and slirppp.h are Copyright (c) 1995 Juha Pirkola.

conditions.
USAGE

First I want to remind you that in case you want to kill slirp,
you must type slowly at least five zeros. This hasn't changed.

The PPP protocol is chosen with command line option -P. Every
option after -P goes to the ppp package's command line parser,
and therefore you should place all the ordinary slirp options
(like baudrate, port redirection etc) before it, and all the
PPP options after it.

The valid PPP options are:

asyncmap <map>	Asyncmap describes which control characters can't
		be successfully received over the serial line. Slirp
		tells the peer to send these characters escaped.
		The argument is a 32 bit hex number with each bit
		representing a character to escape. Bit 0 (00000001)
		represents the character 0x00, bit 31 (80000000) re-
		presents 0x1f (control-_ ). If no asyncmap is given,
		the peer will escape all control characters (as if
		given asyncmap ffffffff).
		 

escape xx,yy,..	Specifies that certain characters should be escaped
		on transmission. In addition to these, all control
		characters that the peer specifies with its async-
		map, will be escaped. The argument is a comma sepa-
		rated list of hex numbers. Characters 0x20 - 0x3f,
		0x5d and 0x5e cannot be escaped. 

mru <n>		Set MRU (Maximum Receive Unit) value to <n> for 
		negotiation. Peer is asked to send packets of no
		more than <n> bytes. The default is 1500, but a
		smaller value (eg. 552) is recommended.

mtu <n>		Set MTU (Maximum Transmit Unit) value to <n>. 
		We will send packets of of no more than <n> bytes.
		If the peer requests a smaller value during nego-
		tiations, we adjust our MTU to this smaller value.
		If the normal slirp option is -m <n> is specified
		as well, mtu <n> will override it.

debug		Debug information will be written to file ppplog.
		This is independent of the normal slirp option -d.


silent		Wait silently for the peer to initiate connection.
		By default we would immediately start sending 
		packets to the peer.

ipcp-accept-remote 
		Accept the peer's idea of it's own IP address. By 
		default we would ask the peer to set it's IP address 
		to 10.0.2.15 (slirp's default remote address)

PPP options are read from ~/.slirprc, just as all other slirp options.

Example:

	slirp -b 14000 -P "asyncmap a0000" "escape 11,13"

This escapes XON (^Q) and XOFF (^S) on both directions.



IF IT DOESN'T WORK

Well, I'm sorry. But you could do the following: 

	slirp  -P debugppp "asyncmap ffffffff" "escape 0,11,13,1D,ff"

Then start your client and any application (telnet, Netscape, what
ever that tries to send IP packets). Then shut down the application,
shut down the client and type five zeros to kill slirp. Take a look
at the ppplog file for clues.

You could check my page at

	http://www.helsinki.fi/~pirkola/slirppp.html,

because I might put some useful information there. 


I wish you luck,

	Juha Pirkola (Juha.Pirkola@helsinki.fi)

[Note: if you have a problem with PPP, please don't bother Juha,  Read some
ppp newsgroups, and if you must, send e-mail to me at
danjo@blitzen.canberra.edu.au -Dan]
